132 lines
4.2 KiB
TypeScript
132 lines
4.2 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import {
|
|
appendAuthSourceDefaultsToUpdateRequest,
|
|
buildAuthSourceDefaultsState,
|
|
type UpdateSettingsRequest,
|
|
} from "@/api/admin/settings";
|
|
|
|
describe("admin settings auth source defaults helpers", () => {
|
|
it("builds auth source defaults state from flat settings fields", () => {
|
|
const state = buildAuthSourceDefaultsState({
|
|
auth_source_default_email_balance: 9.5,
|
|
auth_source_default_email_concurrency: 3,
|
|
auth_source_default_email_subscriptions: [
|
|
{ group_id: 1, validity_days: 30 },
|
|
],
|
|
auth_source_default_email_grant_on_signup: false,
|
|
auth_source_default_email_grant_on_first_bind: true,
|
|
auth_source_default_linuxdo_balance: 6,
|
|
auth_source_default_linuxdo_concurrency: 8,
|
|
auth_source_default_linuxdo_subscriptions: [
|
|
{ group_id: 2, validity_days: 60 },
|
|
],
|
|
auth_source_default_linuxdo_grant_on_signup: true,
|
|
auth_source_default_linuxdo_grant_on_first_bind: false,
|
|
});
|
|
|
|
expect(state.email).toEqual({
|
|
balance: 9.5,
|
|
concurrency: 3,
|
|
subscriptions: [{ group_id: 1, validity_days: 30 }],
|
|
grant_on_signup: false,
|
|
grant_on_first_bind: true,
|
|
});
|
|
expect(state.linuxdo).toEqual({
|
|
balance: 6,
|
|
concurrency: 8,
|
|
subscriptions: [{ group_id: 2, validity_days: 60 }],
|
|
grant_on_signup: true,
|
|
grant_on_first_bind: false,
|
|
});
|
|
expect(state.oidc).toEqual({
|
|
balance: 0,
|
|
concurrency: 5,
|
|
subscriptions: [],
|
|
grant_on_signup: false,
|
|
grant_on_first_bind: false,
|
|
});
|
|
expect(state.wechat).toEqual({
|
|
balance: 0,
|
|
concurrency: 5,
|
|
subscriptions: [],
|
|
grant_on_signup: false,
|
|
grant_on_first_bind: false,
|
|
});
|
|
});
|
|
|
|
it("defaults grant-on-signup to disabled when settings are missing", () => {
|
|
const state = buildAuthSourceDefaultsState({});
|
|
|
|
expect(state.email.grant_on_signup).toBe(false);
|
|
expect(state.linuxdo.grant_on_signup).toBe(false);
|
|
expect(state.oidc.grant_on_signup).toBe(false);
|
|
expect(state.wechat.grant_on_signup).toBe(false);
|
|
});
|
|
|
|
it("appends auth source defaults back onto update payload", () => {
|
|
const payload: UpdateSettingsRequest = {
|
|
site_name: "Sub2API",
|
|
};
|
|
|
|
appendAuthSourceDefaultsToUpdateRequest(payload, {
|
|
email: {
|
|
balance: 1.25,
|
|
concurrency: 2,
|
|
subscriptions: [{ group_id: 3, validity_days: 7 }],
|
|
grant_on_signup: true,
|
|
grant_on_first_bind: false,
|
|
},
|
|
linuxdo: {
|
|
balance: 0,
|
|
concurrency: 6,
|
|
subscriptions: [],
|
|
grant_on_signup: false,
|
|
grant_on_first_bind: true,
|
|
},
|
|
oidc: {
|
|
balance: 4,
|
|
concurrency: 9,
|
|
subscriptions: [{ group_id: 9, validity_days: 90 }],
|
|
grant_on_signup: true,
|
|
grant_on_first_bind: true,
|
|
},
|
|
wechat: {
|
|
balance: 2,
|
|
concurrency: 5,
|
|
subscriptions: [],
|
|
grant_on_signup: false,
|
|
grant_on_first_bind: false,
|
|
},
|
|
});
|
|
|
|
expect(payload).toMatchObject({
|
|
site_name: "Sub2API",
|
|
auth_source_default_email_balance: 1.25,
|
|
auth_source_default_email_concurrency: 2,
|
|
auth_source_default_email_subscriptions: [
|
|
{ group_id: 3, validity_days: 7 },
|
|
],
|
|
auth_source_default_email_grant_on_signup: true,
|
|
auth_source_default_email_grant_on_first_bind: false,
|
|
auth_source_default_linuxdo_balance: 0,
|
|
auth_source_default_linuxdo_concurrency: 6,
|
|
auth_source_default_linuxdo_subscriptions: [],
|
|
auth_source_default_linuxdo_grant_on_signup: false,
|
|
auth_source_default_linuxdo_grant_on_first_bind: true,
|
|
auth_source_default_oidc_balance: 4,
|
|
auth_source_default_oidc_concurrency: 9,
|
|
auth_source_default_oidc_subscriptions: [
|
|
{ group_id: 9, validity_days: 90 },
|
|
],
|
|
auth_source_default_oidc_grant_on_signup: true,
|
|
auth_source_default_oidc_grant_on_first_bind: true,
|
|
auth_source_default_wechat_balance: 2,
|
|
auth_source_default_wechat_concurrency: 5,
|
|
auth_source_default_wechat_subscriptions: [],
|
|
auth_source_default_wechat_grant_on_signup: false,
|
|
auth_source_default_wechat_grant_on_first_bind: false,
|
|
});
|
|
});
|
|
});
|