1
0
mirror of https://github.com/immich-app/immich.git synced 2024-11-28 09:33:27 +02:00

fix(server): reset-admin-password command (#10939)

* fix(server): reset-admin-password command

* fix immichCli
This commit is contained in:
Michel Heusschen 2024-07-07 13:20:28 +02:00 committed by GitHub
parent 59cdbdc492
commit d582ec02b1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 24 additions and 5 deletions

View File

@ -9,11 +9,30 @@ describe(`immich-admin`, () => {
describe('list-users', () => { describe('list-users', () => {
it('should list the admin user', async () => { it('should list the admin user', async () => {
const { stdout, stderr, exitCode } = await immichAdmin(['list-users']); const { stdout, stderr, exitCode } = await immichAdmin(['list-users']).promise;
expect(exitCode).toBe(0); expect(exitCode).toBe(0);
expect(stderr).toBe(''); expect(stderr).toBe('');
expect(stdout).toContain("email: 'admin@immich.cloud'"); expect(stdout).toContain("email: 'admin@immich.cloud'");
expect(stdout).toContain("name: 'Immich Admin'"); expect(stdout).toContain("name: 'Immich Admin'");
}); });
}); });
describe('reset-admin-password', () => {
it('should reset admin password', async () => {
const { child, promise } = immichAdmin(['reset-admin-password']);
let data = '';
child.stdout.on('data', (chunk) => {
data += chunk;
if (data.includes('Please choose a new password (optional)')) {
child.stdin.end('\n');
}
});
const { stderr, stdout, exitCode } = await promise;
expect(exitCode).toBe(0);
expect(stderr).toBe('');
expect(stdout).toContain('The admin password has been updated to:');
});
});
}); });

View File

@ -64,13 +64,13 @@ export const tempDir = tmpdir();
export const asBearerAuth = (accessToken: string) => ({ Authorization: `Bearer ${accessToken}` }); export const asBearerAuth = (accessToken: string) => ({ Authorization: `Bearer ${accessToken}` });
export const asKeyAuth = (key: string) => ({ 'x-api-key': key }); export const asKeyAuth = (key: string) => ({ 'x-api-key': key });
export const immichCli = (args: string[]) => export const immichCli = (args: string[]) =>
executeCommand('node', ['node_modules/.bin/immich', '-d', `/${tempDir}/immich/`, ...args]); executeCommand('node', ['node_modules/.bin/immich', '-d', `/${tempDir}/immich/`, ...args]).promise;
export const immichAdmin = (args: string[]) => export const immichAdmin = (args: string[]) =>
executeCommand('docker', ['exec', '-i', 'immich-e2e-server', '/bin/bash', '-c', `immich-admin ${args.join(' ')}`]); executeCommand('docker', ['exec', '-i', 'immich-e2e-server', '/bin/bash', '-c', `immich-admin ${args.join(' ')}`]);
const executeCommand = (command: string, args: string[]) => { const executeCommand = (command: string, args: string[]) => {
let _resolve: (value: CommandResponse) => void; let _resolve: (value: CommandResponse) => void;
const deferred = new Promise<CommandResponse>((resolve) => (_resolve = resolve)); const promise = new Promise<CommandResponse>((resolve) => (_resolve = resolve));
const child = spawn(command, args, { stdio: 'pipe' }); const child = spawn(command, args, { stdio: 'pipe' });
let stdout = ''; let stdout = '';
@ -86,7 +86,7 @@ const executeCommand = (command: string, args: string[]) => {
}); });
}); });
return deferred; return { promise, child };
}; };
let client: pg.Client | null = null; let client: pg.Client | null = null;

View File

@ -140,7 +140,7 @@ export class UserAdminResponseDto extends UserResponseDto {
} }
export function mapUserAdmin(entity: UserEntity): UserAdminResponseDto { export function mapUserAdmin(entity: UserEntity): UserAdminResponseDto {
const license = entity.metadata.find( const license = entity.metadata?.find(
(item): item is UserMetadataEntity<UserMetadataKey.LICENSE> => item.key === UserMetadataKey.LICENSE, (item): item is UserMetadataEntity<UserMetadataKey.LICENSE> => item.key === UserMetadataKey.LICENSE,
)?.value; )?.value;
return { return {