mirror of
https://github.com/immich-app/immich.git
synced 2024-12-29 15:11:58 +00:00
fix(web): websocket over ipv6 (#11508)
This commit is contained in:
parent
2c05ceaf50
commit
1f0f880ecb
3 changed files with 30 additions and 5 deletions
|
@ -424,12 +424,12 @@ export const utils = {
|
||||||
|
|
||||||
createPartner: (accessToken: string, id: string) => createPartner({ id }, { headers: asBearerAuth(accessToken) }),
|
createPartner: (accessToken: string, id: string) => createPartner({ id }, { headers: asBearerAuth(accessToken) }),
|
||||||
|
|
||||||
setAuthCookies: async (context: BrowserContext, accessToken: string) =>
|
setAuthCookies: async (context: BrowserContext, accessToken: string, domain = '127.0.0.1') =>
|
||||||
await context.addCookies([
|
await context.addCookies([
|
||||||
{
|
{
|
||||||
name: 'immich_access_token',
|
name: 'immich_access_token',
|
||||||
value: accessToken,
|
value: accessToken,
|
||||||
domain: '127.0.0.1',
|
domain,
|
||||||
path: '/',
|
path: '/',
|
||||||
expires: 1_742_402_728,
|
expires: 1_742_402_728,
|
||||||
httpOnly: true,
|
httpOnly: true,
|
||||||
|
@ -439,7 +439,7 @@ export const utils = {
|
||||||
{
|
{
|
||||||
name: 'immich_auth_type',
|
name: 'immich_auth_type',
|
||||||
value: 'password',
|
value: 'password',
|
||||||
domain: '127.0.0.1',
|
domain,
|
||||||
path: '/',
|
path: '/',
|
||||||
expires: 1_742_402_728,
|
expires: 1_742_402_728,
|
||||||
httpOnly: true,
|
httpOnly: true,
|
||||||
|
@ -449,7 +449,7 @@ export const utils = {
|
||||||
{
|
{
|
||||||
name: 'immich_is_authenticated',
|
name: 'immich_is_authenticated',
|
||||||
value: 'true',
|
value: 'true',
|
||||||
domain: '127.0.0.1',
|
domain,
|
||||||
path: '/',
|
path: '/',
|
||||||
expires: 1_742_402_728,
|
expires: 1_742_402_728,
|
||||||
httpOnly: false,
|
httpOnly: false,
|
||||||
|
|
25
e2e/src/web/specs/websocket.e2e-spec.ts
Normal file
25
e2e/src/web/specs/websocket.e2e-spec.ts
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
import { LoginResponseDto } from '@immich/sdk';
|
||||||
|
import { expect, test } from '@playwright/test';
|
||||||
|
import { utils } from 'src/utils';
|
||||||
|
|
||||||
|
test.describe('Websocket', () => {
|
||||||
|
let admin: LoginResponseDto;
|
||||||
|
|
||||||
|
test.beforeAll(async () => {
|
||||||
|
utils.initSdk();
|
||||||
|
await utils.resetDatabase();
|
||||||
|
admin = await utils.adminSetup();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('connects using ipv4', async ({ page, context }) => {
|
||||||
|
await utils.setAuthCookies(context, admin.accessToken);
|
||||||
|
await page.goto('http://127.0.0.1:2283/');
|
||||||
|
await expect(page.locator('#sidebar')).toContainText('Server Online');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('connects using ipv6', async ({ page, context }) => {
|
||||||
|
await utils.setAuthCookies(context, admin.accessToken, '[::1]');
|
||||||
|
await page.goto('http://[::1]:2283/');
|
||||||
|
await expect(page.locator('#sidebar')).toContainText('Server Online');
|
||||||
|
});
|
||||||
|
});
|
|
@ -26,7 +26,7 @@ export interface Events {
|
||||||
on_new_release: (newRelase: ReleaseEvent) => void;
|
on_new_release: (newRelase: ReleaseEvent) => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
const websocket: Socket<Events> = io('', {
|
const websocket: Socket<Events> = io({
|
||||||
path: '/api/socket.io',
|
path: '/api/socket.io',
|
||||||
transports: ['websocket'],
|
transports: ['websocket'],
|
||||||
reconnection: true,
|
reconnection: true,
|
||||||
|
|
Loading…
Reference in a new issue