feat: Updated admin panel providers list & modal
This commit is contained in:
@@ -1,10 +1,22 @@
|
||||
import { describe, it, expect, beforeEach, vi } from "vitest";
|
||||
import { useAuthStore } from "../../src/stores/authStore";
|
||||
// @vitest-environment node
|
||||
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { createPinia, setActivePinia } from "pinia";
|
||||
|
||||
vi.mock("../src/services/apiClient.js", () => ({
|
||||
default: {
|
||||
get: vi.fn(),
|
||||
post: vi.fn(() => Promise.resolve({})),
|
||||
},
|
||||
}));
|
||||
|
||||
import apiClient from "../src/services/apiClient.js";
|
||||
import { useAuthStore } from "../src/stores/authStore.js";
|
||||
|
||||
describe("Auth Store", () => {
|
||||
beforeEach(() => {
|
||||
setActivePinia(createPinia());
|
||||
vi.clearAllMocks();
|
||||
});
|
||||
|
||||
it("should initialize with no user", () => {
|
||||
@@ -13,27 +25,76 @@ describe("Auth Store", () => {
|
||||
expect(store.user).toBeNull();
|
||||
});
|
||||
|
||||
it("should store user data on login", () => {
|
||||
it("should store user data with setSession", () => {
|
||||
const store = useAuthStore();
|
||||
|
||||
// Mock user data
|
||||
const mockUser = {
|
||||
id: "123",
|
||||
email: "test@example.com",
|
||||
username: "testuser",
|
||||
permissions: ["space.demo.note.create"],
|
||||
};
|
||||
|
||||
// In a real test, you'd mock the API call
|
||||
// For now, just test the store structure
|
||||
expect(store.user).toBeNull();
|
||||
store.setSession({ user: mockUser });
|
||||
|
||||
expect(store.isAuthenticated).toBe(true);
|
||||
expect(store.user).toEqual(mockUser);
|
||||
expect(store.hasPermission("space.demo.note.create")).toBe(true);
|
||||
});
|
||||
|
||||
it("should clear user data on logout", () => {
|
||||
it("should login and persist returned user", async () => {
|
||||
const store = useAuthStore();
|
||||
apiClient.post.mockResolvedValueOnce({
|
||||
data: {
|
||||
user: {
|
||||
id: "123",
|
||||
email: "test@example.com",
|
||||
username: "testuser",
|
||||
permissions: [],
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const result = await store.login(" test@example.com ", "password123");
|
||||
|
||||
expect(apiClient.post).toHaveBeenCalledWith("/api/v1/auth/login", {
|
||||
email: "test@example.com",
|
||||
password: "password123",
|
||||
});
|
||||
expect(result.user.username).toBe("testuser");
|
||||
expect(store.user?.username).toBe("testuser");
|
||||
});
|
||||
|
||||
it("should clear user data on logout", async () => {
|
||||
const store = useAuthStore();
|
||||
store.setSession({
|
||||
user: {
|
||||
id: "123",
|
||||
email: "test@example.com",
|
||||
username: "testuser",
|
||||
permissions: ["space.demo.settings.delete"],
|
||||
},
|
||||
});
|
||||
|
||||
store.logout();
|
||||
|
||||
expect(store.isAuthenticated).toBe(false);
|
||||
expect(store.user).toBeNull();
|
||||
expect(store.accessToken).toBeNull();
|
||||
expect(apiClient.post).toHaveBeenCalledWith("/api/v1/auth/logout");
|
||||
});
|
||||
|
||||
it("should evaluate space permissions using the space permission key", () => {
|
||||
const store = useAuthStore();
|
||||
store.setSession({
|
||||
user: {
|
||||
id: "123",
|
||||
email: "test@example.com",
|
||||
username: "testuser",
|
||||
permissions: ["space.docs.settings.delete", "space.*.note.create"],
|
||||
},
|
||||
});
|
||||
|
||||
expect(store.hasSpacePermission({ permission_key: "docs" }, "settings.delete")).toBe(true);
|
||||
expect(store.hasSpacePermission({ permission_key: "docs" }, "note.create")).toBe(true);
|
||||
expect(store.hasSpacePermission({ permission_key: "docs" }, "note.delete")).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user