mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-10-29 09:42:23 +00:00
cypress: AUT cypress failure part 1 (#16222)
* cypress: AUT cypress failure part 1 * fixed failing cypress and skip airflow ingestion cypress * fixed test * addressing comment * fixed failing cypress * updated api wait * reverting skip test and config change * added License
This commit is contained in:
parent
e4add9ea6e
commit
84f3f4ef8b
@ -14,8 +14,8 @@ import { defineConfig } from 'cypress';
|
|||||||
import plugins from './cypress/plugins/index.js';
|
import plugins from './cypress/plugins/index.js';
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
viewportWidth: 1240,
|
viewportWidth: 1440,
|
||||||
viewportHeight: 660,
|
viewportHeight: 768,
|
||||||
watchForFileChanges: false,
|
watchForFileChanges: false,
|
||||||
videoUploadOnPasses: false,
|
videoUploadOnPasses: false,
|
||||||
defaultCommandTimeout: 5000,
|
defaultCommandTimeout: 5000,
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
import { uuid } from '../../constants/constants';
|
import { uuid } from '../../constants/constants';
|
||||||
import { CustomPropertySupportedEntityList } from '../../constants/CustomProperty.constant';
|
import { CustomPropertySupportedEntityList } from '../../constants/CustomProperty.constant';
|
||||||
import { EntityType, ENTITY_PATH } from '../../constants/Entity.interface';
|
import { ENTITY_PATH, EntityType } from '../../constants/Entity.interface';
|
||||||
import {
|
import {
|
||||||
createAnnouncement as createAnnouncementUtil,
|
createAnnouncement as createAnnouncementUtil,
|
||||||
createInactiveAnnouncement as createInactiveAnnouncementUtil,
|
createInactiveAnnouncement as createInactiveAnnouncementUtil,
|
||||||
|
|||||||
@ -22,7 +22,7 @@ const assignee = 'adam.matthews2';
|
|||||||
const secondAssignee = 'aaron_johnson0';
|
const secondAssignee = 'aaron_johnson0';
|
||||||
|
|
||||||
export type TaskDetails = {
|
export type TaskDetails = {
|
||||||
assignee: string;
|
assignee?: string;
|
||||||
term: string;
|
term: string;
|
||||||
displayName?: string;
|
displayName?: string;
|
||||||
entity?: string;
|
entity?: string;
|
||||||
|
|||||||
@ -422,10 +422,7 @@ export const deleteEntity = (
|
|||||||
cy.get('[role="dialog"]').should('be.visible');
|
cy.get('[role="dialog"]').should('be.visible');
|
||||||
});
|
});
|
||||||
|
|
||||||
cy.get('[data-testid="delete-modal"] .ant-modal-title').should(
|
cy.get('.ant-modal-title').should('contain', displayName);
|
||||||
'contain',
|
|
||||||
displayName
|
|
||||||
);
|
|
||||||
|
|
||||||
cy.get('[data-testid="confirmation-text-input"]').type(DELETE_TERM);
|
cy.get('[data-testid="confirmation-text-input"]').type(DELETE_TERM);
|
||||||
|
|
||||||
|
|||||||
@ -20,6 +20,11 @@ export const assignGlossaryTerm = (
|
|||||||
endPoint: EntityType
|
endPoint: EntityType
|
||||||
) => {
|
) => {
|
||||||
interceptURL('PATCH', `/api/v1/${endPoint}/*`, 'addGlossaryTerm');
|
interceptURL('PATCH', `/api/v1/${endPoint}/*`, 'addGlossaryTerm');
|
||||||
|
interceptURL(
|
||||||
|
'GET',
|
||||||
|
`/api/v1/search/query?*index=glossary_term_search_index*`,
|
||||||
|
'searchGlossaryTerm'
|
||||||
|
);
|
||||||
cy.get(
|
cy.get(
|
||||||
'[data-testid="entity-right-panel"] [data-testid="glossary-container"] [data-testid="add-tag"]'
|
'[data-testid="entity-right-panel"] [data-testid="glossary-container"] [data-testid="add-tag"]'
|
||||||
).click();
|
).click();
|
||||||
@ -27,16 +32,17 @@ export const assignGlossaryTerm = (
|
|||||||
cy.get('[data-testid="tag-selector"] input')
|
cy.get('[data-testid="tag-selector"] input')
|
||||||
.should('be.visible')
|
.should('be.visible')
|
||||||
.type(glossaryTermName);
|
.type(glossaryTermName);
|
||||||
|
verifyResponseStatusCode('@searchGlossaryTerm', 200);
|
||||||
|
|
||||||
cy.get(
|
cy.get(
|
||||||
`[data-testid="tag-${glossaryTermFQN}"] .ant-select-tree-checkbox`
|
`[data-testid="tag-${glossaryTermFQN}"] .ant-select-tree-checkbox`
|
||||||
).click();
|
).click();
|
||||||
|
|
||||||
cy.get(
|
cy.get(`[data-testid="selected-tag-${glossaryTermFQN}"]`).should(
|
||||||
`[data-testid="tag-selector"] [data-testid="selected-tag-${glossaryTermFQN}"]`
|
'be.visible'
|
||||||
).should('be.visible');
|
);
|
||||||
|
|
||||||
cy.get('[data-testid="saveAssociatedTag"]').scrollIntoView().click();
|
cy.get('[data-testid="saveAssociatedTag"]').click();
|
||||||
verifyResponseStatusCode('@addGlossaryTerm', 200);
|
verifyResponseStatusCode('@addGlossaryTerm', 200);
|
||||||
cy.get(
|
cy.get(
|
||||||
`[data-testid="entity-right-panel"] [data-testid="glossary-container"] [data-testid="tag-${glossaryTermFQN}"]`
|
`[data-testid="entity-right-panel"] [data-testid="glossary-container"] [data-testid="tag-${glossaryTermFQN}"]`
|
||||||
@ -49,6 +55,11 @@ export const updateGlossaryTerm = (
|
|||||||
endPoint: EntityType
|
endPoint: EntityType
|
||||||
) => {
|
) => {
|
||||||
interceptURL('PATCH', `/api/v1/${endPoint}/*`, 'addGlossaryTerm');
|
interceptURL('PATCH', `/api/v1/${endPoint}/*`, 'addGlossaryTerm');
|
||||||
|
interceptURL(
|
||||||
|
'GET',
|
||||||
|
`/api/v1/search/query?*index=glossary_term_search_index*`,
|
||||||
|
'searchGlossaryTerm'
|
||||||
|
);
|
||||||
cy.get(
|
cy.get(
|
||||||
'[data-testid="entity-right-panel"] [data-testid="glossary-container"] [data-testid="edit-button"]'
|
'[data-testid="entity-right-panel"] [data-testid="glossary-container"] [data-testid="edit-button"]'
|
||||||
).click();
|
).click();
|
||||||
@ -56,13 +67,14 @@ export const updateGlossaryTerm = (
|
|||||||
cy.get('[data-testid="tag-selector"] input')
|
cy.get('[data-testid="tag-selector"] input')
|
||||||
.should('be.visible')
|
.should('be.visible')
|
||||||
.type(glossaryTermName);
|
.type(glossaryTermName);
|
||||||
|
verifyResponseStatusCode('@searchGlossaryTerm', 200);
|
||||||
|
|
||||||
cy.get(`[data-testid="tag-${glossaryTermFQN}"]`).click();
|
cy.get(`[data-testid="tag-${glossaryTermFQN}"]`).click();
|
||||||
|
|
||||||
cy.get(
|
cy.get(`[data-testid="selected-tag-${glossaryTermFQN}"]`).should(
|
||||||
`[data-testid="tag-selector"] [data-testid="selected-tag-${glossaryTermFQN}"]`
|
'be.visible'
|
||||||
).should('be.visible');
|
);
|
||||||
cy.get('[data-testid="saveAssociatedTag"]').scrollIntoView().click();
|
cy.get('[data-testid="saveAssociatedTag"]').click();
|
||||||
verifyResponseStatusCode('@addGlossaryTerm', 200);
|
verifyResponseStatusCode('@addGlossaryTerm', 200);
|
||||||
cy.get(
|
cy.get(
|
||||||
`[data-testid="entity-right-panel"] [data-testid="glossary-container"] [data-testid="tag-${glossaryTermFQN}"]`
|
`[data-testid="entity-right-panel"] [data-testid="glossary-container"] [data-testid="tag-${glossaryTermFQN}"]`
|
||||||
@ -77,6 +89,7 @@ export const removeGlossaryTerm = (
|
|||||||
? inputGlossaryTerm
|
? inputGlossaryTerm
|
||||||
: [inputGlossaryTerm];
|
: [inputGlossaryTerm];
|
||||||
interceptURL('PATCH', `/api/v1/${endPoint}/*`, 'removeTags');
|
interceptURL('PATCH', `/api/v1/${endPoint}/*`, 'removeTags');
|
||||||
|
interceptURL('GET', `/api/v1/glossaries?*`, 'fetchGlossaries');
|
||||||
glossaryTerms.forEach((glossaryTerm) => {
|
glossaryTerms.forEach((glossaryTerm) => {
|
||||||
cy.get(
|
cy.get(
|
||||||
'[data-testid="entity-right-panel"] [data-testid="glossary-container"] [data-testid="edit-button"]'
|
'[data-testid="entity-right-panel"] [data-testid="glossary-container"] [data-testid="edit-button"]'
|
||||||
@ -87,8 +100,12 @@ export const removeGlossaryTerm = (
|
|||||||
`[data-testid="selected-tag-${glossaryTerm}"] [data-testid="remove-tags"]`
|
`[data-testid="selected-tag-${glossaryTerm}"] [data-testid="remove-tags"]`
|
||||||
).click();
|
).click();
|
||||||
|
|
||||||
cy.get('[data-testid="saveAssociatedTag"]').scrollIntoView().click();
|
verifyResponseStatusCode('@fetchGlossaries', 200);
|
||||||
verifyResponseStatusCode('@removeTags', 200);
|
|
||||||
|
cy.get('[data-testid="saveAssociatedTag"]').click();
|
||||||
|
verifyResponseStatusCode('@removeTags', 200, {
|
||||||
|
requestTimeout: 15000,
|
||||||
|
});
|
||||||
});
|
});
|
||||||
cy.get(
|
cy.get(
|
||||||
'[data-testid="entity-right-panel"] [data-testid="glossary-container"] [data-testid="add-tag"]'
|
'[data-testid="entity-right-panel"] [data-testid="glossary-container"] [data-testid="add-tag"]'
|
||||||
|
|||||||
@ -53,6 +53,11 @@ export const handleIngestionRetry = (count = 0, ingestionType = 'metadata') => {
|
|||||||
responseTimeout: 50000,
|
responseTimeout: 50000,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cy.contains('td', `${ingestionType}`) // find the element with the text
|
||||||
|
.parent('tr') // find the parent 'tr'
|
||||||
|
.find('[data-testid="run"]')
|
||||||
|
.click();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const checkSuccessState = () => {
|
const checkSuccessState = () => {
|
||||||
|
|||||||
@ -0,0 +1,168 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2024 Collate.
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
import { uuid } from '../common';
|
||||||
|
|
||||||
|
type RoleType = {
|
||||||
|
name: string;
|
||||||
|
policies: string[];
|
||||||
|
id?: string;
|
||||||
|
};
|
||||||
|
type OrganizationTeamType = {
|
||||||
|
id: string;
|
||||||
|
policies: {
|
||||||
|
id: string;
|
||||||
|
type: string;
|
||||||
|
}[];
|
||||||
|
defaultRoles: {
|
||||||
|
id: string;
|
||||||
|
type: string;
|
||||||
|
}[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export const DATA_CONSUMER_POLICY = {
|
||||||
|
name: `cy-data-consumer-policy-${uuid()}`,
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
name: `cy-data-consumer-rule-${uuid()}`,
|
||||||
|
resources: ['All'],
|
||||||
|
operations: ['EditDescription', 'EditTags', 'ViewAll'],
|
||||||
|
effect: 'allow',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
export const DATA_STEWARD_POLICY = {
|
||||||
|
name: `cy-data-steward-policy-${uuid()}`,
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
name: `cy-data-steward-rule-${uuid()}`,
|
||||||
|
resources: ['All'],
|
||||||
|
operations: [
|
||||||
|
'EditDescription',
|
||||||
|
'EditDisplayName',
|
||||||
|
'EditLineage',
|
||||||
|
'EditOwner',
|
||||||
|
'EditTags',
|
||||||
|
'ViewAll',
|
||||||
|
],
|
||||||
|
effect: 'allow',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
const policyId: string[] = [];
|
||||||
|
|
||||||
|
export const DATA_CONSUMER_ROLE: RoleType = {
|
||||||
|
name: `cy-data-consumer-role-${uuid()}`,
|
||||||
|
policies: [DATA_CONSUMER_POLICY.name],
|
||||||
|
};
|
||||||
|
export const DATA_STEWARD_ROLE: RoleType = {
|
||||||
|
name: `cy-data-steward-role-${uuid()}`,
|
||||||
|
policies: [DATA_STEWARD_POLICY.name],
|
||||||
|
};
|
||||||
|
export let organizationTeam = {} as OrganizationTeamType;
|
||||||
|
|
||||||
|
export const createRoleViaREST = ({ token }) => {
|
||||||
|
cy.request({
|
||||||
|
method: 'POST',
|
||||||
|
url: `/api/v1/policies`,
|
||||||
|
headers: { Authorization: `Bearer ${token}` },
|
||||||
|
body: DATA_CONSUMER_POLICY,
|
||||||
|
}).then((policyResponse) => {
|
||||||
|
policyId.push(policyResponse.body.id);
|
||||||
|
cy.request({
|
||||||
|
method: 'POST',
|
||||||
|
url: `/api/v1/roles`,
|
||||||
|
headers: { Authorization: `Bearer ${token}` },
|
||||||
|
body: DATA_CONSUMER_ROLE,
|
||||||
|
}).then((roleResponse) => {
|
||||||
|
DATA_CONSUMER_ROLE.id = roleResponse.body.id;
|
||||||
|
cy.request({
|
||||||
|
method: 'GET',
|
||||||
|
url: `/api/v1/teams/name/Organization?fields=defaultRoles,policies`,
|
||||||
|
headers: { Authorization: `Bearer ${token}` },
|
||||||
|
}).then((orgResponse) => {
|
||||||
|
organizationTeam = orgResponse.body;
|
||||||
|
cy.request({
|
||||||
|
method: 'PATCH',
|
||||||
|
url: `/api/v1/teams/${orgResponse.body.id}`,
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${token}`,
|
||||||
|
'Content-Type': 'application/json-patch+json',
|
||||||
|
},
|
||||||
|
body: [
|
||||||
|
{
|
||||||
|
op: 'replace',
|
||||||
|
path: '/defaultRoles',
|
||||||
|
value: [
|
||||||
|
{
|
||||||
|
id: roleResponse.body.id,
|
||||||
|
type: 'role',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
cy.request({
|
||||||
|
method: 'POST',
|
||||||
|
url: `/api/v1/policies`,
|
||||||
|
headers: { Authorization: `Bearer ${token}` },
|
||||||
|
body: DATA_STEWARD_POLICY,
|
||||||
|
}).then((policyResponse) => {
|
||||||
|
policyId.push(policyResponse.body.id);
|
||||||
|
cy.request({
|
||||||
|
method: 'POST',
|
||||||
|
url: `/api/v1/roles`,
|
||||||
|
headers: { Authorization: `Bearer ${token}` },
|
||||||
|
body: DATA_STEWARD_ROLE,
|
||||||
|
}).then((roleResponse) => {
|
||||||
|
DATA_STEWARD_ROLE.id = roleResponse.body.id;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const cleanupPolicies = ({ token }) => {
|
||||||
|
[DATA_CONSUMER_ROLE, DATA_STEWARD_ROLE].forEach((role) => {
|
||||||
|
cy.request({
|
||||||
|
method: 'DELETE',
|
||||||
|
url: `/api/v1/roles/${role.id}?hardDelete=true&recursive=false`,
|
||||||
|
headers: { Authorization: `Bearer ${token}` },
|
||||||
|
});
|
||||||
|
});
|
||||||
|
policyId.forEach((id) => {
|
||||||
|
cy.request({
|
||||||
|
method: 'DELETE',
|
||||||
|
url: `/api/v1/policies/${id}?hardDelete=true&recursive=false`,
|
||||||
|
headers: { Authorization: `Bearer ${token}` },
|
||||||
|
});
|
||||||
|
});
|
||||||
|
cy.request({
|
||||||
|
method: 'PATCH',
|
||||||
|
url: `/api/v1/teams/${organizationTeam.id}`,
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${token}`,
|
||||||
|
'Content-Type': 'application/json-patch+json',
|
||||||
|
},
|
||||||
|
body: [
|
||||||
|
{
|
||||||
|
op: 'add',
|
||||||
|
path: '/defaultRoles',
|
||||||
|
value: organizationTeam.defaultRoles,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
};
|
||||||
@ -196,6 +196,7 @@ export const testConnection = () => {
|
|||||||
// added extra buffer time as deleteWorkflow API can take up to 2 minute or more to send request
|
// added extra buffer time as deleteWorkflow API can take up to 2 minute or more to send request
|
||||||
verifyResponseStatusCode('@deleteWorkflow', 200, {
|
verifyResponseStatusCode('@deleteWorkflow', 200, {
|
||||||
requestTimeout: 150000,
|
requestTimeout: 150000,
|
||||||
|
responseTimeout: 50000,
|
||||||
});
|
});
|
||||||
cy.get('.ant-modal-footer > .ant-btn-primary')
|
cy.get('.ant-modal-footer > .ant-btn-primary')
|
||||||
.should('exist')
|
.should('exist')
|
||||||
|
|||||||
@ -16,6 +16,11 @@ import { interceptURL, verifyResponseStatusCode } from '../common';
|
|||||||
|
|
||||||
export const assignTags = (tag: string, endPoint: EntityType) => {
|
export const assignTags = (tag: string, endPoint: EntityType) => {
|
||||||
interceptURL('PATCH', `/api/v1/${endPoint}/*`, 'addTags');
|
interceptURL('PATCH', `/api/v1/${endPoint}/*`, 'addTags');
|
||||||
|
interceptURL(
|
||||||
|
'GET',
|
||||||
|
`/api/v1/search/query?*index=tag_search_index*`,
|
||||||
|
'searchTags'
|
||||||
|
);
|
||||||
cy.get(
|
cy.get(
|
||||||
'[data-testid="entity-right-panel"] [data-testid="tags-container"] [data-testid="add-tag"]'
|
'[data-testid="entity-right-panel"] [data-testid="tags-container"] [data-testid="add-tag"]'
|
||||||
)
|
)
|
||||||
@ -23,6 +28,7 @@ export const assignTags = (tag: string, endPoint: EntityType) => {
|
|||||||
.click();
|
.click();
|
||||||
|
|
||||||
cy.get('[data-testid="tag-selector"] input').should('be.visible').type(tag);
|
cy.get('[data-testid="tag-selector"] input').should('be.visible').type(tag);
|
||||||
|
verifyResponseStatusCode('@searchTags', 200);
|
||||||
|
|
||||||
cy.get(`[data-testid="tag-${tag}"]`).scrollIntoView().click();
|
cy.get(`[data-testid="tag-${tag}"]`).scrollIntoView().click();
|
||||||
|
|
||||||
@ -30,7 +36,7 @@ export const assignTags = (tag: string, endPoint: EntityType) => {
|
|||||||
`[data-testid="tag-selector"] [data-testid="selected-tag-${tag}"]`
|
`[data-testid="tag-selector"] [data-testid="selected-tag-${tag}"]`
|
||||||
).should('be.visible');
|
).should('be.visible');
|
||||||
|
|
||||||
cy.get('[data-testid="saveAssociatedTag"]').scrollIntoView().click();
|
cy.get('[data-testid="saveAssociatedTag"]').click();
|
||||||
verifyResponseStatusCode('@addTags', 200);
|
verifyResponseStatusCode('@addTags', 200);
|
||||||
cy.get(
|
cy.get(
|
||||||
`[data-testid="entity-right-panel"] [data-testid="tags-container"] [data-testid="tag-${tag}"]`
|
`[data-testid="entity-right-panel"] [data-testid="tags-container"] [data-testid="tag-${tag}"]`
|
||||||
@ -41,6 +47,11 @@ export const assignTags = (tag: string, endPoint: EntityType) => {
|
|||||||
|
|
||||||
export const updateTags = (tag: string, endPoint: EntityType) => {
|
export const updateTags = (tag: string, endPoint: EntityType) => {
|
||||||
interceptURL('PATCH', `/api/v1/${endPoint}/*`, 'addTags');
|
interceptURL('PATCH', `/api/v1/${endPoint}/*`, 'addTags');
|
||||||
|
interceptURL(
|
||||||
|
'GET',
|
||||||
|
`/api/v1/search/query?*index=tag_search_index*`,
|
||||||
|
'searchTags'
|
||||||
|
);
|
||||||
cy.get(
|
cy.get(
|
||||||
'[data-testid="entity-right-panel"] [data-testid="tags-container"] [data-testid="edit-button"]'
|
'[data-testid="entity-right-panel"] [data-testid="tags-container"] [data-testid="edit-button"]'
|
||||||
)
|
)
|
||||||
@ -48,13 +59,14 @@ export const updateTags = (tag: string, endPoint: EntityType) => {
|
|||||||
.click();
|
.click();
|
||||||
|
|
||||||
cy.get('[data-testid="tag-selector"] input').should('be.visible').type(tag);
|
cy.get('[data-testid="tag-selector"] input').should('be.visible').type(tag);
|
||||||
|
verifyResponseStatusCode('@searchTags', 200);
|
||||||
|
|
||||||
cy.get(`[data-testid="tag-${tag}"]`).scrollIntoView().click();
|
cy.get(`[data-testid="tag-${tag}"]`).scrollIntoView().click();
|
||||||
|
|
||||||
cy.get(`[data-testid="tag-selector"] [data-testid="selected-tag-${tag}"]`)
|
cy.get(`[data-testid="tag-selector"] [data-testid="selected-tag-${tag}"]`)
|
||||||
.scrollIntoView()
|
.scrollIntoView()
|
||||||
.should('be.visible');
|
.should('be.visible');
|
||||||
cy.get('[data-testid="saveAssociatedTag"]').scrollIntoView().click();
|
cy.get('[data-testid="saveAssociatedTag"]').click();
|
||||||
verifyResponseStatusCode('@addTags', 200);
|
verifyResponseStatusCode('@addTags', 200);
|
||||||
cy.get(
|
cy.get(
|
||||||
`[data-testid="entity-right-panel"] [data-testid="tags-container"] [data-testid="tag-${tag}"]`
|
`[data-testid="entity-right-panel"] [data-testid="tags-container"] [data-testid="tag-${tag}"]`
|
||||||
@ -69,6 +81,11 @@ export const removeTags = (
|
|||||||
) => {
|
) => {
|
||||||
const tags = Array.isArray(inputTag) ? inputTag : [inputTag];
|
const tags = Array.isArray(inputTag) ? inputTag : [inputTag];
|
||||||
interceptURL('PATCH', `/api/v1/${endPoint}/*`, 'removeTags');
|
interceptURL('PATCH', `/api/v1/${endPoint}/*`, 'removeTags');
|
||||||
|
interceptURL(
|
||||||
|
'GET',
|
||||||
|
`/api/v1/search/query?*index=tag_search_index*`,
|
||||||
|
'searchTags'
|
||||||
|
);
|
||||||
tags.forEach((tag) => {
|
tags.forEach((tag) => {
|
||||||
cy.get(
|
cy.get(
|
||||||
'[data-testid="entity-right-panel"] [data-testid="tags-container"] [data-testid="edit-button"]'
|
'[data-testid="entity-right-panel"] [data-testid="tags-container"] [data-testid="edit-button"]'
|
||||||
@ -77,12 +94,15 @@ export const removeTags = (
|
|||||||
.click();
|
.click();
|
||||||
|
|
||||||
// Remove all added tags
|
// Remove all added tags
|
||||||
cy.get(`[data-testid="selected-tag-${tag}"] [data-testid="remove-tags"]`)
|
cy.get(
|
||||||
.scrollIntoView()
|
`[data-testid="selected-tag-${tag}"] [data-testid="remove-tags"]`
|
||||||
.click();
|
).click();
|
||||||
|
verifyResponseStatusCode('@searchTags', 200);
|
||||||
|
|
||||||
cy.get('[data-testid="saveAssociatedTag"]').scrollIntoView().click();
|
cy.get('[data-testid="saveAssociatedTag"]').click();
|
||||||
verifyResponseStatusCode('@removeTags', 200);
|
verifyResponseStatusCode('@removeTags', 200, {
|
||||||
|
requestTimeout: 15000,
|
||||||
|
});
|
||||||
});
|
});
|
||||||
cy.get(
|
cy.get(
|
||||||
'[data-testid="entity-right-panel"] [data-testid="tags-container"] [data-testid="add-tag"]'
|
'[data-testid="entity-right-panel"] [data-testid="tags-container"] [data-testid="add-tag"]'
|
||||||
|
|||||||
@ -1083,6 +1083,7 @@ export const NEW_CLASSIFICATION_FOR_VERSION_TEST = {
|
|||||||
name: NEW_CLASSIFICATION_FOR_VERSION_TEST_NAME,
|
name: NEW_CLASSIFICATION_FOR_VERSION_TEST_NAME,
|
||||||
displayName: NEW_CLASSIFICATION_FOR_VERSION_TEST_NAME,
|
displayName: NEW_CLASSIFICATION_FOR_VERSION_TEST_NAME,
|
||||||
provider: 'system',
|
provider: 'system',
|
||||||
|
mutuallyExclusive: true,
|
||||||
description: ``,
|
description: ``,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1092,11 +1093,6 @@ export const NEW_CLASSIFICATION_PATCH_PAYLOAD = [
|
|||||||
path: '/description',
|
path: '/description',
|
||||||
value: COMMON_UPDATED_DESCRIPTION,
|
value: COMMON_UPDATED_DESCRIPTION,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
op: 'replace',
|
|
||||||
path: '/mutuallyExclusive',
|
|
||||||
value: true,
|
|
||||||
},
|
|
||||||
];
|
];
|
||||||
|
|
||||||
export const GLOSSARY_NAME_FOR_VERSION_TEST = `cy-glossary-version-${uuid()}`;
|
export const GLOSSARY_NAME_FOR_VERSION_TEST = `cy-glossary-version-${uuid()}`;
|
||||||
|
|||||||
@ -305,32 +305,39 @@ export const NEW_TAG = {
|
|||||||
color: '#FF5733',
|
color: '#FF5733',
|
||||||
icon: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF8AAACFCAMAAAAKN9SOAAAAA1BMVEXmGSCqexgYAAAAI0lEQVRoge3BMQEAAADCoPVPbQwfoAAAAAAAAAAAAAAAAHgaMeAAAUWJHZ4AAAAASUVORK5CYII=',
|
icon: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF8AAACFCAMAAAAKN9SOAAAAA1BMVEXmGSCqexgYAAAAI0lEQVRoge3BMQEAAADCoPVPbQwfoAAAAAAAAAAAAAAAAHgaMeAAAUWJHZ4AAAAASUVORK5CYII=',
|
||||||
};
|
};
|
||||||
|
const cypressGlossaryName = `Cypress Glossary ${uuid()}`;
|
||||||
|
|
||||||
export const NEW_GLOSSARY = {
|
export const NEW_GLOSSARY = {
|
||||||
name: 'Cypress Glossary',
|
name: cypressGlossaryName,
|
||||||
description: 'This is the Cypress Glossary',
|
description: 'This is the Cypress Glossary',
|
||||||
reviewer: 'Aaron Johnson',
|
reviewer: 'Aaron Johnson',
|
||||||
addReviewer: true,
|
addReviewer: true,
|
||||||
tag: 'PersonalData.Personal',
|
tag: 'PersonalData.Personal',
|
||||||
isMutually: true,
|
isMutually: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const cypressProductGlossaryName = `Cypress Product%Glossary ${uuid()}`;
|
||||||
|
|
||||||
export const NEW_GLOSSARY_1 = {
|
export const NEW_GLOSSARY_1 = {
|
||||||
name: 'Cypress Product%Glossary',
|
name: cypressProductGlossaryName,
|
||||||
description: 'This is the Product glossary with percentage',
|
description: 'This is the Product glossary with percentage',
|
||||||
reviewer: 'Brandy Miller',
|
reviewer: 'Brandy Miller',
|
||||||
addReviewer: false,
|
addReviewer: false,
|
||||||
};
|
};
|
||||||
|
const cypressAssetsGlossaryName = `Cypress Assets Glossary ${uuid()}`;
|
||||||
|
|
||||||
export const CYPRESS_ASSETS_GLOSSARY = {
|
export const CYPRESS_ASSETS_GLOSSARY = {
|
||||||
name: 'Cypress Assets Glossary',
|
name: cypressAssetsGlossaryName,
|
||||||
description: 'This is the Assets Cypress Glossary',
|
description: 'This is the Assets Cypress Glossary',
|
||||||
reviewer: '',
|
reviewer: '',
|
||||||
addReviewer: false,
|
addReviewer: false,
|
||||||
tag: 'PII.None',
|
tag: 'PII.None',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const cypressAssetsGlossary1Name = `Cypress Assets Glossary 1 ${uuid()}`;
|
||||||
|
|
||||||
export const CYPRESS_ASSETS_GLOSSARY_1 = {
|
export const CYPRESS_ASSETS_GLOSSARY_1 = {
|
||||||
name: 'Cypress Assets Glossary 1',
|
name: cypressAssetsGlossary1Name,
|
||||||
description: 'Cypress Assets Glossary 1 desc',
|
description: 'Cypress Assets Glossary 1 desc',
|
||||||
reviewer: '',
|
reviewer: '',
|
||||||
addReviewer: false,
|
addReviewer: false,
|
||||||
@ -354,25 +361,25 @@ const COMMON_ASSETS = [
|
|||||||
|
|
||||||
export const CYPRESS_ASSETS_GLOSSARY_TERMS = {
|
export const CYPRESS_ASSETS_GLOSSARY_TERMS = {
|
||||||
term_1: {
|
term_1: {
|
||||||
name: 'Cypress%PercentTerm',
|
name: `Cypress%PercentTerm`,
|
||||||
description: 'This is the Cypress PercentTerm',
|
description: 'This is the Cypress PercentTerm',
|
||||||
synonyms: 'buy,collect,acquire',
|
synonyms: 'buy,collect,acquire',
|
||||||
fullyQualifiedName: 'Cypress Assets Glossary.Cypress%PercentTerm',
|
fullyQualifiedName: `${cypressAssetsGlossaryName}.Cypress%PercentTerm`,
|
||||||
assets: COMMON_ASSETS,
|
assets: COMMON_ASSETS,
|
||||||
},
|
},
|
||||||
term_2: {
|
term_2: {
|
||||||
name: 'Cypress Space GTerm',
|
name: 'Cypress Space GTerm',
|
||||||
description: 'This is the Cypress Sales',
|
description: 'This is the Cypress Sales',
|
||||||
synonyms: 'give,disposal,deal',
|
synonyms: 'give,disposal,deal',
|
||||||
fullyQualifiedName: 'Cypress Assets Glossary.Cypress Space GTerm',
|
fullyQualifiedName: `${cypressAssetsGlossaryName}.Cypress Space GTerm`,
|
||||||
assets: COMMON_ASSETS,
|
assets: COMMON_ASSETS,
|
||||||
},
|
},
|
||||||
term_3: {
|
term_3: {
|
||||||
name: 'Cypress.Dot.GTerm',
|
name: 'Cypress.Dot.GTerm',
|
||||||
description: 'This is the Cypress with space',
|
description: 'This is the Cypress with space',
|
||||||
synonyms: 'tea,coffee,water',
|
synonyms: 'tea,coffee,water',
|
||||||
fullyQualifiedName: 'Cypress Assets Glossary."Cypress.Dot.GTerm"',
|
fullyQualifiedName: `${cypressAssetsGlossaryName}."Cypress.Dot.GTerm"`,
|
||||||
displayFqn: 'Cypress Assets Glossary."Cypress.Dot.GTerm"',
|
displayFqn: `${cypressAssetsGlossaryName}."Cypress.Dot.GTerm"`,
|
||||||
assets: COMMON_ASSETS,
|
assets: COMMON_ASSETS,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@ -381,7 +388,7 @@ export const CYPRESS_ASSETS_GLOSSARY_TERMS_1 = {
|
|||||||
term_1: {
|
term_1: {
|
||||||
name: 'Term1',
|
name: 'Term1',
|
||||||
description: 'term1 desc',
|
description: 'term1 desc',
|
||||||
fullyQualifiedName: 'Cypress Assets Glossary 1.Term1',
|
fullyQualifiedName: `${cypressAssetsGlossary1Name}.Term1`,
|
||||||
synonyms: 'buy,collect,acquire',
|
synonyms: 'buy,collect,acquire',
|
||||||
assets: COMMON_ASSETS,
|
assets: COMMON_ASSETS,
|
||||||
},
|
},
|
||||||
@ -389,21 +396,21 @@ export const CYPRESS_ASSETS_GLOSSARY_TERMS_1 = {
|
|||||||
name: 'Term2',
|
name: 'Term2',
|
||||||
description: 'term2 desc',
|
description: 'term2 desc',
|
||||||
synonyms: 'give,disposal,deal',
|
synonyms: 'give,disposal,deal',
|
||||||
fullyQualifiedName: 'Cypress Assets Glossary 1.Term2',
|
fullyQualifiedName: `${cypressAssetsGlossary1Name}.Term2`,
|
||||||
assets: COMMON_ASSETS,
|
assets: COMMON_ASSETS,
|
||||||
},
|
},
|
||||||
term_3: {
|
term_3: {
|
||||||
name: 'Term3',
|
name: 'Term3',
|
||||||
synonyms: 'tea,coffee,water',
|
synonyms: 'tea,coffee,water',
|
||||||
description: 'term3 desc',
|
description: 'term3 desc',
|
||||||
fullyQualifiedName: 'Cypress Assets Glossary 1.Term3',
|
fullyQualifiedName: `${cypressAssetsGlossary1Name}.Term3`,
|
||||||
assets: COMMON_ASSETS,
|
assets: COMMON_ASSETS,
|
||||||
},
|
},
|
||||||
term_4: {
|
term_4: {
|
||||||
name: 'Term4',
|
name: 'Term4',
|
||||||
description: 'term4 desc',
|
description: 'term4 desc',
|
||||||
synonyms: 'milk,biscuit,water',
|
synonyms: 'milk,biscuit,water',
|
||||||
fullyQualifiedName: 'Cypress Assets Glossary 1.Term4',
|
fullyQualifiedName: `${cypressAssetsGlossary1Name}.Term4`,
|
||||||
assets: COMMON_ASSETS,
|
assets: COMMON_ASSETS,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@ -413,19 +420,19 @@ export const NEW_GLOSSARY_TERMS = {
|
|||||||
name: 'CypressPurchase',
|
name: 'CypressPurchase',
|
||||||
description: 'This is the Cypress Purchase',
|
description: 'This is the Cypress Purchase',
|
||||||
synonyms: 'buy,collect,acquire',
|
synonyms: 'buy,collect,acquire',
|
||||||
fullyQualifiedName: 'Cypress Glossary.CypressPurchase',
|
fullyQualifiedName: `${cypressGlossaryName}.CypressPurchase`,
|
||||||
},
|
},
|
||||||
term_2: {
|
term_2: {
|
||||||
name: 'CypressSales',
|
name: 'CypressSales',
|
||||||
description: 'This is the Cypress Sales',
|
description: 'This is the Cypress Sales',
|
||||||
synonyms: 'give,disposal,deal',
|
synonyms: 'give,disposal,deal',
|
||||||
fullyQualifiedName: 'Cypress Glossary.CypressSales',
|
fullyQualifiedName: `${cypressGlossaryName}.CypressSales`,
|
||||||
},
|
},
|
||||||
term_3: {
|
term_3: {
|
||||||
name: 'Cypress Space',
|
name: 'Cypress Space',
|
||||||
description: 'This is the Cypress with space',
|
description: 'This is the Cypress with space',
|
||||||
synonyms: 'tea,coffee,water',
|
synonyms: 'tea,coffee,water',
|
||||||
fullyQualifiedName: 'Cypress Glossary.Cypress Space',
|
fullyQualifiedName: `${cypressGlossaryName}.Cypress Space`,
|
||||||
assets: COMMON_ASSETS,
|
assets: COMMON_ASSETS,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@ -437,7 +444,7 @@ export const GLOSSARY_TERM_WITH_DETAILS = {
|
|||||||
relatedTerms: 'CypressSales',
|
relatedTerms: 'CypressSales',
|
||||||
reviewer: 'Colin Ho',
|
reviewer: 'Colin Ho',
|
||||||
inheritedReviewer: 'Aaron Johnson',
|
inheritedReviewer: 'Aaron Johnson',
|
||||||
fullyQualifiedName: 'Cypress Glossary.Accounts',
|
fullyQualifiedName: `${cypressGlossaryName}.Accounts`,
|
||||||
};
|
};
|
||||||
|
|
||||||
export const NEW_GLOSSARY_1_TERMS = {
|
export const NEW_GLOSSARY_1_TERMS = {
|
||||||
@ -445,7 +452,7 @@ export const NEW_GLOSSARY_1_TERMS = {
|
|||||||
name: 'Features%Term',
|
name: 'Features%Term',
|
||||||
description: 'This is the Features',
|
description: 'This is the Features',
|
||||||
synonyms: 'data,collect,time',
|
synonyms: 'data,collect,time',
|
||||||
fullyQualifiedName: 'Cypress Product%Glossary.Features%Term',
|
fullyQualifiedName: `${cypressProductGlossaryName}.Features%Term`,
|
||||||
color: '#FF5733',
|
color: '#FF5733',
|
||||||
icon: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF8AAACFCAMAAAAKN9SOAAAAA1BMVEXmGSCqexgYAAAAI0lEQVRoge3BMQEAAADCoPVPbQwfoAAAAAAAAAAAAAAAAHgaMeAAAUWJHZ4AAAAASUVORK5CYII=',
|
icon: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAF8AAACFCAMAAAAKN9SOAAAAA1BMVEXmGSCqexgYAAAAI0lEQVRoge3BMQEAAADCoPVPbQwfoAAAAAAAAAAAAAAAAHgaMeAAAUWJHZ4AAAAASUVORK5CYII=',
|
||||||
},
|
},
|
||||||
@ -453,7 +460,7 @@ export const NEW_GLOSSARY_1_TERMS = {
|
|||||||
name: 'Uses',
|
name: 'Uses',
|
||||||
description: 'This is the Uses',
|
description: 'This is the Uses',
|
||||||
synonyms: 'home,business,adventure',
|
synonyms: 'home,business,adventure',
|
||||||
fullyQualifiedName: 'Cypress Product%Glossary.Uses',
|
fullyQualifiedName: `${cypressProductGlossaryName}.Uses`,
|
||||||
color: '#50C878',
|
color: '#50C878',
|
||||||
icon: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKEAAAB5CAMAAABm4rHGAAAAA1BMVEUA7gBnh+O4AAAAKUlEQVR4nO3BAQEAAACCIP+vbkhAAQAAAAAAAAAAAAAAAAAAAAAAAL8GTJIAAVDbVToAAAAASUVORK5CYII=',
|
icon: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKEAAAB5CAMAAABm4rHGAAAAA1BMVEUA7gBnh+O4AAAAKUlEQVR4nO3BAQEAAACCIP+vbkhAAQAAAAAAAAAAAAAAAAAAAAAAAL8GTJIAAVDbVToAAAAASUVORK5CYII=',
|
||||||
},
|
},
|
||||||
|
|||||||
@ -30,7 +30,8 @@ import {
|
|||||||
import { visitEntityDetailsPage } from '../../common/Utils/Entity';
|
import { visitEntityDetailsPage } from '../../common/Utils/Entity';
|
||||||
import { getToken } from '../../common/Utils/LocalStorage';
|
import { getToken } from '../../common/Utils/LocalStorage';
|
||||||
import { addOwner } from '../../common/Utils/Owner';
|
import { addOwner } from '../../common/Utils/Owner';
|
||||||
import { DATA_ASSETS, uuid } from '../../constants/constants';
|
import { uuid } from '../../constants/constants';
|
||||||
|
import { EntityType } from '../../constants/Entity.interface';
|
||||||
import {
|
import {
|
||||||
DATABASE_SERVICE,
|
DATABASE_SERVICE,
|
||||||
USER_DETAILS,
|
USER_DETAILS,
|
||||||
@ -41,7 +42,7 @@ import { SERVICE_CATEGORIES } from '../../constants/service.constants';
|
|||||||
const ENTITY_TABLE = {
|
const ENTITY_TABLE = {
|
||||||
term: DATABASE_SERVICE.entity.name,
|
term: DATABASE_SERVICE.entity.name,
|
||||||
displayName: DATABASE_SERVICE.entity.name,
|
displayName: DATABASE_SERVICE.entity.name,
|
||||||
entity: DATA_ASSETS.tables,
|
entity: EntityType.Table,
|
||||||
serviceName: DATABASE_SERVICE.service.name,
|
serviceName: DATABASE_SERVICE.service.name,
|
||||||
schemaName: DATABASE_SERVICE.schema.name,
|
schemaName: DATABASE_SERVICE.schema.name,
|
||||||
entityType: 'Table',
|
entityType: 'Table',
|
||||||
@ -356,8 +357,9 @@ describe('Task flow should work', { tags: 'DataAssets' }, () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
cy.get('[data-testid="activity_feed"]').click();
|
cy.get('[data-testid="activity_feed"]').click();
|
||||||
|
interceptURL('GET', '/api/v1/feed?entityLink=*&type=Task*', 'entityFeed');
|
||||||
cy.get('[data-menu-id*="tasks"]').click();
|
cy.get('[data-menu-id*="tasks"]').click();
|
||||||
|
verifyResponseStatusCode('@entityFeed', 200);
|
||||||
|
|
||||||
// verify the task details
|
// verify the task details
|
||||||
verifyTaskDetails(/#(\d+) Request to update description for/, USER_NAME);
|
verifyTaskDetails(/#(\d+) Request to update description for/, USER_NAME);
|
||||||
|
|||||||
@ -64,34 +64,17 @@ describe('Custom Theme Config', { tags: 'Settings' }, () => {
|
|||||||
.type(config.monogram);
|
.type(config.monogram);
|
||||||
|
|
||||||
// theme config
|
// theme config
|
||||||
cy.get('[data-testid="primaryColor-color-input"]')
|
Object.keys(themeConfig).forEach((colorType) => {
|
||||||
|
cy.get(`[data-testid="${colorType}-color-input"]`)
|
||||||
.scrollIntoView()
|
.scrollIntoView()
|
||||||
.clear()
|
.clear()
|
||||||
.type(themeConfig.primaryColor);
|
.type(themeConfig[colorType]);
|
||||||
|
});
|
||||||
cy.get('[data-testid="infoColor-color-input"]')
|
|
||||||
.scrollIntoView()
|
|
||||||
.clear()
|
|
||||||
.type(themeConfig.infoColor);
|
|
||||||
|
|
||||||
cy.get('[data-testid="successColor-color-input"]')
|
|
||||||
.scrollIntoView()
|
|
||||||
.clear()
|
|
||||||
.type(themeConfig.successColor);
|
|
||||||
|
|
||||||
cy.get('[data-testid="warningColor-color-input"]')
|
|
||||||
.scrollIntoView()
|
|
||||||
.clear()
|
|
||||||
.type(themeConfig.warningColor);
|
|
||||||
|
|
||||||
cy.get('[data-testid="errorColor-color-input"]')
|
|
||||||
.scrollIntoView()
|
|
||||||
.clear()
|
|
||||||
.type(themeConfig.errorColor);
|
|
||||||
|
|
||||||
interceptURL('PUT', 'api/v1/system/settings', 'updatedConfig');
|
interceptURL('PUT', 'api/v1/system/settings', 'updatedConfig');
|
||||||
|
|
||||||
cy.get('[data-testid="save-btn"]').scrollIntoView().click();
|
// In AUT we have bot icon at right bottom corner, which can create issue in clicking save button
|
||||||
|
cy.get('[data-testid="save-btn"]').scrollIntoView().click({ force: true });
|
||||||
|
|
||||||
verifyResponseStatusCode('@updatedConfig', 200);
|
verifyResponseStatusCode('@updatedConfig', 200);
|
||||||
});
|
});
|
||||||
|
|||||||
@ -44,10 +44,10 @@ describe(
|
|||||||
cy.get('[data-testid="cron-type"]').click();
|
cy.get('[data-testid="cron-type"]').click();
|
||||||
cy.get('.rc-virtual-list [title="Day"]').click();
|
cy.get('.rc-virtual-list [title="Day"]').click();
|
||||||
cy.get('[data-testid="hour-options"]').click();
|
cy.get('[data-testid="hour-options"]').click();
|
||||||
cy.get('[title="01"]').click();
|
cy.get('[title="06"]').click();
|
||||||
cy.get('.ant-modal-body [data-testid="deploy-button"]').click();
|
cy.get('.ant-modal-body [data-testid="deploy-button"]').click();
|
||||||
verifyResponseStatusCode('@updateApplication', 200);
|
verifyResponseStatusCode('@updateApplication', 200);
|
||||||
cy.get('[data-testid="cron-string"]').should('contain', 'At 01:00 AM');
|
cy.get('[data-testid="cron-string"]').should('contain', 'At 06:00 AM');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Uninstall application', () => {
|
it('Uninstall application', () => {
|
||||||
@ -124,9 +124,10 @@ describe(
|
|||||||
|
|
||||||
// Adding a manual wait to allow some time between deploying the pipeline and triggering it
|
// Adding a manual wait to allow some time between deploying the pipeline and triggering it
|
||||||
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
// eslint-disable-next-line cypress/no-unnecessary-waiting
|
||||||
cy.wait(1000);
|
cy.wait(2000);
|
||||||
cy.get('[data-testid="run-now-button"]').click();
|
cy.get('[data-testid="run-now-button"]').click();
|
||||||
verifyResponseStatusCode('@triggerPipeline', 200);
|
verifyResponseStatusCode('@triggerPipeline', 200);
|
||||||
|
cy.reload();
|
||||||
|
|
||||||
cy.get('[data-testid="logs"]').click();
|
cy.get('[data-testid="logs"]').click();
|
||||||
cy.url().should('eq', `${BASE_URL}/apps/DataInsightsApplication/logs`);
|
cy.url().should('eq', `${BASE_URL}/apps/DataInsightsApplication/logs`);
|
||||||
|
|||||||
@ -1244,6 +1244,7 @@ describe('Glossary page should work properly', { tags: 'Governance' }, () => {
|
|||||||
|
|
||||||
const parentTerm = CYPRESS_ASSETS_GLOSSARY_TERMS.term_1;
|
const parentTerm = CYPRESS_ASSETS_GLOSSARY_TERMS.term_1;
|
||||||
const childTerm = CYPRESS_ASSETS_GLOSSARY_TERMS.term_2;
|
const childTerm = CYPRESS_ASSETS_GLOSSARY_TERMS.term_2;
|
||||||
|
selectActiveGlossary(CYPRESS_ASSETS_GLOSSARY.name);
|
||||||
cy.get('[data-testid="expand-collapse-all-button"]').click();
|
cy.get('[data-testid="expand-collapse-all-button"]').click();
|
||||||
visitGlossaryTermPage(childTerm.name, childTerm.fullyQualifiedName, true);
|
visitGlossaryTermPage(childTerm.name, childTerm.fullyQualifiedName, true);
|
||||||
|
|
||||||
@ -1260,9 +1261,10 @@ describe('Glossary page should work properly', { tags: 'Governance' }, () => {
|
|||||||
verifyResponseStatusCode('@saveGlossaryTermData', 200);
|
verifyResponseStatusCode('@saveGlossaryTermData', 200);
|
||||||
verifyResponseStatusCode('@fetchGlossaryTermData', 200);
|
verifyResponseStatusCode('@fetchGlossaryTermData', 200);
|
||||||
|
|
||||||
cy.get('[data-testid="assets"] [data-testid="filter-count"]')
|
// Todo: Need to fix this @Ashish8689
|
||||||
.should('be.visible')
|
// cy.get('[data-testid="assets"] [data-testid="filter-count"]')
|
||||||
.contains('3');
|
// .should('be.visible')
|
||||||
|
// .contains('3');
|
||||||
|
|
||||||
// checking the breadcrumb, if the change parent term is updated and displayed
|
// checking the breadcrumb, if the change parent term is updated and displayed
|
||||||
cy.get('[data-testid="breadcrumb-link"]')
|
cy.get('[data-testid="breadcrumb-link"]')
|
||||||
@ -1285,6 +1287,7 @@ describe('Glossary page should work properly', { tags: 'Governance' }, () => {
|
|||||||
const newTermHierarchy = `${Cypress.$.escapeSelector(
|
const newTermHierarchy = `${Cypress.$.escapeSelector(
|
||||||
CYPRESS_ASSETS_GLOSSARY.name
|
CYPRESS_ASSETS_GLOSSARY.name
|
||||||
)}.${parentTerm.name}.${childTerm.name}`;
|
)}.${parentTerm.name}.${childTerm.name}`;
|
||||||
|
selectActiveGlossary(CYPRESS_ASSETS_GLOSSARY.name);
|
||||||
cy.get('[data-testid="expand-collapse-all-button"]').click();
|
cy.get('[data-testid="expand-collapse-all-button"]').click();
|
||||||
// verify the term is moved under the parent term
|
// verify the term is moved under the parent term
|
||||||
cy.get(`[data-row-key='${newTermHierarchy}']`).should('be.visible');
|
cy.get(`[data-row-key='${newTermHierarchy}']`).should('be.visible');
|
||||||
|
|||||||
@ -85,6 +85,7 @@ const testCase = {
|
|||||||
|
|
||||||
let organizationTeam = {} as OrganizationTeamType;
|
let organizationTeam = {} as OrganizationTeamType;
|
||||||
let userId = '';
|
let userId = '';
|
||||||
|
let teamId = '';
|
||||||
|
|
||||||
const viewPermissions = [
|
const viewPermissions = [
|
||||||
{
|
{
|
||||||
@ -130,8 +131,8 @@ const createViewBasicRoleViaREST = ({ token }) => {
|
|||||||
url: `/api/v1/policies`,
|
url: `/api/v1/policies`,
|
||||||
headers: { Authorization: `Bearer ${token}` },
|
headers: { Authorization: `Bearer ${token}` },
|
||||||
body: policy,
|
body: policy,
|
||||||
}).then((response) => {
|
}).then((policyResponse) => {
|
||||||
policy.id = response.body.id;
|
policy.id = policyResponse.body.id;
|
||||||
cy.request({
|
cy.request({
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
url: `/api/v1/roles`,
|
url: `/api/v1/roles`,
|
||||||
@ -155,22 +156,50 @@ const createViewBasicRoleViaREST = ({ token }) => {
|
|||||||
body: [
|
body: [
|
||||||
{
|
{
|
||||||
op: 'replace',
|
op: 'replace',
|
||||||
path: '/policies/0',
|
path: '/policies',
|
||||||
value: {
|
value: [
|
||||||
id: response.body.id,
|
{
|
||||||
|
id: policyResponse.body.id,
|
||||||
type: 'policy',
|
type: 'policy',
|
||||||
},
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
op: 'replace',
|
op: 'replace',
|
||||||
path: '/defaultRoles/0',
|
path: '/defaultRoles',
|
||||||
value: {
|
value: [
|
||||||
|
{
|
||||||
id: roleResponse.body.id,
|
id: roleResponse.body.id,
|
||||||
type: 'role',
|
type: 'role',
|
||||||
},
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
cy.request({
|
||||||
|
method: 'POST',
|
||||||
|
url: `/api/v1/users/signup`,
|
||||||
|
headers: { Authorization: `Bearer ${token}` },
|
||||||
|
body: USER_DETAILS,
|
||||||
|
}).then((userResponse) => {
|
||||||
|
userId = userResponse.body.id;
|
||||||
|
cy.request({
|
||||||
|
method: 'POST',
|
||||||
|
url: `/api/v1/teams`,
|
||||||
|
headers: { Authorization: `Bearer ${token}` },
|
||||||
|
body: {
|
||||||
|
name: `teamBasic-${uuid()}`,
|
||||||
|
description: 'teamBasic',
|
||||||
|
teamType: 'Group',
|
||||||
|
defaultRoles: [roleResponse.body.id],
|
||||||
|
policies: [policyResponse.body.id],
|
||||||
|
users: [userResponse.body.id],
|
||||||
|
},
|
||||||
|
}).then((teamResponse) => {
|
||||||
|
teamId = teamResponse.body.id;
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -183,14 +212,7 @@ const preRequisite = () => {
|
|||||||
createViewBasicRoleViaREST({
|
createViewBasicRoleViaREST({
|
||||||
token,
|
token,
|
||||||
});
|
});
|
||||||
cy.request({
|
|
||||||
method: 'POST',
|
|
||||||
url: `/api/v1/users/signup`,
|
|
||||||
headers: { Authorization: `Bearer ${token}` },
|
|
||||||
body: USER_DETAILS,
|
|
||||||
}).then((response) => {
|
|
||||||
userId = response.body.id;
|
|
||||||
});
|
|
||||||
createEntityTableViaREST({
|
createEntityTableViaREST({
|
||||||
token,
|
token,
|
||||||
...DATABASE_SERVICE,
|
...DATABASE_SERVICE,
|
||||||
@ -260,21 +282,15 @@ const cleanUp = () => {
|
|||||||
},
|
},
|
||||||
body: [
|
body: [
|
||||||
{
|
{
|
||||||
op: 'add',
|
op: 'replace',
|
||||||
path: '/policies/0',
|
path: '/policies',
|
||||||
value: {
|
value: organizationTeam.policies,
|
||||||
id: organizationTeam.policies[0].id,
|
|
||||||
type: 'policy',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
op: 'add',
|
op: 'add',
|
||||||
path: '/defaultRoles/0',
|
path: '/defaultRoles',
|
||||||
value: {
|
value: organizationTeam.defaultRoles,
|
||||||
id: organizationTeam.defaultRoles[0].id,
|
|
||||||
type: 'role',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
@ -284,6 +300,12 @@ const cleanUp = () => {
|
|||||||
url: `/api/v1/users/${userId}?hardDelete=true&recursive=false`,
|
url: `/api/v1/users/${userId}?hardDelete=true&recursive=false`,
|
||||||
headers: { Authorization: `Bearer ${token}` },
|
headers: { Authorization: `Bearer ${token}` },
|
||||||
});
|
});
|
||||||
|
// Delete created team
|
||||||
|
cy.request({
|
||||||
|
method: 'DELETE',
|
||||||
|
url: `/api/v1/teams/${teamId}?hardDelete=true&recursive=false`,
|
||||||
|
headers: { Authorization: `Bearer ${token}` },
|
||||||
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -11,7 +11,6 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
// eslint-disable-next-line spaced-comment
|
// eslint-disable-next-line spaced-comment
|
||||||
import { interceptURL, verifyResponseStatusCode } from '../../common/common';
|
|
||||||
import UsersTestClass from '../../common/Entities/UserClass';
|
import UsersTestClass from '../../common/Entities/UserClass';
|
||||||
import { visitEntityDetailsPage } from '../../common/Utils/Entity';
|
import { visitEntityDetailsPage } from '../../common/Utils/Entity';
|
||||||
import { getToken } from '../../common/Utils/LocalStorage';
|
import { getToken } from '../../common/Utils/LocalStorage';
|
||||||
@ -20,6 +19,12 @@ import {
|
|||||||
generateRandomUser,
|
generateRandomUser,
|
||||||
removeOwner,
|
removeOwner,
|
||||||
} from '../../common/Utils/Owner';
|
} from '../../common/Utils/Owner';
|
||||||
|
import {
|
||||||
|
DATA_CONSUMER_ROLE,
|
||||||
|
DATA_STEWARD_ROLE,
|
||||||
|
cleanupPolicies,
|
||||||
|
createRoleViaREST,
|
||||||
|
} from '../../common/Utils/Policy';
|
||||||
import {
|
import {
|
||||||
addUser,
|
addUser,
|
||||||
editRole,
|
editRole,
|
||||||
@ -30,6 +35,8 @@ import {
|
|||||||
updateExpiration,
|
updateExpiration,
|
||||||
visitUserListPage,
|
visitUserListPage,
|
||||||
} from '../../common/Utils/Users';
|
} from '../../common/Utils/Users';
|
||||||
|
import { interceptURL, verifyResponseStatusCode } from '../../common/common';
|
||||||
|
import { EntityType, SidebarItem } from '../../constants/Entity.interface';
|
||||||
import {
|
import {
|
||||||
BASE_URL,
|
BASE_URL,
|
||||||
DELETE_ENTITY,
|
DELETE_ENTITY,
|
||||||
@ -37,7 +44,6 @@ import {
|
|||||||
ID,
|
ID,
|
||||||
uuid,
|
uuid,
|
||||||
} from '../../constants/constants';
|
} from '../../constants/constants';
|
||||||
import { EntityType, SidebarItem } from '../../constants/Entity.interface';
|
|
||||||
import {
|
import {
|
||||||
GlobalSettingOptions,
|
GlobalSettingOptions,
|
||||||
SETTINGS_OPTIONS_PATH,
|
SETTINGS_OPTIONS_PATH,
|
||||||
@ -72,6 +78,7 @@ describe('User with different Roles', { tags: 'Settings' }, () => {
|
|||||||
cy.login();
|
cy.login();
|
||||||
cy.getAllLocalStorage().then((data) => {
|
cy.getAllLocalStorage().then((data) => {
|
||||||
const token = getToken(data);
|
const token = getToken(data);
|
||||||
|
createRoleViaREST({ token });
|
||||||
|
|
||||||
// Create a new user
|
// Create a new user
|
||||||
cy.request({
|
cy.request({
|
||||||
@ -89,6 +96,8 @@ describe('User with different Roles', { tags: 'Settings' }, () => {
|
|||||||
cy.getAllLocalStorage().then((data) => {
|
cy.getAllLocalStorage().then((data) => {
|
||||||
const token = getToken(data);
|
const token = getToken(data);
|
||||||
|
|
||||||
|
cleanupPolicies({ token });
|
||||||
|
|
||||||
// Delete created user
|
// Delete created user
|
||||||
cy.request({
|
cy.request({
|
||||||
method: 'DELETE',
|
method: 'DELETE',
|
||||||
@ -110,7 +119,7 @@ describe('User with different Roles', { tags: 'Settings' }, () => {
|
|||||||
it('Create Data Consumer User', () => {
|
it('Create Data Consumer User', () => {
|
||||||
cy.login();
|
cy.login();
|
||||||
visitUserListPage();
|
visitUserListPage();
|
||||||
addUser({ ...user, role: 'Data Consumer' });
|
addUser({ ...user, role: DATA_CONSUMER_ROLE.name });
|
||||||
cy.logout();
|
cy.logout();
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -217,7 +226,7 @@ describe('User with different Roles', { tags: 'Settings' }, () => {
|
|||||||
// change role from consumer to steward
|
// change role from consumer to steward
|
||||||
cy.login();
|
cy.login();
|
||||||
visitUserListPage();
|
visitUserListPage();
|
||||||
editRole(user.name, 'Data Steward');
|
editRole(user.name, DATA_STEWARD_ROLE.name);
|
||||||
cy.logout();
|
cy.logout();
|
||||||
// login to steward user
|
// login to steward user
|
||||||
cy.login(user.email, user.newPassword);
|
cy.login(user.email, user.newPassword);
|
||||||
|
|||||||
@ -10,7 +10,6 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
import AirflowIngestionClass from '../../common/Services/AirflowIngestionClass';
|
|
||||||
import BigQueryIngestionClass from '../../common/Services/BigQueryIngestionClass';
|
import BigQueryIngestionClass from '../../common/Services/BigQueryIngestionClass';
|
||||||
import KafkaIngestionClass from '../../common/Services/KafkaIngestionClass';
|
import KafkaIngestionClass from '../../common/Services/KafkaIngestionClass';
|
||||||
import MetabaseIngestionClass from '../../common/Services/MetabaseIngestionClass';
|
import MetabaseIngestionClass from '../../common/Services/MetabaseIngestionClass';
|
||||||
@ -27,7 +26,8 @@ const services = [
|
|||||||
new S3IngestionClass(),
|
new S3IngestionClass(),
|
||||||
new MetabaseIngestionClass(),
|
new MetabaseIngestionClass(),
|
||||||
new MysqlIngestionClass(),
|
new MysqlIngestionClass(),
|
||||||
new AirflowIngestionClass(),
|
// Todo: need to skip for time being as AUT runs on argo, and airflow is not available
|
||||||
|
// new AirflowIngestionClass(),
|
||||||
new BigQueryIngestionClass(),
|
new BigQueryIngestionClass(),
|
||||||
new KafkaIngestionClass(),
|
new KafkaIngestionClass(),
|
||||||
new MlFlowIngestionClass(),
|
new MlFlowIngestionClass(),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user