90 lines
2.7 KiB
JavaScript
90 lines
2.7 KiB
JavaScript
import { loginWithFixtures } from '../support/intercept';
|
|
|
|
describe('Edge Cases', () => {
|
|
describe('Empty states', () => {
|
|
it('files page handles empty file list', () => {
|
|
loginWithFixtures();
|
|
// Override files intercept with empty array
|
|
cy.intercept('GET', '/api/files', {
|
|
statusCode: 200,
|
|
body: [],
|
|
}).as('getEmptyFiles');
|
|
cy.visit('/files');
|
|
cy.wait('@getEmptyFiles');
|
|
// Table should exist but have no file data
|
|
cy.get('table').should('exist');
|
|
cy.contains('sample-process.xes').should('not.exist');
|
|
});
|
|
|
|
it('account admin handles empty user list', () => {
|
|
loginWithFixtures();
|
|
cy.intercept('GET', '/api/users', {
|
|
statusCode: 200,
|
|
body: [],
|
|
}).as('getEmptyUsers');
|
|
cy.visit('/account-admin');
|
|
cy.wait('@getEmptyUsers');
|
|
// Create New button should still work
|
|
cy.get('#create_new_acct_btn').should('exist');
|
|
});
|
|
});
|
|
|
|
describe('Authentication guard', () => {
|
|
it('unauthenticated user is redirected to login', () => {
|
|
// No loginWithFixtures - not logged in
|
|
cy.visit('/files');
|
|
cy.url().should('include', '/login');
|
|
});
|
|
|
|
it('unauthenticated user cannot access account-admin', () => {
|
|
cy.visit('/account-admin');
|
|
cy.url().should('include', '/login');
|
|
});
|
|
|
|
it('unauthenticated user cannot access my-account', () => {
|
|
cy.visit('/my-account');
|
|
cy.url().should('include', '/login');
|
|
});
|
|
});
|
|
|
|
describe('Login validation', () => {
|
|
it('shows error on failed login', () => {
|
|
cy.intercept('POST', '/api/oauth/token', {
|
|
statusCode: 401,
|
|
body: { detail: 'Invalid credentials' },
|
|
}).as('failedLogin');
|
|
cy.visit('/login');
|
|
cy.get('#account').type('wrong');
|
|
cy.get('#password').type('wrong');
|
|
cy.get('form').submit();
|
|
cy.wait('@failedLogin');
|
|
// Should stay on login page
|
|
cy.url().should('include', '/login');
|
|
});
|
|
});
|
|
|
|
describe('Account creation validation', () => {
|
|
beforeEach(() => {
|
|
loginWithFixtures();
|
|
cy.visit('/account-admin');
|
|
cy.wait('@getUsers');
|
|
cy.get('#create_new_acct_btn').click();
|
|
});
|
|
|
|
it('confirm stays disabled with only account field filled', () => {
|
|
cy.get('#input_account_field').type('newuser');
|
|
cy.get('.confirm-btn').should('be.disabled');
|
|
});
|
|
|
|
it('confirm stays disabled with only name field filled', () => {
|
|
cy.get('#input_name_field').type('New User');
|
|
cy.get('.confirm-btn').should('be.disabled');
|
|
});
|
|
|
|
it('confirm stays disabled with only password field filled', () => {
|
|
cy.get('#input_first_pwd').type('password1234');
|
|
cy.get('.confirm-btn').should('be.disabled');
|
|
});
|
|
});
|
|
});
|