/** * 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'); // 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'); }