Slight restructure, updated auth, implement player and game endpoints

This commit is contained in:
jd
2026-02-18 21:32:28 +00:00
parent 99c7bdc0fd
commit 2996a2eb95
32 changed files with 2093 additions and 266 deletions

View File

@@ -1,11 +1,13 @@
import {expect, test} from 'bun:test';
import { expect, test } from 'bun:test';
import user from '../endpoints/user';
import {UnwrappedRequest} from "../utilities/guard";
import {Claims} from "../orm/claims";
import { UnwrappedRequest } from '../utilities/guard';
import { Claims } from '../orm/claims';
import { orm } from '../orm/orm';
import { User } from '../orm/user';
test('Create user as admin', async () => {
const claims = new Claims();
claims.claims.push('ADMIN');
claims.claims.push(Claims.ADMIN);
const request = new UnwrappedRequest({
claims,
@@ -24,7 +26,7 @@ test('Create user as admin', async () => {
test('Create user without read access', async () => {
const claims = new Claims();
claims.claims.push('USERS_CREATE');
claims.claims.push(Claims.USERS.CREATE);
const request = new UnwrappedRequest({
claims,
@@ -43,7 +45,7 @@ test('Create user without read access', async () => {
test('Create user that already exists', async () => {
const claims = new Claims();
claims.claims.push('USERS_CREATE');
claims.claims.push(Claims.USERS.CREATE);
const request = new UnwrappedRequest({
claims,
@@ -61,13 +63,13 @@ test('Create user that already exists', async () => {
test('Get user', async () => {
const claims = new Claims();
claims.claims.push('USERS_OTHER_READ');
claims.claims.push(Claims.USERS.OTHER.READ);
const request = new UnwrappedRequest({
claims,
request: null,
params: {
id: 1
id: 1,
},
});
@@ -79,14 +81,14 @@ test('Get user', async () => {
test('Get user self with only self read permission', async () => {
const claims = new Claims();
claims.userId = "1";
claims.claims.push('USERS_OTHER_READ');
claims.userId = '1';
claims.claims.push(Claims.USERS.OTHER.READ);
const request = new UnwrappedRequest({
claims,
request: null,
params: {
id: 1
id: 1,
},
});
@@ -98,14 +100,14 @@ test('Get user self with only self read permission', async () => {
test('Get other user without read permissions', async () => {
const claims = new Claims();
claims.userId = "2";
claims.claims.push('USERS_SELF_READ');
claims.userId = '2';
claims.claims.push(Claims.USERS.SELF.READ);
const request = new UnwrappedRequest({
claims,
request: null,
params: {
id: 1
id: 1,
},
});
@@ -113,18 +115,170 @@ test('Get other user without read permissions', async () => {
expect(response.status).toBe(401);
});
test('Get user that doesn\'t exist', async () => {
test("Get user that doesn't exist", async () => {
const claims = new Claims();
claims.claims.push('ADMIN');
claims.claims.push(Claims.ADMIN);
const request = new UnwrappedRequest({
claims,
request: null,
params: {
id: 101
id: 101,
},
});
const response = await user.get(request);
expect(response.status).toBe(404);
});
});
test('Update user', async () => {
const claims = new Claims();
claims.claims.push(Claims.ADMIN);
const request = new UnwrappedRequest({
claims,
request: null,
json: {
isAdmin: true,
},
params: {
id: 2,
},
});
const response = await user.update(request);
expect(response.status).toBe(200);
expect(response.body).toBeDefined();
});
test('Update user without read access', async () => {
const claims = new Claims();
claims.userId = '1';
claims.claims.push(Claims.USERS.OTHER.UPDATE);
const request = new UnwrappedRequest({
claims,
request: null,
json: {
isAdmin: true,
},
params: {
id: 2,
},
});
const response = await user.update(request);
expect(response.status).toBe(200);
expect(response.body).toBeNull();
});
test('Update user without permissions', async () => {
const claims = new Claims();
claims.userId = '1';
const request = new UnwrappedRequest({
claims,
request: null,
json: {
isAdmin: true,
},
params: {
id: 2,
},
});
const response = await user.update(request);
expect(response.status).toBe(401);
});
test("Update user that doesn't exist", async () => {
const claims = new Claims();
claims.userId = '1';
claims.claims.push(Claims.ADMIN);
const request = new UnwrappedRequest({
claims,
request: null,
json: {
isAdmin: true,
},
params: {
id: 101,
},
});
const response = await user.update(request);
expect(response.status).toBe(404);
});
test('Delete user', async () => {
const claims = new Claims();
claims.claims.push(Claims.ADMIN);
const createdUser = (await orm.users.create('test3', 'test123')) as User;
const request = new UnwrappedRequest({
claims,
request: null,
params: {
id: createdUser.id,
},
});
const response = await user.drop(request);
expect(response.status).toBe(200);
});
test('Delete user without delete permissions', async () => {
const claims = new Claims();
const createdUser = (await orm.users.create('test4', 'test123')) as User;
const request = new UnwrappedRequest({
claims,
request: null,
params: {
id: createdUser.id,
},
});
const response = await user.drop(request);
expect(response.status).toBe(401);
});
test('Delete self user with only self delete permissions', async () => {
const claims = new Claims();
claims.claims.push(Claims.USERS.SELF.DELETE);
const createdUser = (await orm.users.create('test5', 'test123')) as User;
claims.userId = createdUser.id;
const request = new UnwrappedRequest({
claims,
request: null,
params: {
id: createdUser.id,
},
});
const response = await user.drop(request);
expect(response.status).toBe(200);
});
test('Delete other user with only self delete permissions', async () => {
const claims = new Claims();
claims.userId = '1';
claims.claims.push(Claims.USERS.SELF.DELETE);
const createdUser = (await orm.users.create('test6', 'test123')) as User;
const request = new UnwrappedRequest({
claims,
request: null,
params: {
id: createdUser.id,
},
});
const response = await user.drop(request);
expect(response.status).toBe(401);
});