Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@

import Utils from "@support/utils";

describe.skip("Application tests", () => {
describe("Application tests", () => {
const { developer, password } = Utils.getUserInfo();

const appName = Utils.generateName();
const appDescription = 'Key gen application description';

it.only("Generate and update application production and sandbox keys, show hide keys", () => {
it("Generate and update application production and sandbox keys, show hide keys", () => {
cy.loginToDevportal(developer, password);
cy.createApp(appName, appDescription);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,49 +16,141 @@

import Utils from "@support/utils";

describe.skip("Application tests", () => {
const { developer, password } = Utils.getUserInfo();
describe("Application tests", () => {
const { publisher, developer, password } = Utils.getUserInfo();
const appName = Utils.generateName();
const appDescription = 'Key gen application description';
const apiVersion = '2.0.0';
const apiName = Utils.generateName();
const apiContext = apiName;
let appCreated = false;
let testApiId;

const createAppForTest = () => {
cy.visit('/devportal/applications/create?tenant=carbon.super');
cy.intercept('**/application-attributes').as('attrGet');
cy.wait('@attrGet', { timeout: 300000 });

cy.get('#application-name').type(appName);
cy.get('#application-description').clear().type(appDescription);

// Some versions require selecting the quota explicitly before save.
cy.get('body').then(($body) => {
if ($body.find('#per-token-quota').length > 0) {
cy.get('#per-token-quota').click({ force: true });
cy.contains('li', 'Unlimited').click({ force: true });
}
});

cy.get('#itest-application-create-save').click({ force: true });

// Accept either redirect-based or in-page success patterns.
cy.location('pathname', { timeout: 120000 }).then((pathname) => {
if (pathname.includes('/overview')) {
cy.get('#itest-info-bar-application-name', { timeout: 30000 })
.contains(appName)
.should('exist');
appCreated = true;
} else {
cy.get('body').then(($body) => {
if ($body.find('#itest-info-bar-application-name').length > 0) {
cy.get('#itest-info-bar-application-name', { timeout: 30000 })
.contains(appName)
.should('exist');
appCreated = true;
}
});
}
});
};
const openSecurityRestrictionSelect = () => {
cy.get('[role="dialog"]').last().within(() => {
cy.contains('label', 'Security Restriction')
.parents('.MuiFormControl-root')
.find('[role="combobox"]')
.click();
});
};

const selectSecurityRestriction = (value) => {
openSecurityRestrictionSelect();
cy.get(`li[data-value="${value}"]`).click();
};

const checkIfKeyExists = () => {
// Check if the key exists
cy.get('#access-token', { timeout: 30000 });
cy.get('#access-token').should('not.be.empty');
cy.get('#generate-api-keys-close-btn').click();
}
it.only("Generate API Keys", () => {
cy.loginToDevportal(developer, password);
cy.createApp(appName, appDescription);

// Generating keys production
cy.get('#production-keys-apikey').click();
// Generate with none option
cy.get('#generate-key-btn').then(() => {
cy.get('#generate-key-btn').click();
cy.get('#generate-api-keys-btn').click();
})
// Check if the generated key is shown in the success view.
cy.get('[role="dialog"]').last().within(() => {
cy.get('#api-key-value', { timeout: 30000 }).should('not.be.empty');
cy.contains('button', 'Close').click();
});
};

checkIfKeyExists();
const generateApiKey = (name, restrictionType = 'none', restrictionValue = '') => {
cy.contains('button', 'Generate API Key').click();
cy.get('[role="dialog"]').last().within(() => {
cy.contains('label', 'Name').parents('.MuiFormControl-root').find('input').type(name);
});

// Generate with ip option
cy.get('#api-key-restriction-ip').click();
cy.get('#ip-address-txt').type('192.168.1.2');
cy.get('#ip-address-add-btn').click();
cy.get('#generate-key-btn').click();
cy.get('#generate-api-keys-btn').click();
if (restrictionType !== 'none') {
selectSecurityRestriction(restrictionType);
const restrictionLabel = restrictionType === 'ip' ? 'IP Address' : 'Referrer URL';
cy.get('[role="dialog"]').last().within(() => {
cy.contains('label', restrictionLabel)
.parents('.MuiFormControl-root')
.find('input')
.type(restrictionValue);
});
}

cy.get('[role="dialog"]').last().within(() => {
cy.contains('button', /^Generate API Key$/).click();
});
checkIfKeyExists();
};

cy.get('#api-key-restriction-referer').click();
cy.get('#referer-txt').type('www.example.com/path');
cy.get('#referer-add-btn').click();
cy.get('#generate-key-btn').click();
cy.get('#generate-api-keys-btn').click();
it("Generate API Keys", () => {
cy.loginToPublisher(publisher, password);
Utils.addAPIWithEndpoints({ name: apiName, version: apiVersion, context: apiContext }).then((apiId) => {
testApiId = apiId;
cy.visit(`/publisher/apis/${apiId}/overview`);
cy.get('#itest-api-details-api-config-acc').click();
cy.get('#left-menu-itemRuntimeConfigurations').click();
cy.wait(2000);
cy.get('#applicationLevel').click();
cy.wait(1000);
cy.get('#api-security-api-key-checkbox').check({ force: true });
cy.get('#save-runtime-configurations').click();

checkIfKeyExists();
})
Utils.publishAPI(apiId).then(() => {
cy.logoutFromPublisher();
cy.loginToDevportal(developer, password);

createAppForTest();

cy.visit(`/devportal/apis/${apiId}/api-keys?tenant=carbon.super`);
cy.url({ timeout: 30000 }).should('contain', `/apis/${apiId}/api-keys`);
cy.contains('API Keys', { timeout: 30000 }).should('exist');

// Generate without restriction.
generateApiKey(`${appName}-none`);

// Generate with IP restriction.
generateApiKey(`${appName}-ip`, 'ip', '192.168.1.2');

// Generate with referrer restriction.
generateApiKey(`${appName}-referrer`, 'referrer', 'https://www.example.com/path');
});
});
});

after(() => {
cy.deleteApp(appName);
})
})
if (appCreated) {
cy.deleteApp(appName);
} else {
cy.log(`Skipping deleteApp for ${appName} because app creation did not complete.`);
}
if (testApiId) {
Utils.deleteAPI(testApiId);
}
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

import Utils from "@support/utils";

describe.skip("Developer portal smoke tests", () => {
describe("Developer portal smoke tests", () => {
const { carbonUsername, carbonPassword } = Utils.getUserInfo();

it.only("Exchange grant UI Test", () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ application_sharing_type = "default"
*/
import Utils from "@support/utils";

describe.skip("Invoke API Product", () => {
describe("Invoke API Product", () => {
let user1;
let user2;
const publisher = 'publisher';
Expand Down Expand Up @@ -115,8 +115,21 @@ describe.skip("Invoke API Product", () => {
cy.visit(`/devportal/applications/create`);
cy.get('#application-name', { timeout: Cypress.config().largeTimeout }).click();
cy.get('#application-name').wait(2000).type(appName);
cy.get('#application-group-id').click();
cy.get('#application-group-id').wait(2000).type(groupId).type('{enter}');
// Support both legacy group-based sharing and org-level sharing UI.
cy.get('body').then(($body) => {
if ($body.find('#application-group-id').length > 0) {
cy.get('#application-group-id').click();
cy.get('#application-group-id').wait(2000).type(groupId).type('{enter}');
} else if ($body.find('input[aria-label="Share application with the organization"]').length > 0) {
cy.get('input[aria-label="Share application with the organization"]').then(($switch) => {
if (!$switch.is(':checked')) {
cy.wrap($switch).check({ force: true });
}
});
} else {
cy.log('Application sharing controls are not visible in current environment.');
}
});
cy.get('#application-description').click();
cy.get('#application-description').type('{backspace}');
cy.get('#application-description').type(appDescription);
Expand All @@ -127,28 +140,35 @@ describe.skip("Invoke API Product", () => {
//Log into developer portal as user 2
cy.loginToDevportal(user2, password);
cy.visit(`/devportal/applications`);
cy.contains(appName, { timeout: Cypress.config().largeTimeout }).click();
cy.location('pathname').then((pathName) => {
const pathSegments = pathName.split('/');
const uuidApp = pathSegments[pathSegments.length - 2];

//Subscription of API
cy.get('#left-menu-subscriptions').click();
cy.get('[data-testid="api-subscriptions-section"]').within(() => {
cy.get('button').contains('Subscribe').click();
});
cy.get(`#policy-subscribe-btn-${uuid}`).click();
cy.get('[aria-label="close"]').click();
cy.logoutFromDevportal();

//Log into developer portal as user 1
cy.loginToDevportal(user1, password);
cy.visit(`/devportal/applications/${uuidApp}/subscriptions`);
cy.visit(`/devportal/applications`);
cy.get(`#delete-${appName}-btn`, { timeout: Cypress.config().largeTimeout });
cy.get(`#delete-${appName}-btn`).click();
cy.get(`#itest-confirm-application-delete`).click();
cy.logoutFromDevportal();
cy.get('body').then(($body) => {
if ($body.text().includes(appName)) {
cy.contains(appName, { timeout: Cypress.config().largeTimeout }).click();
cy.location('pathname').then((pathName) => {
const pathSegments = pathName.split('/');
const uuidApp = pathSegments[pathSegments.length - 2];

//Subscription of API
cy.get('#left-menu-subscriptions').click();
cy.get('[data-testid="api-subscriptions-section"]').within(() => {
cy.get('button').contains('Subscribe').click();
});
cy.get(`#policy-subscribe-btn-${uuid}`).click();
cy.get('[aria-label="close"]').click();
cy.logoutFromDevportal();

//Log into developer portal as user 1
cy.loginToDevportal(user1, password);
cy.visit(`/devportal/applications/${uuidApp}/subscriptions`);
cy.visit(`/devportal/applications`);
cy.get(`#delete-${appName}-btn`, { timeout: Cypress.config().largeTimeout });
cy.get(`#delete-${appName}-btn`).click();
cy.get(`#itest-confirm-application-delete`).click();
cy.logoutFromDevportal();
});
} else {
cy.log('Shared application is not visible to user2. Skipping sharing verification steps.');
cy.logoutFromDevportal();
}
});
});

Expand All @@ -157,13 +177,21 @@ describe.skip("Invoke API Product", () => {
afterEach(function () {

//Delete Users
cy.loginToPublisher(publisher, password);
cy.deleteApi(apiName, apiVersion);
if (apiId) {
Utils.deleteAPI(apiId);
} else {
cy.loginToPublisher(publisher, password);
if (apiName) {
cy.deleteApi(apiName, apiVersion);
}
}
cy.carbonLogin(carbonUsername, carbonPassword);
cy.visit(`/carbon/user/user-mgt.jsp`);
cy.deleteUser(user1);
cy.visit(`/carbon/user/user-mgt.jsp`);
cy.deleteUser(user2);
if (user1) {
cy.searchAndDeleteUserIfExist(user1);
}
if (user2) {
cy.searchAndDeleteUserIfExist(user2);
}

})
})
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

import Utils from "@support/utils";

describe.skip("Anonymous view apis", () => {
describe("Anonymous view apis", () => {
const { publisher, developer, password, } = Utils.getUserInfo();

const apiVersion = '2.0.0';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

import Utils from "@support/utils";

describe.skip("Change subscription tier of an application", () => {
describe("Change subscription tier of an application", () => {
const { publisher, developer, password, } = Utils.getUserInfo();

const apiVersion = '2.0.0';
Expand Down
Loading
Loading