mirror of
https://github.com/ajnart/homarr.git
synced 2026-01-31 03:39:21 +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
98 lines
2.4 KiB
TypeScript
98 lines
2.4 KiB
TypeScript
import { describe, expect, test } from "vitest";
|
|
|
|
import { createId } from "@homarr/db";
|
|
import { users } from "@homarr/db/schema/sqlite";
|
|
import { createDb } from "@homarr/db/test";
|
|
|
|
import { createSaltAsync, hashPasswordAsync } from "../../security";
|
|
import { authorizeWithBasicCredentialsAsync } from "../credentials/authorization/basic-authorization";
|
|
|
|
const defaultUserId = createId();
|
|
|
|
describe("authorizeWithBasicCredentials", () => {
|
|
test("should authorize user with correct credentials", async () => {
|
|
// Arrange
|
|
const db = createDb();
|
|
const salt = await createSaltAsync();
|
|
await db.insert(users).values({
|
|
id: defaultUserId,
|
|
name: "test",
|
|
salt,
|
|
password: await hashPasswordAsync("test", salt),
|
|
});
|
|
|
|
// Act
|
|
const result = await authorizeWithBasicCredentialsAsync(db, {
|
|
name: "test",
|
|
password: "test",
|
|
credentialType: "basic",
|
|
});
|
|
|
|
// Assert
|
|
expect(result).toEqual({ id: defaultUserId, name: "test" });
|
|
});
|
|
|
|
test("should not authorize user with incorrect credentials", async () => {
|
|
// Arrange
|
|
const db = createDb();
|
|
const salt = await createSaltAsync();
|
|
await db.insert(users).values({
|
|
id: defaultUserId,
|
|
name: "test",
|
|
salt,
|
|
password: await hashPasswordAsync("test", salt),
|
|
});
|
|
|
|
// Act
|
|
const result = await authorizeWithBasicCredentialsAsync(db, {
|
|
name: "test",
|
|
password: "wrong",
|
|
credentialType: "basic",
|
|
});
|
|
|
|
// Assert
|
|
expect(result).toBeNull();
|
|
});
|
|
|
|
test("should not authorize user with incorrect username", async () => {
|
|
// Arrange
|
|
const db = createDb();
|
|
const salt = await createSaltAsync();
|
|
await db.insert(users).values({
|
|
id: defaultUserId,
|
|
name: "test",
|
|
salt,
|
|
password: await hashPasswordAsync("test", salt),
|
|
});
|
|
|
|
// Act
|
|
const result = await authorizeWithBasicCredentialsAsync(db, {
|
|
name: "wrong",
|
|
password: "test",
|
|
credentialType: "basic",
|
|
});
|
|
|
|
// Assert
|
|
expect(result).toBeNull();
|
|
});
|
|
|
|
test("should not authorize user when password is not set", async () => {
|
|
// Arrange
|
|
const db = createDb();
|
|
await db.insert(users).values({
|
|
id: defaultUserId,
|
|
name: "test",
|
|
});
|
|
|
|
// Act
|
|
const result = await authorizeWithBasicCredentialsAsync(db, {
|
|
name: "test",
|
|
password: "test",
|
|
credentialType: "basic",
|
|
});
|
|
|
|
// Assert
|
|
expect(result).toBeNull();
|
|
});
|
|
});
|