Cypress. Dummy cloud storages. (#3988)
* Creted dummy cloud storages. * Add dummy per CS. Writing new test. * Disabling for Firefox * Code refactoring. * Some rework * Apply comments * Apply comments * Rename function. Add check tooltip text. Co-authored-by: dvkruchinin <dvkruchinin@gmail.com>main
parent
8cdd5d6a47
commit
e45d57b9e0
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 9.6 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
@ -0,0 +1,223 @@
|
||||
// Copyright (C) 2021 Intel Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
/// <reference types="cypress" />
|
||||
|
||||
const {
|
||||
dummyGoogleStorage,
|
||||
dummyAzureContainer,
|
||||
dummyAWSBucket,
|
||||
} = require('../../support/dummy-data');
|
||||
|
||||
context('Dummy cloud storages.', { browser: '!firefox' }, () => {
|
||||
const caseId = '109';
|
||||
const imageFolder = '../integration/actions_tasks3/assets/case_109';
|
||||
|
||||
function testListDummyCloudStorages(dummyCS) {
|
||||
cy.intercept('GET', 'api/v1/cloudstorages?page_size=12&page=1', dummyCS).as('listCS');
|
||||
cy.contains('.cvat-header-button', 'Cloud Storages').should('be.visible').click();
|
||||
cy.wait('@listCS').its('response.statusCode').should('eq', 200);
|
||||
cy.get('.cvat-cloud-storage-item-empty-preview').should('have.length', 1);
|
||||
}
|
||||
|
||||
function testCheckAndCloseNotification() {
|
||||
// Check and close notifications
|
||||
cy.get('.cvat-notification-notice-fetch-cloud-storage-status-failed').should('have.length', 1);
|
||||
cy.closeNotification('.cvat-notification-notice-fetch-cloud-storage-status-failed');
|
||||
cy.get('.cvat-notification-notice-fetch-cloud-storage-preview-failed').should('have.length', 1);
|
||||
cy.closeNotification('.cvat-notification-notice-fetch-cloud-storage-preview-failed');
|
||||
}
|
||||
|
||||
function testCSValues({
|
||||
status, id, displayName, provider, description,
|
||||
}) {
|
||||
cy.get('.cvat-cloud-storage-item').then((csItem) => {
|
||||
cy.get(csItem)
|
||||
.should('have.length', 1)
|
||||
.should('contain', `Status: ${status}`);
|
||||
if (description) {
|
||||
cy.get('.cvat-cloud-storage-description-icon')
|
||||
.should('have.length', 1)
|
||||
.trigger('mouseover');
|
||||
cy.get('[role="tooltip"]')
|
||||
.should('be.visible')
|
||||
.and('have.text', description);
|
||||
}
|
||||
if (displayName) {
|
||||
cy.get(csItem).should('contain', `#${id}: ${displayName}`);
|
||||
}
|
||||
if (provider) {
|
||||
cy.get(csItem).should('contain', `Provider: ${provider}`);
|
||||
}
|
||||
if (status !== 'Error') {
|
||||
cy.get(csItem).should('exist');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function testCSSetStatusPreview(id, status, image) {
|
||||
cy.intercept('GET', `api/v1/cloudstorages/${id}/status`, status).as('csStatus');
|
||||
cy.intercept(
|
||||
'GET',
|
||||
`api/v1/cloudstorages/${id}/preview`,
|
||||
{ fixture: `${imageFolder}/${image}` },
|
||||
).as('csPreview');
|
||||
|
||||
cy.contains('.cvat-header-button', 'Models').should('be.visible').click();
|
||||
cy.contains('.cvat-header-button', 'Cloud Storages').should('be.visible').click();
|
||||
|
||||
cy.wait('@csStatus').its('response.statusCode').should('eq', 200);
|
||||
cy.wait('@csPreview').its('response.statusCode').should('eq', 200);
|
||||
}
|
||||
|
||||
function testGoToCSUpdatePage() {
|
||||
cy.get('.cvat-cloud-storage-item-menu-button').trigger('mousemove').trigger('mouseover');
|
||||
cy.get('.ant-dropdown')
|
||||
.not('.ant-dropdown-hidden')
|
||||
.within(() => {
|
||||
cy.contains('[role="menuitem"]', 'Update').click();
|
||||
});
|
||||
|
||||
cy.get('.cvat-notification-update-info-cloud-storage').should('exist');
|
||||
|
||||
cy.get('.cvat-cloud-storage-form').should('be.visible');
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
cy.visit('auth/login');
|
||||
cy.login();
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
cy.logout();
|
||||
});
|
||||
|
||||
describe(`Testing case "${caseId}"`, () => {
|
||||
it('Create dummy Google Cloud Storage and check fields.', () => {
|
||||
testListDummyCloudStorages(dummyGoogleStorage);
|
||||
testCheckAndCloseNotification();
|
||||
testCSValues({
|
||||
status: 'Error',
|
||||
id: 3,
|
||||
displayName: 'Demo GCS',
|
||||
provider: 'GOOGLE_CLOUD_STORAGE',
|
||||
description: 'It is first google cloud storage',
|
||||
});
|
||||
testCSSetStatusPreview(3, 'NOT_FOUND', 'preview_GOOGLE_CLOUD_STORAGE.png');
|
||||
testCSValues({
|
||||
status: 'NOT_FOUND',
|
||||
});
|
||||
testGoToCSUpdatePage();
|
||||
|
||||
cy.get('#display_name')
|
||||
.should('be.visible')
|
||||
.and('have.value', 'Demo GCS');
|
||||
cy.get('#description')
|
||||
.should('be.visible')
|
||||
.and('have.value', 'It is first google cloud storage');
|
||||
cy.get('#provider_type').should('be.disabled');
|
||||
cy.get('.cvat-cloud-storage-select-provider')
|
||||
.should('be.visible')
|
||||
.and('have.text', 'Google Cloud Storage');
|
||||
cy.get('#resource')
|
||||
.should('be.disabled')
|
||||
.and('have.attr', 'value', 'gcsbucket');
|
||||
cy.get('[title="Key file"]').should('be.visible');
|
||||
cy.get('#key_file').should('be.visible');
|
||||
cy.get('[title="fakeKey.json"]').should('be.visible');
|
||||
cy.get('#prefix')
|
||||
.should('be.visible')
|
||||
.and('have.value', '');
|
||||
cy.get('#project_id')
|
||||
.should('be.visible')
|
||||
.and('have.value', '');
|
||||
cy.get('#location').should('exist');
|
||||
cy.get('[placeholder="manifest.jsonl"]')
|
||||
.should('have.attr', 'value', 'manifest.jsonl');
|
||||
});
|
||||
|
||||
it('Create dummy Azure Blob Container and check fields.', () => {
|
||||
testListDummyCloudStorages(dummyAzureContainer);
|
||||
testCheckAndCloseNotification();
|
||||
testCSValues({
|
||||
status: 'Error',
|
||||
id: 2,
|
||||
displayName: 'Demonstration container',
|
||||
provider: 'AZURE_CONTAINER',
|
||||
description: 'It is first container',
|
||||
});
|
||||
testCSSetStatusPreview(2, 'AVAILABLE', 'preview_AZURE_CONTAINER.png');
|
||||
testCSValues({
|
||||
status: 'AVAILABLE',
|
||||
});
|
||||
testGoToCSUpdatePage();
|
||||
|
||||
cy.get('#display_name')
|
||||
.should('be.visible')
|
||||
.and('have.value', 'Demonstration container');
|
||||
cy.get('#description')
|
||||
.should('be.visible')
|
||||
.and('have.value', 'It is first container');
|
||||
cy.get('#provider_type').should('be.disabled');
|
||||
cy.get('.cvat-cloud-storage-select-provider')
|
||||
.should('be.visible')
|
||||
.and('have.text', 'Azure Blob Container');
|
||||
cy.get('#resource')
|
||||
.should('be.disabled')
|
||||
.should('be.visible')
|
||||
.and('have.attr', 'value', 'container');
|
||||
cy.get('[title="Account name and SAS token"]').should('be.visible');
|
||||
cy.get('#account_name')
|
||||
.should('be.visible')
|
||||
.and('not.have.value', '');
|
||||
cy.get('#SAS_token')
|
||||
.should('be.visible')
|
||||
.and('not.have.value', '');
|
||||
cy.get('[placeholder="manifest.jsonl"]')
|
||||
.should('have.attr', 'value', 'manifest.jsonl');
|
||||
});
|
||||
|
||||
it('Create dummy AWS S3 and check fields.', () => {
|
||||
testListDummyCloudStorages(dummyAWSBucket);
|
||||
testCheckAndCloseNotification();
|
||||
testCSValues({
|
||||
status: 'Error',
|
||||
id: 1,
|
||||
displayName: 'Demonstration bucket',
|
||||
provider: 'AWS_S3_BUCKET',
|
||||
description: 'It is first bucket',
|
||||
});
|
||||
testCSSetStatusPreview(1, 'FORBIDDEN', 'preview_AWS_S3_BUCKET.png');
|
||||
testCSValues({
|
||||
status: 'FORBIDDEN',
|
||||
});
|
||||
testGoToCSUpdatePage();
|
||||
|
||||
cy.get('#display_name')
|
||||
.should('be.visible')
|
||||
.and('have.value', 'Demonstration bucket');
|
||||
cy.get('#description')
|
||||
.should('be.visible')
|
||||
.and('have.value', 'It is first bucket');
|
||||
cy.get('#provider_type').should('be.disabled');
|
||||
cy.get('.cvat-cloud-storage-select-provider')
|
||||
.should('be.visible')
|
||||
.and('have.text', 'AWS S3');
|
||||
cy.get('#resource')
|
||||
.should('be.disabled')
|
||||
.should('be.visible')
|
||||
.and('have.attr', 'value', 'bucket');
|
||||
cy.get('[title="Key id and secret access key pair"]').should('be.visible');
|
||||
cy.get('#key')
|
||||
.should('be.visible')
|
||||
.and('not.have.value', '');
|
||||
cy.get('#secret_key')
|
||||
.should('be.visible')
|
||||
.and('not.have.value', '');
|
||||
cy.get('#region').should('exist');
|
||||
cy.get('[placeholder="manifest.jsonl"]')
|
||||
.should('have.attr', 'value', 'manifest.jsonl');
|
||||
});
|
||||
});
|
||||
});
|
||||
@ -0,0 +1,96 @@
|
||||
// Copyright (C) 2021 Intel Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
const dummyGoogleStorage = {
|
||||
count: 1,
|
||||
next: null,
|
||||
previous: null,
|
||||
results: [
|
||||
{
|
||||
id: 3,
|
||||
owner: {
|
||||
url: 'http://localhost:7000/api/v1/users/1',
|
||||
id: 1,
|
||||
username: 'maya',
|
||||
first_name: '',
|
||||
last_name: '',
|
||||
},
|
||||
manifests: [
|
||||
'manifest.jsonl',
|
||||
],
|
||||
provider_type: 'GOOGLE_CLOUD_STORAGE',
|
||||
resource: 'gcsbucket',
|
||||
display_name: 'Demo GCS',
|
||||
created_date: '2021-09-01T09:29:47.094244Z',
|
||||
updated_date: '2021-09-01T09:29:47.103264Z',
|
||||
credentials_type: 'KEY_FILE_PATH',
|
||||
specific_attributes: '',
|
||||
description: 'It is first google cloud storage',
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const dummyAzureContainer = {
|
||||
count: 1,
|
||||
next: null,
|
||||
previous: null,
|
||||
results: [
|
||||
{
|
||||
id: 2,
|
||||
owner: {
|
||||
url: 'http://localhost:7000/api/v1/users/1',
|
||||
id: 1,
|
||||
username: 'maya',
|
||||
first_name: '',
|
||||
last_name: '',
|
||||
},
|
||||
manifests: [
|
||||
'manifest.jsonl',
|
||||
],
|
||||
provider_type: 'AZURE_CONTAINER',
|
||||
resource: 'container',
|
||||
display_name: 'Demonstration container',
|
||||
created_date: '2021-09-01T09:29:47.094244Z',
|
||||
updated_date: '2021-09-01T09:29:47.103264Z',
|
||||
credentials_type: 'ACCOUNT_NAME_TOKEN_PAIR',
|
||||
specific_attributes: '',
|
||||
description: 'It is first container',
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
const dummyAWSBucket = {
|
||||
count: 1,
|
||||
next: null,
|
||||
previous: null,
|
||||
results: [
|
||||
{
|
||||
id: 1,
|
||||
owner: {
|
||||
url: 'http://localhost:7000/api/v1/users/1',
|
||||
id: 1,
|
||||
username: 'maya',
|
||||
first_name: '',
|
||||
last_name: '',
|
||||
},
|
||||
manifests: [
|
||||
'manifest.jsonl',
|
||||
],
|
||||
provider_type: 'AWS_S3_BUCKET',
|
||||
resource: 'bucket',
|
||||
display_name: 'Demonstration bucket',
|
||||
created_date: '2021-08-31T09:03:09.350817Z',
|
||||
updated_date: '2021-08-31T15:16:21.394773Z',
|
||||
credentials_type: 'KEY_SECRET_KEY_PAIR',
|
||||
specific_attributes: '',
|
||||
description: 'It is first bucket',
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
dummyGoogleStorage,
|
||||
dummyAzureContainer,
|
||||
dummyAWSBucket,
|
||||
};
|
||||
Loading…
Reference in New Issue