You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailchat/server/test/integration/openapi/app.spec.ts

78 lines
1.9 KiB
TypeScript

import { createTestServiceBroker } from '../../utils';
import OpenAppService from '../../../services/openapi/app.service';
import { Types } from 'mongoose';
import _ from 'lodash';
import { generateRandomStr } from '../../../lib/utils';
import type { OpenApp } from '../../../models/openapi/app';
import { nanoid } from 'nanoid';
/**
* 创建测试应用
*/
function createTestOpenApp(
userId: Types.ObjectId = new Types.ObjectId()
): Partial<OpenApp> {
return {
owner: userId,
appId: `tc_${new Types.ObjectId().toString()}`,
appSecret: nanoid(32),
appName: generateRandomStr(),
appDesc: generateRandomStr(),
appIcon: null,
};
}
describe('Test "openapi.app" service', () => {
const { broker, service, insertTestData } =
createTestServiceBroker<OpenAppService>(OpenAppService);
test('Test "openapi.app.create"', async () => {
const userId = String(new Types.ObjectId());
const name = generateRandomStr();
const res: OpenApp = await broker.call(
'openapi.app.create',
{
appName: name,
appDesc: '',
appIcon: '',
},
{
meta: {
userId,
},
}
);
try {
expect(res).toHaveProperty('owner');
expect(res.appId).toHaveLength(27);
expect(res.appSecret).toHaveLength(32);
expect(res.appName).toBe(name);
} finally {
await service.adapter.model.findByIdAndRemove(res._id);
}
});
test('Test "openapi.app.setAppOAuthInfo"', async () => {
const { _id, appId, owner } = await insertTestData(createTestOpenApp());
await broker.call(
'openapi.app.setAppOAuthInfo',
{
appId,
fieldName: 'redirectUrls',
fieldValue: ['http://example.com'],
},
{
meta: {
userId: String(owner),
},
}
);
const openapp = await service.adapter.findById(_id);
expect(openapp.oauth.redirectUrls).toEqual(['http://example.com']);
});
});