191 lines
5.0 KiB
JavaScript
191 lines
5.0 KiB
JavaScript
// The Lucia project.
|
|
// Copyright 2026-2026 DSP, inc. All rights reserved.
|
|
// Authors:
|
|
// imacat.yang@dsp.im (imacat), 2026/03/05
|
|
|
|
/**
|
|
* Sets up cy.intercept for all API endpoints using fixture files.
|
|
* Call setupApiIntercepts() in beforeEach to mock the entire backend.
|
|
*/
|
|
export function setupApiIntercepts() {
|
|
// Auth
|
|
cy.intercept("POST", "/api/oauth/token", {
|
|
fixture: "api/token.json",
|
|
}).as("postToken");
|
|
|
|
// User account
|
|
cy.intercept("GET", "/api/my-account", {
|
|
fixture: "api/my-account.json",
|
|
}).as("getMyAccount");
|
|
|
|
cy.intercept("PUT", "/api/my-account", {
|
|
statusCode: 200,
|
|
body: { success: true },
|
|
}).as("putMyAccount");
|
|
|
|
// Files
|
|
cy.intercept("GET", "/api/files", {
|
|
fixture: "api/files.json",
|
|
}).as("getFiles");
|
|
|
|
// Users (account management)
|
|
cy.intercept("GET", "/api/users", {
|
|
fixture: "api/users.json",
|
|
}).as("getUsers");
|
|
|
|
cy.intercept("POST", "/api/users", {
|
|
statusCode: 200,
|
|
body: { success: true },
|
|
}).as("postUser");
|
|
|
|
cy.intercept("DELETE", "/api/users/*", {
|
|
statusCode: 200,
|
|
body: { success: true },
|
|
}).as("deleteUser");
|
|
|
|
cy.intercept("PUT", "/api/users/*", {
|
|
statusCode: 200,
|
|
body: { success: true },
|
|
}).as("putUser");
|
|
|
|
// User detail (GET /api/users/:username)
|
|
cy.intercept("GET", "/api/users/*", {
|
|
fixture: "api/user-detail.json",
|
|
}).as("getUserDetail");
|
|
|
|
// User roles
|
|
cy.intercept("PUT", "/api/users/*/roles/*", {
|
|
statusCode: 200,
|
|
body: { success: true },
|
|
}).as("putUserRole");
|
|
|
|
cy.intercept("DELETE", "/api/users/*/roles/*", {
|
|
statusCode: 200,
|
|
body: { success: true },
|
|
}).as("deleteUserRole");
|
|
|
|
// Filter detail (for fetchFunnel when entering filter from Files)
|
|
cy.intercept("GET", /\/api\/filters\/\d+$/, {
|
|
statusCode: 200,
|
|
body: { rules: [], log: { id: 1 }, name: "filtered-sample" },
|
|
}).as("getFilterDetail");
|
|
|
|
// Discover (map data)
|
|
cy.intercept("GET", "/api/logs/*/discover", {
|
|
fixture: "api/discover.json",
|
|
}).as("getDiscover");
|
|
|
|
cy.intercept("GET", "/api/filters/*/discover", {
|
|
fixture: "api/discover.json",
|
|
}).as("getFilterDiscover");
|
|
|
|
// Performance
|
|
cy.intercept("GET", "/api/logs/*/performance", {
|
|
fixture: "api/performance.json",
|
|
}).as("getPerformance");
|
|
|
|
cy.intercept("GET", "/api/filters/*/performance", {
|
|
fixture: "api/performance.json",
|
|
}).as("getFilterPerformance");
|
|
|
|
// Traces
|
|
cy.intercept("GET", "/api/logs/*/traces", {
|
|
fixture: "api/traces.json",
|
|
}).as("getTraces");
|
|
|
|
cy.intercept("GET", "/api/filters/*/traces", {
|
|
fixture: "api/traces.json",
|
|
}).as("getFilterTraces");
|
|
|
|
// Trace detail (must be after traces list intercepts)
|
|
cy.intercept("GET", /\/api\/logs\/.*\/traces\/\d+/, {
|
|
fixture: "api/trace-detail.json",
|
|
}).as("getTraceDetail");
|
|
|
|
cy.intercept("GET", /\/api\/filters\/.*\/traces\/\d+/, {
|
|
fixture: "api/trace-detail.json",
|
|
}).as("getFilterTraceDetail");
|
|
|
|
// Temp filters
|
|
cy.intercept("GET", "/api/temp-filters/*/discover", {
|
|
fixture: "api/discover.json",
|
|
}).as("getTempFilterDiscover");
|
|
|
|
cy.intercept("GET", "/api/temp-filters/*/traces", {
|
|
fixture: "api/traces.json",
|
|
}).as("getTempFilterTraces");
|
|
|
|
// Filter params
|
|
cy.intercept("GET", "/api/filters/params*", {
|
|
statusCode: 200,
|
|
body: {},
|
|
}).as("getFilterParams");
|
|
|
|
cy.intercept("GET", "/api/filters/has-result*", {
|
|
statusCode: 200,
|
|
body: false,
|
|
}).as("getFilterHasResult");
|
|
|
|
// Conformance check params
|
|
cy.intercept("GET", "/api/log-checks/params*", {
|
|
fixture: "api/filter-params.json",
|
|
}).as("getLogCheckParams");
|
|
|
|
cy.intercept("GET", "/api/filter-checks/params*", {
|
|
fixture: "api/filter-params.json",
|
|
}).as("getFilterCheckParams");
|
|
|
|
// Compare dashboard
|
|
cy.intercept("GET", /\/api\/compare\?datasets=/, {
|
|
fixture: "api/compare.json",
|
|
}).as("getCompare");
|
|
|
|
// Dependents (for delete confirmation)
|
|
cy.intercept("GET", "/api/logs/*/dependents", {
|
|
statusCode: 200,
|
|
body: [],
|
|
}).as("getLogDependents");
|
|
|
|
cy.intercept("GET", "/api/filters/*/dependents", {
|
|
statusCode: 200,
|
|
body: [],
|
|
}).as("getFilterDependents");
|
|
|
|
cy.intercept("GET", "/api/log-checks/*/dependents", {
|
|
statusCode: 200,
|
|
body: [],
|
|
}).as("getLogCheckDependents");
|
|
|
|
cy.intercept("GET", "/api/filter-checks/*/dependents", {
|
|
statusCode: 200,
|
|
body: [],
|
|
}).as("getFilterCheckDependents");
|
|
|
|
// Rename
|
|
cy.intercept("PUT", "/api/logs/*/rename", {
|
|
statusCode: 200,
|
|
body: { success: true },
|
|
}).as("renameLog");
|
|
|
|
cy.intercept("PUT", "/api/filters/*/rename", {
|
|
statusCode: 200,
|
|
body: { success: true },
|
|
}).as("renameFilter");
|
|
|
|
// Deletion
|
|
cy.intercept("DELETE", "/api/deletion/*", {
|
|
statusCode: 200,
|
|
body: { success: true },
|
|
}).as("deleteDeletion");
|
|
}
|
|
|
|
/**
|
|
* Sets the luciaToken cookie and isLuciaLoggedIn cookie to simulate
|
|
* a logged-in state, then sets up all API intercepts.
|
|
*/
|
|
export function loginWithFixtures() {
|
|
setupApiIntercepts();
|
|
cy.setCookie("luciaToken", "fake-access-token-for-testing");
|
|
cy.setCookie("isLuciaLoggedIn", "true");
|
|
}
|