Page MenuHomeSoftware Heritage

admin.spec.js
No OneTemporary

admin.spec.js

/**
* Copyright (C) 2019 The Software Heritage developers
* See the AUTHORS file at the top-level directory of this distribution
* License: GNU Affero General Public License version 3, or any later version
* See top-level LICENSE file for more information
*/
const $ = Cypress.$;
const username = 'admin';
const password = 'admin';
const defaultRedirect = '/admin/origin/save/';
let url;
function login(username, password) {
cy.get('input[name="username"]')
.type(username)
.get('input[name="password"]')
.type(password)
.get('form')
.submit();
}
function logout() {
cy.contains('a', 'logout')
.click();
}
describe('Test Admin Login/logout', function() {
before(function() {
url = this.Urls.admin();
});
it('should redirect to default page', function() {
cy.visit(url);
login(username, password);
cy.location('pathname')
.should('be.equal', defaultRedirect);
logout();
});
it('should display admin-origin-save and deposit in sidebar', function() {
cy.visit(url);
login(username, password);
cy.get(`.sidebar a[href="${this.Urls.admin_origin_save()}"]`)
.should('be.visible');
cy.get(`.sidebar a[href="${this.Urls.admin_deposit()}"]`)
.should('be.visible');
logout();
});
it('should display username on top-right', function() {
cy.visit(url);
login(username, password);
cy.get('.swh-position-right')
.should('contain', username);
logout();
});
it('should prevent unauthorized access after logout', function() {
cy.visit(this.Urls.admin_origin_save())
.location('pathname')
.should('be.equal', '/admin/login/');
cy.visit(this.Urls.admin_deposit())
.location('pathname')
.should('be.equal', '/admin/login/');
});
it('should redirect to correct page after login', function() {
// mock calls to deposit list api to avoid possible errors
// while running the test
cy.server();
cy.route({
method: 'GET',
url: `${this.Urls.admin_deposit_list()}**`,
response: {
data: [],
recordsTotal: 0,
recordsFiltered: 0,
draw: 1
}
});
cy.visit(this.Urls.admin_deposit())
.location('search')
.should('contain', `next=${this.Urls.admin_deposit()}`);
login(username, password);
cy.location('pathname')
.should('be.equal', this.Urls.admin_deposit());
logout();
});
});
const existingRowToSelect = 'https://bitbucket.org/';
const originUrlListTestData = [
{
listType: 'authorized',
originToAdd: 'git://git.archlinux.org/',
originToRemove: 'https://github.com/'
},
{
listType: 'unauthorized',
originToAdd: 'https://random.org',
originToRemove: 'https://gitlab.com'
}
];
const capitalize = s => s.charAt(0).toUpperCase() + s.slice(1);
describe('Test Admin Origin Save Urls Filtering', function() {
beforeEach(function() {
cy.visit(this.Urls.admin_origin_save());
login(username, password);
cy.contains('a', 'Origin urls filtering')
.click()
.wait(500);
});
it(`should select or unselect a table row by clicking on it`, function() {
cy.contains(`#swh-authorized-origin-urls tr`, existingRowToSelect)
.click()
.should('have.class', 'selected')
.click()
.should('not.have.class', 'selected');
});
originUrlListTestData.forEach(testData => {
it(`should add a new origin url prefix in the ${testData.listType} list`, function() {
const tabName = capitalize(testData.listType) + ' urls';
cy.contains('a', tabName)
.click()
.wait(500);
cy.get(`#swh-${testData.listType}-origin-urls tr`).each(elt => {
if ($(elt).text() === testData.originToAdd) {
cy.get(elt).click();
cy.get(`#swh-remove-${testData.listType}-origin-url`).click();
}
});
cy.get(`#swh-${testData.listType}-url-prefix`)
.type(testData.originToAdd);
cy.get(`#swh-add-${testData.listType}-origin-url`)
.click();
cy.contains(`#swh-${testData.listType}-origin-urls tr`, testData.originToAdd)
.should('be.visible');
cy.contains('.alert-success', `The origin url prefix has been successfully added in the ${testData.listType} list.`)
.should('be.visible');
cy.get(`#swh-add-${testData.listType}-origin-url`)
.click();
cy.contains('.alert-warning', `The provided origin url prefix is already registered in the ${testData.listType} list.`)
.should('be.visible');
});
it(`should remove an origin url prefix from the ${testData.listType} list`, function() {
const tabName = capitalize(testData.listType) + ' urls';
cy.contains('a', tabName)
.click();
let originUrlMissing = true;
cy.get(`#swh-${testData.listType}-origin-urls tr`).each(elt => {
if ($(elt).text() === testData.originToRemove) {
originUrlMissing = false;
}
});
if (originUrlMissing) {
cy.get(`#swh-${testData.listType}-url-prefix`)
.type(testData.originToRemove);
cy.get(`#swh-add-${testData.listType}-origin-url`)
.click();
cy.get('.alert-dismissible button').click();
}
cy.contains(`#swh-${testData.listType}-origin-urls tr`, testData.originToRemove)
.click();
cy.get(`#swh-remove-${testData.listType}-origin-url`).click();
cy.contains(`#swh-${testData.listType}-origin-urls tr`, testData.originToRemove)
.should('not.exist');
});
});
});

File Metadata

Mime Type
text/x-asm
Expires
Thu, Jul 3, 10:49 AM (2 w, 18 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3270420

Event Timeline