mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 01:38:19 +08:00
core: fix api tests
This commit is contained in:
3 files changed
+18
-6
No files matched your search
@@ -150,8 +150,20 @@ export class ApiHandler<C extends Context> extends Handler<C> {
|
|||||||
await this.ctx.parallel('handler/api/before', this);
|
await this.ctx.parallel('handler/api/before', this);
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
await this.ctx.parallel(`handler/api/before/${op}`, this);
|
await this.ctx.parallel(`handler/api/before/${op}`, this);
|
||||||
|
try {
|
||||||
|
if (typeof this.args.args === 'string') {
|
||||||
|
this.args.args = JSON.parse(this.args.args);
|
||||||
|
}
|
||||||
|
if (typeof this.args.projection === 'string') {
|
||||||
|
this.args.projection = '{['.includes(this.args.projection[0])
|
||||||
|
? JSON.parse(this.args.projection)
|
||||||
|
: this.args.projection.split(',').map((i) => i.trim()).filter((i) => i);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
throw new BadRequestError('Invalid arguments');
|
||||||
|
}
|
||||||
const result = await this.ctx.api.execute(
|
const result = await this.ctx.api.execute(
|
||||||
this, op, { domainId: this.args.domainId, ...(this.args.args || {}) },
|
this, op, { domainId: this.args.domainId, ...this.args, ...(this.args.args || {}) },
|
||||||
(m, args) => (this.ctx.parallel as any)(m, args), this.args.projection,
|
(m, args) => (this.ctx.parallel as any)(m, args), this.args.projection,
|
||||||
);
|
);
|
||||||
if (BinaryResponse.check(result)) {
|
if (BinaryResponse.check(result)) {
|
||||||
|
|||||||
@@ -546,7 +546,7 @@ const UserApi = {
|
|||||||
if (arg.id) return user.getById(arg.domainId, arg.id);
|
if (arg.id) return user.getById(arg.domainId, arg.id);
|
||||||
if (arg.mail) return user.getByEmail(arg.domainId, arg.mail);
|
if (arg.mail) return user.getByEmail(arg.domainId, arg.mail);
|
||||||
if (arg.uname) return user.getByUname(arg.domainId, arg.uname);
|
if (arg.uname) return user.getByUname(arg.domainId, arg.uname);
|
||||||
return c.user;
|
return user.getById(arg.domainId, c.user._id);
|
||||||
}),
|
}),
|
||||||
users: Query(Schema.object({
|
users: Query(Schema.object({
|
||||||
ids: Schema.array(Schema.number().step(1)),
|
ids: Schema.array(Schema.number().step(1)),
|
||||||
|
|||||||
+4
-4
@@ -29,15 +29,15 @@ describe('App', () => {
|
|||||||
console.log('Application inited in %d ms', Date.now() - init);
|
console.log('Application inited in %d ms', Date.now() - init);
|
||||||
}, { timeout: 30000 });
|
}, { timeout: 30000 });
|
||||||
|
|
||||||
const routes = ['/', '/api', '/p', '/contest', '/homework', '/user/1', '/training'];
|
const routes = ['/', '/p', '/contest', '/homework', '/user/1', '/training'];
|
||||||
for (const route of routes) {
|
for (const route of routes) {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-loop-func
|
// eslint-disable-next-line @typescript-eslint/no-loop-func
|
||||||
it(`GET ${route}`, () => agent.get(route).expect(200));
|
it(`GET ${route}`, () => agent.get(route).expect(200));
|
||||||
}
|
}
|
||||||
|
|
||||||
it('API user', async () => {
|
it('API user', async () => {
|
||||||
await agent.get('/api?{user(id:1){uname}}').expect({ data: { user: { uname: 'Hydro' } } });
|
await agent.get('/api/user?args={"id":1}&projection=uname').expect({ uname: 'Hydro' });
|
||||||
await agent.get('/api?{user(id:2){uname}}').expect({ data: { user: null } });
|
await agent.get('/api/user?args={"id":2}&projection=uname').expect(null);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Create User', async () => {
|
it('Create User', async () => {
|
||||||
@@ -59,7 +59,7 @@ describe('App', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('API registered user', async () => {
|
it('API registered user', async () => {
|
||||||
await agent.get('/api?{user(id:2){uname}}').expect({ data: { user: { uname: 'root' } } });
|
await agent.get('/api/user?args={"id":2}&projection=uname').expect({ uname: 'root' });
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO add more tests
|
// TODO add more tests
|
||||||
|
|||||||
Reference in new issue
Block a user