@dainprotocol/service-sdk 2.0.53 → 2.0.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +78 -0
- package/dist/__tests__/api-sdk.test.d.ts +1 -0
- package/dist/__tests__/api-sdk.test.js +102 -0
- package/dist/__tests__/api-sdk.test.js.map +1 -0
- package/dist/__tests__/auth.test.d.ts +1 -0
- package/dist/__tests__/auth.test.js +110 -0
- package/dist/__tests__/auth.test.js.map +1 -0
- package/dist/__tests__/citations-plugin.test.d.ts +1 -0
- package/dist/__tests__/citations-plugin.test.js +491 -0
- package/dist/__tests__/citations-plugin.test.js.map +1 -0
- package/dist/__tests__/context-behavior.test.d.ts +1 -0
- package/dist/__tests__/context-behavior.test.js +290 -0
- package/dist/__tests__/context-behavior.test.js.map +1 -0
- package/dist/__tests__/convertToVercelTool.test.d.ts +1 -0
- package/dist/__tests__/convertToVercelTool.test.js +527 -0
- package/dist/__tests__/convertToVercelTool.test.js.map +1 -0
- package/dist/__tests__/core.test.d.ts +1 -0
- package/dist/__tests__/core.test.js +154 -0
- package/dist/__tests__/core.test.js.map +1 -0
- package/dist/__tests__/crypto-plugin.test.d.ts +1 -0
- package/dist/__tests__/crypto-plugin.test.js +694 -0
- package/dist/__tests__/crypto-plugin.test.js.map +1 -0
- package/dist/__tests__/humanActions.test.d.ts +1 -0
- package/dist/__tests__/humanActions.test.js +221 -0
- package/dist/__tests__/humanActions.test.js.map +1 -0
- package/dist/__tests__/integration.test.d.ts +1 -0
- package/dist/__tests__/integration.test.js +1573 -0
- package/dist/__tests__/integration.test.js.map +1 -0
- package/dist/__tests__/mealMeSchemas.test.d.ts +576 -0
- package/dist/__tests__/mealMeSchemas.test.js +627 -0
- package/dist/__tests__/mealMeSchemas.test.js.map +1 -0
- package/dist/__tests__/oauth-context-simple.test.d.ts +1 -0
- package/dist/__tests__/oauth-context-simple.test.js +90 -0
- package/dist/__tests__/oauth-context-simple.test.js.map +1 -0
- package/dist/__tests__/oauth-context.test.d.ts +1 -0
- package/dist/__tests__/oauth-context.test.js +282 -0
- package/dist/__tests__/oauth-context.test.js.map +1 -0
- package/dist/__tests__/oauth.test.d.ts +1 -0
- package/dist/__tests__/oauth.test.js +378 -0
- package/dist/__tests__/oauth.test.js.map +1 -0
- package/dist/__tests__/oauth2-client-context.test.d.ts +1 -0
- package/dist/__tests__/oauth2-client-context.test.js +165 -0
- package/dist/__tests__/oauth2-client-context.test.js.map +1 -0
- package/dist/__tests__/oauth2-client-integration.test.d.ts +1 -0
- package/dist/__tests__/oauth2-client-integration.test.js +182 -0
- package/dist/__tests__/oauth2-client-integration.test.js.map +1 -0
- package/dist/__tests__/oauth2-client-simple.test.d.ts +1 -0
- package/dist/__tests__/oauth2-client-simple.test.js +144 -0
- package/dist/__tests__/oauth2-client-simple.test.js.map +1 -0
- package/dist/__tests__/oauth2-context.test.d.ts +1 -0
- package/dist/__tests__/oauth2-context.test.js +201 -0
- package/dist/__tests__/oauth2-context.test.js.map +1 -0
- package/dist/__tests__/oauth2-datasource.test.d.ts +1 -0
- package/dist/__tests__/oauth2-datasource.test.js +251 -0
- package/dist/__tests__/oauth2-datasource.test.js.map +1 -0
- package/dist/__tests__/plugin.test.d.ts +1 -0
- package/dist/__tests__/plugin.test.js +900 -0
- package/dist/__tests__/plugin.test.js.map +1 -0
- package/dist/__tests__/processes.test.d.ts +1 -0
- package/dist/__tests__/processes.test.js +239 -0
- package/dist/__tests__/processes.test.js.map +1 -0
- package/dist/__tests__/streaming.test.d.ts +1 -0
- package/dist/__tests__/streaming.test.js +592 -0
- package/dist/__tests__/streaming.test.js.map +1 -0
- package/dist/__tests__/testEnums.d.ts +1 -0
- package/dist/__tests__/testEnums.js +73 -0
- package/dist/__tests__/testEnums.js.map +1 -0
- package/dist/__tests__/testOptionals.test.d.ts +1 -0
- package/dist/__tests__/testOptionals.test.js +83 -0
- package/dist/__tests__/testOptionals.test.js.map +1 -0
- package/dist/__tests__/types.test.d.ts +1 -0
- package/dist/__tests__/types.test.js +98 -0
- package/dist/__tests__/types.test.js.map +1 -0
- package/dist/client/client.d.ts +18 -5
- package/dist/client/client.js +25 -4
- package/dist/client/client.js.map +1 -1
- package/dist/client/types.d.ts +38 -0
- package/dist/client/types.js +35 -1
- package/dist/client/types.js.map +1 -1
- package/dist/service/actionable-tools.d.ts +135 -0
- package/dist/service/actionable-tools.js +144 -0
- package/dist/service/actionable-tools.js.map +1 -0
- package/dist/service/direct-auth-setup.d.ts +154 -0
- package/dist/service/direct-auth-setup.js +308 -0
- package/dist/service/direct-auth-setup.js.map +1 -0
- package/dist/service/index.d.ts +3 -1
- package/dist/service/index.js +10 -1
- package/dist/service/index.js.map +1 -1
- package/dist/service/nodeService.js +2 -0
- package/dist/service/nodeService.js.map +1 -1
- package/dist/service/oauth2.d.ts +40 -1
- package/dist/service/oauth2.js +46 -0
- package/dist/service/oauth2.js.map +1 -1
- package/dist/service/oauth2Manager.d.ts +31 -4
- package/dist/service/oauth2Manager.js +119 -8
- package/dist/service/oauth2Manager.js.map +1 -1
- package/dist/service/server.js +93 -19
- package/dist/service/server.js.map +1 -1
- package/dist/service/service.js +6 -1
- package/dist/service/service.js.map +1 -1
- package/dist/service/types.d.ts +59 -0
- package/dist/service/zod-json-converter.d.ts +14 -0
- package/dist/service/zod-json-converter.js +203 -0
- package/dist/service/zod-json-converter.js.map +1 -0
- package/package.json +9 -10
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("../service/core");
|
|
4
|
+
describe("OAuth2Client in ServiceContext type definitions", () => {
|
|
5
|
+
it("should allow OAuth2Client in extraData parameter", () => {
|
|
6
|
+
const mockOAuth2Client = {
|
|
7
|
+
getAccessToken: jest.fn().mockResolvedValue("test-token"),
|
|
8
|
+
getValidToken: jest.fn().mockResolvedValue({ access_token: "test-token" }),
|
|
9
|
+
getTokensByUserId: jest.fn().mockResolvedValue([]),
|
|
10
|
+
getTokensByEmail: jest.fn().mockResolvedValue([]),
|
|
11
|
+
deleteToken: jest.fn().mockResolvedValue(true)
|
|
12
|
+
};
|
|
13
|
+
const testContext = (0, core_1.createContext)({
|
|
14
|
+
id: "test-context",
|
|
15
|
+
name: "Test Context",
|
|
16
|
+
description: "Context for testing OAuth2Client",
|
|
17
|
+
getContextData: async (agentInfo, extraData) => {
|
|
18
|
+
// This should compile without TypeScript errors
|
|
19
|
+
const oauth2Client = extraData?.oauth2Client;
|
|
20
|
+
// Test that we can access OAuth2Client methods
|
|
21
|
+
if (oauth2Client) {
|
|
22
|
+
expect(typeof oauth2Client.getAccessToken).toBe("function");
|
|
23
|
+
expect(typeof oauth2Client.getValidToken).toBe("function");
|
|
24
|
+
expect(typeof oauth2Client.getTokensByEmail).toBe("function");
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
hasOAuth2Client: !!oauth2Client,
|
|
28
|
+
canCallMethods: !!(oauth2Client?.getAccessToken &&
|
|
29
|
+
oauth2Client?.getValidToken)
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
// Call the context with mock OAuth2Client
|
|
34
|
+
return testContext.getContextData({ agentId: "test", address: "test", id: "test" }, {
|
|
35
|
+
oauth2Client: mockOAuth2Client,
|
|
36
|
+
plugins: {}
|
|
37
|
+
}).then(result => {
|
|
38
|
+
expect(result.hasOAuth2Client).toBe(true);
|
|
39
|
+
expect(result.canCallMethods).toBe(true);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
it("should work without OAuth2Client in extraData", () => {
|
|
43
|
+
const testContext = (0, core_1.createContext)({
|
|
44
|
+
id: "test-context-no-oauth",
|
|
45
|
+
name: "Test Context Without OAuth",
|
|
46
|
+
description: "Context without OAuth2Client",
|
|
47
|
+
getContextData: async (agentInfo, extraData) => {
|
|
48
|
+
return {
|
|
49
|
+
hasOAuth2Client: !!extraData?.oauth2Client,
|
|
50
|
+
extraDataKeys: Object.keys(extraData || {})
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
// Call the context without OAuth2Client
|
|
55
|
+
return testContext.getContextData({ agentId: "test", address: "test", id: "test" }, { plugins: {} }).then(result => {
|
|
56
|
+
expect(result.hasOAuth2Client).toBe(false);
|
|
57
|
+
expect(result.extraDataKeys).toEqual(["plugins"]);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
it("should type-check OAuth2Client methods correctly", () => {
|
|
61
|
+
// This test verifies that TypeScript recognizes oauth2Client in extraData
|
|
62
|
+
const contextHandler = async (agentInfo, extraData) => {
|
|
63
|
+
// These should all compile without TypeScript errors
|
|
64
|
+
const hasClient = !!extraData?.oauth2Client;
|
|
65
|
+
const canGetToken = !!extraData?.oauth2Client?.getAccessToken;
|
|
66
|
+
const canGetValidToken = !!extraData?.oauth2Client?.getValidToken;
|
|
67
|
+
const canGetByEmail = !!extraData?.oauth2Client?.getTokensByEmail;
|
|
68
|
+
const canGetByUserId = !!extraData?.oauth2Client?.getTokensByUserId;
|
|
69
|
+
const canDelete = !!extraData?.oauth2Client?.deleteToken;
|
|
70
|
+
return {
|
|
71
|
+
hasClient,
|
|
72
|
+
canGetToken,
|
|
73
|
+
canGetValidToken,
|
|
74
|
+
canGetByEmail,
|
|
75
|
+
canGetByUserId,
|
|
76
|
+
canDelete
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
// Create a context with the handler
|
|
80
|
+
const typedContext = (0, core_1.createContext)({
|
|
81
|
+
id: "typed-context",
|
|
82
|
+
name: "Typed Context",
|
|
83
|
+
description: "Context with typed OAuth2Client",
|
|
84
|
+
getContextData: contextHandler
|
|
85
|
+
});
|
|
86
|
+
expect(typedContext).toBeDefined();
|
|
87
|
+
expect(typedContext.id).toBe("typed-context");
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=oauth-context-simple.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-context-simple.test.js","sourceRoot":"","sources":["../../src/__tests__/oauth-context-simple.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const supertest_1 = tslib_1.__importDefault(require("supertest"));
|
|
6
|
+
const nodeService_1 = require("../service/nodeService");
|
|
7
|
+
const core_1 = require("../service/core");
|
|
8
|
+
const ed25519_1 = require("@noble/curves/ed25519");
|
|
9
|
+
const bs58_1 = tslib_1.__importDefault(require("bs58"));
|
|
10
|
+
describe("OAuth2Client in ServiceContext", () => {
|
|
11
|
+
let server;
|
|
12
|
+
const port = 4567;
|
|
13
|
+
// Generate keys for authentication
|
|
14
|
+
const privateKey = ed25519_1.ed25519.utils.randomPrivateKey();
|
|
15
|
+
const publicKey = ed25519_1.ed25519.getPublicKey(privateKey);
|
|
16
|
+
// Create a context that uses OAuth2Client
|
|
17
|
+
const userContext = (0, core_1.createContext)({
|
|
18
|
+
id: "oauth-test-context",
|
|
19
|
+
name: "OAuth Test Context",
|
|
20
|
+
description: "Context that uses OAuth2Client",
|
|
21
|
+
getContextData: async (agentInfo, extraData) => {
|
|
22
|
+
const oauth2Client = extraData?.oauth2Client;
|
|
23
|
+
return {
|
|
24
|
+
hasOAuth2Client: !!oauth2Client,
|
|
25
|
+
canAccessTokenMethods: !!(oauth2Client?.getAccessToken && oauth2Client?.getValidToken),
|
|
26
|
+
methods: oauth2Client ? Object.keys(oauth2Client).filter(key => typeof oauth2Client[key] === 'function') : []
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
// Create a tool that verifies OAuth2Client is in context
|
|
31
|
+
const oauthContextTool = (0, core_1.createTool)({
|
|
32
|
+
id: "verify-oauth-context",
|
|
33
|
+
name: "Verify OAuth Context",
|
|
34
|
+
description: "Verifies OAuth2Client is available in tool context",
|
|
35
|
+
input: zod_1.z.object({
|
|
36
|
+
test: zod_1.z.string().optional()
|
|
37
|
+
}),
|
|
38
|
+
output: zod_1.z.object({
|
|
39
|
+
hasOAuth2Client: zod_1.z.boolean(),
|
|
40
|
+
canCallMethods: zod_1.z.boolean()
|
|
41
|
+
}),
|
|
42
|
+
handler: async (input, agentInfo, context) => {
|
|
43
|
+
const hasOAuth2Client = !!context?.oauth2Client;
|
|
44
|
+
const canCallMethods = !!(context?.oauth2Client?.getAccessToken &&
|
|
45
|
+
context?.oauth2Client?.getValidToken &&
|
|
46
|
+
context?.oauth2Client?.getTokensByEmail);
|
|
47
|
+
return {
|
|
48
|
+
text: hasOAuth2Client
|
|
49
|
+
? "OAuth2Client is available in tool context"
|
|
50
|
+
: "OAuth2Client is not available",
|
|
51
|
+
data: {
|
|
52
|
+
hasOAuth2Client,
|
|
53
|
+
canCallMethods
|
|
54
|
+
},
|
|
55
|
+
ui: undefined
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
const dainService = (0, nodeService_1.defineDAINService)({
|
|
60
|
+
metadata: {
|
|
61
|
+
title: "Test OAuth Context",
|
|
62
|
+
description: "Testing OAuth2Client in ServiceContext",
|
|
63
|
+
version: "1.0.0",
|
|
64
|
+
author: "Test",
|
|
65
|
+
tags: ["test", "oauth"]
|
|
66
|
+
},
|
|
67
|
+
identity: {
|
|
68
|
+
publicKey: bs58_1.default.encode(publicKey),
|
|
69
|
+
privateKey: bs58_1.default.encode(privateKey),
|
|
70
|
+
agentId: "oauth-test-agent",
|
|
71
|
+
orgId: "oauth-test-org"
|
|
72
|
+
},
|
|
73
|
+
tools: [oauthContextTool],
|
|
74
|
+
contexts: [userContext],
|
|
75
|
+
oauth2: {
|
|
76
|
+
baseUrl: `http://localhost:${port}`,
|
|
77
|
+
providers: {
|
|
78
|
+
google: {
|
|
79
|
+
clientId: "test-google-client",
|
|
80
|
+
clientSecret: "test-google-secret",
|
|
81
|
+
authorizationUrl: "https://accounts.google.com/o/oauth2/v2/auth",
|
|
82
|
+
tokenUrl: "https://oauth2.googleapis.com/token",
|
|
83
|
+
scopes: ["email", "profile"]
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
tokenStore: new (require('@dainprotocol/oauth2-token-manager').InMemoryStorageAdapter)()
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
beforeAll(async () => {
|
|
90
|
+
server = await dainService.startNode({ port });
|
|
91
|
+
});
|
|
92
|
+
afterAll(async () => {
|
|
93
|
+
if (server) {
|
|
94
|
+
server.close();
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
describe("Context endpoints", () => {
|
|
98
|
+
it("should include OAuth2Client when getting single context", async () => {
|
|
99
|
+
const response = await (0, supertest_1.default)(`http://localhost:${port}`)
|
|
100
|
+
.get("/contexts/oauth-test-context")
|
|
101
|
+
.set("x-agent-id", "test-agent")
|
|
102
|
+
.set("x-org-id", "test-org")
|
|
103
|
+
.set("x-agent-signature", "test-signature")
|
|
104
|
+
.set("x-agent-public-key", bs58_1.default.encode(publicKey))
|
|
105
|
+
.expect(200);
|
|
106
|
+
expect(response.body).toMatchObject({
|
|
107
|
+
id: "oauth-test-context",
|
|
108
|
+
name: "OAuth Test Context",
|
|
109
|
+
description: "Context that uses OAuth2Client",
|
|
110
|
+
data: {
|
|
111
|
+
hasOAuth2Client: true,
|
|
112
|
+
canAccessTokenMethods: true,
|
|
113
|
+
methods: expect.arrayContaining([
|
|
114
|
+
"getAccessToken",
|
|
115
|
+
"getValidToken",
|
|
116
|
+
"getTokensByUserId",
|
|
117
|
+
"getTokensByEmail",
|
|
118
|
+
"deleteToken"
|
|
119
|
+
])
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
it("should include OAuth2Client when getting all contexts", async () => {
|
|
124
|
+
const response = await (0, supertest_1.default)(`http://localhost:${port}`)
|
|
125
|
+
.post("/contexts")
|
|
126
|
+
.set("x-agent-id", "test-agent")
|
|
127
|
+
.set("x-org-id", "test-org")
|
|
128
|
+
.set("x-agent-signature", "test-signature")
|
|
129
|
+
.set("x-agent-public-key", bs58_1.default.encode(publicKey))
|
|
130
|
+
.send({})
|
|
131
|
+
.expect(200);
|
|
132
|
+
expect(Array.isArray(response.body)).toBe(true);
|
|
133
|
+
expect(response.body.length).toBeGreaterThan(0);
|
|
134
|
+
const oauthContext = response.body.find((ctx) => ctx.id === "oauth-test-context");
|
|
135
|
+
expect(oauthContext).toBeDefined();
|
|
136
|
+
expect(oauthContext.data).toMatchObject({
|
|
137
|
+
hasOAuth2Client: true,
|
|
138
|
+
canAccessTokenMethods: true,
|
|
139
|
+
methods: expect.arrayContaining(["getAccessToken", "getValidToken"])
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
it("should provide OAuth2Client to tools via context", async () => {
|
|
143
|
+
const response = await (0, supertest_1.default)(`http://localhost:${port}`)
|
|
144
|
+
.post("/tools/verify-oauth-context")
|
|
145
|
+
.set("x-agent-id", "test-agent")
|
|
146
|
+
.set("x-org-id", "test-org")
|
|
147
|
+
.set("x-agent-signature", "test-signature")
|
|
148
|
+
.set("x-agent-public-key", bs58_1.default.encode(publicKey))
|
|
149
|
+
.send({ test: "value" })
|
|
150
|
+
.expect(200);
|
|
151
|
+
expect(response.body).toMatchObject({
|
|
152
|
+
text: "OAuth2Client is available in tool context",
|
|
153
|
+
data: {
|
|
154
|
+
hasOAuth2Client: true,
|
|
155
|
+
canCallMethods: true
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
describe("OAuth2Client in streaming context", () => {
|
|
161
|
+
it("should include OAuth2Client in SSE streaming context", (done) => {
|
|
162
|
+
const req = (0, supertest_1.default)(`http://localhost:${port}`)
|
|
163
|
+
.post("/stream")
|
|
164
|
+
.set("x-agent-id", "test-agent")
|
|
165
|
+
.set("x-org-id", "test-org")
|
|
166
|
+
.set("x-agent-signature", "test-signature")
|
|
167
|
+
.set("x-agent-public-key", bs58_1.default.encode(publicKey))
|
|
168
|
+
.set("Accept", "text/event-stream")
|
|
169
|
+
.send({
|
|
170
|
+
messages: [
|
|
171
|
+
{
|
|
172
|
+
role: "user",
|
|
173
|
+
content: "Test OAuth context"
|
|
174
|
+
}
|
|
175
|
+
],
|
|
176
|
+
withContext: true
|
|
177
|
+
});
|
|
178
|
+
let contextFound = false;
|
|
179
|
+
let buffer = "";
|
|
180
|
+
req.on("data", (chunk) => {
|
|
181
|
+
buffer += chunk.toString();
|
|
182
|
+
const lines = buffer.split("\n");
|
|
183
|
+
for (let i = 0; i < lines.length - 1; i++) {
|
|
184
|
+
const line = lines[i].trim();
|
|
185
|
+
if (line.startsWith("data: ")) {
|
|
186
|
+
try {
|
|
187
|
+
const data = JSON.parse(line.slice(6));
|
|
188
|
+
if (data.type === "context" && data.contexts) {
|
|
189
|
+
const oauthContext = data.contexts.find((ctx) => ctx.id === "oauth-test-context");
|
|
190
|
+
if (oauthContext) {
|
|
191
|
+
expect(oauthContext.data).toMatchObject({
|
|
192
|
+
hasOAuth2Client: true,
|
|
193
|
+
canAccessTokenMethods: true
|
|
194
|
+
});
|
|
195
|
+
contextFound = true;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
if (data.type === "done" && contextFound) {
|
|
199
|
+
done();
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
catch (e) {
|
|
204
|
+
// Ignore parsing errors for incomplete JSON
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
buffer = lines[lines.length - 1];
|
|
209
|
+
});
|
|
210
|
+
req.on("error", done);
|
|
211
|
+
req.on("end", () => {
|
|
212
|
+
if (!contextFound) {
|
|
213
|
+
done(new Error("OAuth context not found in stream"));
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
describe("OAuth2Client availability without OAuth config", () => {
|
|
219
|
+
let noOAuthServer;
|
|
220
|
+
const noOAuthPort = 4568;
|
|
221
|
+
// Generate new keys for second service
|
|
222
|
+
const privateKey2 = ed25519_1.ed25519.utils.randomPrivateKey();
|
|
223
|
+
const publicKey2 = ed25519_1.ed25519.getPublicKey(privateKey2);
|
|
224
|
+
const noOAuthService = (0, nodeService_1.defineDAINService)({
|
|
225
|
+
metadata: {
|
|
226
|
+
title: "Test No OAuth",
|
|
227
|
+
description: "Testing context without OAuth2",
|
|
228
|
+
version: "1.0.0",
|
|
229
|
+
author: "Test",
|
|
230
|
+
tags: ["test"]
|
|
231
|
+
},
|
|
232
|
+
identity: {
|
|
233
|
+
publicKey: bs58_1.default.encode(publicKey2),
|
|
234
|
+
privateKey: bs58_1.default.encode(privateKey2),
|
|
235
|
+
agentId: "no-oauth-agent",
|
|
236
|
+
orgId: "no-oauth-org"
|
|
237
|
+
},
|
|
238
|
+
tools: [(0, core_1.createTool)({
|
|
239
|
+
id: "dummy-tool",
|
|
240
|
+
name: "Dummy Tool",
|
|
241
|
+
description: "A dummy tool for testing",
|
|
242
|
+
input: zod_1.z.object({}),
|
|
243
|
+
output: zod_1.z.object({}),
|
|
244
|
+
handler: async () => ({ text: "dummy", data: {}, ui: undefined })
|
|
245
|
+
})],
|
|
246
|
+
contexts: [{
|
|
247
|
+
id: "no-oauth-context",
|
|
248
|
+
name: "No OAuth Context",
|
|
249
|
+
description: "Context without OAuth2Client",
|
|
250
|
+
getContextData: async (agentInfo, extraData) => {
|
|
251
|
+
return {
|
|
252
|
+
hasOAuth2Client: !!extraData?.oauth2Client,
|
|
253
|
+
extraDataKeys: Object.keys(extraData || {})
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
}]
|
|
257
|
+
});
|
|
258
|
+
beforeAll(async () => {
|
|
259
|
+
noOAuthServer = await noOAuthService.startNode({ port: noOAuthPort });
|
|
260
|
+
});
|
|
261
|
+
afterAll(async () => {
|
|
262
|
+
if (noOAuthServer) {
|
|
263
|
+
noOAuthServer.close();
|
|
264
|
+
}
|
|
265
|
+
});
|
|
266
|
+
it("should not have OAuth2Client when OAuth is not configured", async () => {
|
|
267
|
+
const response = await (0, supertest_1.default)(`http://localhost:${noOAuthPort}`)
|
|
268
|
+
.get("/contexts/no-oauth-context")
|
|
269
|
+
.set("x-agent-id", "test-agent")
|
|
270
|
+
.set("x-org-id", "test-org")
|
|
271
|
+
.set("x-agent-signature", "test-signature")
|
|
272
|
+
.set("x-agent-public-key", bs58_1.default.encode(publicKey2))
|
|
273
|
+
.expect(200);
|
|
274
|
+
expect(response.body.data).toMatchObject({
|
|
275
|
+
hasOAuth2Client: false,
|
|
276
|
+
extraDataKeys: expect.arrayContaining(["plugins"])
|
|
277
|
+
});
|
|
278
|
+
expect(response.body.data.extraDataKeys).not.toContain("oauth2Client");
|
|
279
|
+
});
|
|
280
|
+
});
|
|
281
|
+
});
|
|
282
|
+
//# sourceMappingURL=oauth-context.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-context.test.js","sourceRoot":"","sources":["../../src/__tests__/oauth-context.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|