WIP
This commit is contained in:
@@ -8,7 +8,7 @@ import {
|
||||
} from '@immich/sdk';
|
||||
import { cpSync, existsSync } from 'node:fs';
|
||||
import { Socket } from 'socket.io-client';
|
||||
import { userDto, uuidDto } from 'src/fixtures';
|
||||
import { createUserDto, uuidDto } from 'src/fixtures';
|
||||
import { errorDto } from 'src/responses';
|
||||
import { app, asBearerAuth, testAssetDir, testAssetDirInternal, utils } from 'src/utils';
|
||||
import request from 'supertest';
|
||||
@@ -18,7 +18,7 @@ import { afterAll, beforeAll, beforeEach, describe, expect, it } from 'vitest';
|
||||
const scan = async (accessToken: string, id: string, dto: ScanLibraryDto = {}) =>
|
||||
scanLibrary({ id, scanLibraryDto: dto }, { headers: asBearerAuth(accessToken) });
|
||||
|
||||
describe('/library', () => {
|
||||
describe.skip('/library', () => {
|
||||
let admin: LoginResponseDto;
|
||||
let user: LoginResponseDto;
|
||||
let library: LibraryResponseDto;
|
||||
@@ -28,7 +28,7 @@ describe('/library', () => {
|
||||
await utils.resetDatabase();
|
||||
admin = await utils.adminSetup();
|
||||
await utils.resetAdminConfig(admin.accessToken);
|
||||
user = await utils.userSetup(admin.accessToken, userDto.user1);
|
||||
user = await utils.userSetup(admin.accessToken, createUserDto.user1);
|
||||
library = await utils.createLibrary(admin.accessToken, { ownerId: admin.userId, type: LibraryType.External });
|
||||
websocket = await utils.connectWebsocket(admin.accessToken);
|
||||
utils.createImageFile(`${testAssetDir}/temp/directoryA/assetA.png`);
|
||||
|
||||
@@ -135,7 +135,7 @@ describe('/user', () => {
|
||||
expect(body).toEqual(errorDto.unauthorized);
|
||||
});
|
||||
|
||||
for (const key of Object.keys(createUserDto.user1)) {
|
||||
for (const key of ['email', 'password', 'name', 'permissionPreset']) {
|
||||
it(`should not allow null ${key}`, async () => {
|
||||
const { status, body } = await request(app)
|
||||
.post(`/user`)
|
||||
@@ -146,6 +146,17 @@ describe('/user', () => {
|
||||
});
|
||||
}
|
||||
|
||||
it(`should require permissions when using the custom preset `, async () => {
|
||||
const { status, body } = await request(app)
|
||||
.post(`/user`)
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`)
|
||||
.send({ ...createUserDto.user1, permissionPreset: 'custom' });
|
||||
expect(status).toBe(400);
|
||||
expect(body).toEqual(
|
||||
errorDto.badRequest([expect.stringContaining('each value in permissions must be one of the following')]),
|
||||
);
|
||||
});
|
||||
|
||||
it('should ignore `isAdmin`', async () => {
|
||||
const { status, body } = await request(app)
|
||||
.post(`/user`)
|
||||
@@ -154,6 +165,7 @@ describe('/user', () => {
|
||||
email: 'user5@immich.cloud',
|
||||
password: 'password123',
|
||||
name: 'Immich',
|
||||
permissionPreset: 'user',
|
||||
})
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||
expect(body).toMatchObject({
|
||||
@@ -172,6 +184,7 @@ describe('/user', () => {
|
||||
password: 'Password123',
|
||||
name: 'No Memories',
|
||||
memoriesEnabled: false,
|
||||
permissionPreset: 'user',
|
||||
})
|
||||
.set('Authorization', `Bearer ${admin.accessToken}`);
|
||||
expect(body).toMatchObject({
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { UserAvatarColor } from '@immich/sdk';
|
||||
import { PermissionPreset, UserAvatarColor } from '@immich/sdk';
|
||||
|
||||
export const uuidDto = {
|
||||
invalid: 'invalid-uuid',
|
||||
@@ -26,33 +26,39 @@ export const createUserDto = {
|
||||
email: `${key}@immich.cloud`,
|
||||
name: `Generated User ${key}`,
|
||||
password: `password-${key}`,
|
||||
permissionPreset: PermissionPreset.User,
|
||||
};
|
||||
},
|
||||
user1: {
|
||||
email: 'user1@immich.cloud',
|
||||
name: 'User 1',
|
||||
password: 'password1',
|
||||
permissionPreset: PermissionPreset.User,
|
||||
},
|
||||
user2: {
|
||||
email: 'user2@immich.cloud',
|
||||
name: 'User 2',
|
||||
password: 'password12',
|
||||
permissionPreset: PermissionPreset.User,
|
||||
},
|
||||
user3: {
|
||||
email: 'user3@immich.cloud',
|
||||
name: 'User 3',
|
||||
permissionPreset: PermissionPreset.User,
|
||||
password: 'password123',
|
||||
},
|
||||
user4: {
|
||||
email: 'user4@immich.cloud',
|
||||
name: 'User 4',
|
||||
password: 'password123',
|
||||
permissionPreset: PermissionPreset.User,
|
||||
},
|
||||
userQuota: {
|
||||
email: 'user-quota@immich.cloud',
|
||||
name: 'User Quota',
|
||||
password: 'password-quota',
|
||||
quotaSizeInBytes: 512,
|
||||
permissionPreset: PermissionPreset.User,
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -77,6 +77,91 @@ export const signupResponseDto = {
|
||||
quotaUsageInBytes: 0,
|
||||
quotaSizeInBytes: null,
|
||||
status: 'active',
|
||||
permissions: [
|
||||
'activity.create',
|
||||
'activity.read',
|
||||
'activity.update',
|
||||
'activity.delete',
|
||||
'album.create',
|
||||
'album.read',
|
||||
'album.update',
|
||||
'album.delete',
|
||||
'asset.create',
|
||||
'asset.read',
|
||||
'asset.update',
|
||||
'asset.delete',
|
||||
'apiKey.create',
|
||||
'apiKey.read',
|
||||
'apiKey.update',
|
||||
'apiKey.delete',
|
||||
'authDevice.create',
|
||||
'authDevice.read',
|
||||
'authDevice.update',
|
||||
'authDevice.delete',
|
||||
'face.create',
|
||||
'face.read',
|
||||
'face.update',
|
||||
'face.delete',
|
||||
'library.create',
|
||||
'library.read',
|
||||
'library.update',
|
||||
'library.delete',
|
||||
'memory.create',
|
||||
'memory.read',
|
||||
'memory.update',
|
||||
'memory.delete',
|
||||
'memory.addAsset',
|
||||
'memory.removeAsset',
|
||||
'partner.create',
|
||||
'partner.read',
|
||||
'partner.update',
|
||||
'partner.delete',
|
||||
'person.create',
|
||||
'person.read',
|
||||
'person.update',
|
||||
'person.delete',
|
||||
'report.create',
|
||||
'report.read',
|
||||
'report.update',
|
||||
'report.delete',
|
||||
'sharedLink.create',
|
||||
'sharedLink.read',
|
||||
'sharedLink.update',
|
||||
'sharedLink.delete',
|
||||
'systemConfig.read',
|
||||
'systemConfig.update',
|
||||
'systemConfig.delete',
|
||||
'stack.create',
|
||||
'stack.read',
|
||||
'stack.update',
|
||||
'stack.delete',
|
||||
'tag.create',
|
||||
'tag.read',
|
||||
'tag.update',
|
||||
'tag.delete',
|
||||
'user.create',
|
||||
'user.read',
|
||||
'user.update',
|
||||
'user.delete',
|
||||
'auth.changePassword',
|
||||
'auth.oauth',
|
||||
'album.addAsset',
|
||||
'album.removeAsset',
|
||||
'album.addUser',
|
||||
'album.removeUser',
|
||||
'asset.viewThumb',
|
||||
'asset.viewPreview',
|
||||
'asset.viewOriginal',
|
||||
'asset.upload',
|
||||
'asset.download',
|
||||
'job.read',
|
||||
'job.run',
|
||||
'map.read',
|
||||
'user.readSimple',
|
||||
'user.changePassword',
|
||||
'server.read',
|
||||
'server.setup',
|
||||
],
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user