mirror of
https://github.com/ajnart/homarr.git
synced 2026-01-29 10:49:14 +01:00
* wip: sso * feat: add ldap client and provider * feat: implement login form * feat: finish sso * fix: lint and format issue * chore: address pull request feedback * fix: build not working * fix: oidc is redirected to internal docker container hostname * fix: build not working * refactor: migrate to ldapts * fix: format and frozen lock file * fix: deepsource issues * fix: unit tests for ldap authorization not working * refactor: remove unnecessary args from dockerfile * chore: address pull request feedback * fix: use console instead of logger in auth env.mjs * fix: default value for auth provider of wrong type * fix: broken lock file * fix: format issue
60 lines
1.9 KiB
TypeScript
60 lines
1.9 KiB
TypeScript
import type { ReadonlyHeaders } from "next/dist/server/web/spec-extension/adapters/headers";
|
|
import { describe, expect, test } from "vitest";
|
|
|
|
import { createRedirectUri } from "../redirect";
|
|
|
|
describe("redirect", () => {
|
|
test("Callback should return http url when not defining protocol", () => {
|
|
// Arrange
|
|
const headers = new Map<string, string>([["x-forwarded-host", "localhost:3000"]]) as unknown as ReadonlyHeaders;
|
|
|
|
// Act
|
|
const result = createRedirectUri(headers, "/api/auth/callback/oidc");
|
|
|
|
// Assert
|
|
expect(result).toBe("http://localhost:3000/api/auth/callback/oidc");
|
|
});
|
|
|
|
test("Callback should return https url when defining protocol", () => {
|
|
// Arrange
|
|
const headers = new Map<string, string>([
|
|
["x-forwarded-proto", "https"],
|
|
["x-forwarded-host", "localhost:3000"],
|
|
]) as unknown as ReadonlyHeaders;
|
|
|
|
// Act
|
|
const result = createRedirectUri(headers, "/api/auth/callback/oidc");
|
|
|
|
// Assert
|
|
expect(result).toBe("https://localhost:3000/api/auth/callback/oidc");
|
|
});
|
|
|
|
test("Callback should return https url when defining protocol and host", () => {
|
|
// Arrange
|
|
const headers = new Map<string, string>([
|
|
["x-forwarded-proto", "https"],
|
|
["host", "something.else"],
|
|
]) as unknown as ReadonlyHeaders;
|
|
|
|
// Act
|
|
const result = createRedirectUri(headers, "/api/auth/callback/oidc");
|
|
|
|
// Assert
|
|
expect(result).toBe("https://something.else/api/auth/callback/oidc");
|
|
});
|
|
|
|
test("Callback should return https url when defining protocol as http,https and host", () => {
|
|
// Arrange
|
|
const headers = new Map<string, string>([
|
|
["x-forwarded-proto", "http,https"],
|
|
["x-forwarded-host", "hello.world"],
|
|
]) as unknown as ReadonlyHeaders;
|
|
|
|
// Act
|
|
const result = createRedirectUri(headers, "/api/auth/callback/oidc");
|
|
|
|
// Assert
|
|
expect(result).toBe("https://hello.world/api/auth/callback/oidc");
|
|
});
|
|
});
|