Skip to content

Commit

Permalink
Merge pull request communitybridge#4098 from communitybridge/cypress-…
Browse files Browse the repository at this point in the history
…cla-manager

Added cypress test case for cla-manager API
  • Loading branch information
nickmango authored Aug 28, 2023
2 parents dab0140 + e5666df commit b6c39a4
Show file tree
Hide file tree
Showing 10 changed files with 515 additions and 78 deletions.
2 changes: 2 additions & 0 deletions tests/functional/cypress.env.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@
"AUTH0_TOKEN_API":"https://linuxfoundation-dev.auth0.com/oauth/token",
"AUTH0_USER_NAME":"vthakur",
"AUTH0_PASSWORD":"Test@123",
"LFX_API_TOKEN":"gDYBt6VYW6cmXelL/a3wTmHMa9sD37Xo9gsgaIjncbw=",
"AUTH0_CLIENT_SECRET":"eyJuYW1lIjoiYXV0aDAuanMtdWxwIiwidmVyc2lvbiI6IjkuMTIuMiJ9",
"AUTH0_CLIENT_ID":"hquZHO8JNsaIScoayPtCS5VELdn7TnVq"
}
231 changes: 231 additions & 0 deletions tests/functional/cypress/e2e/cla-manager.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,231 @@
import {validateApiResponse,validate_200_Status} from '../support/commands'
describe("To Validate cla-manager API call", function () {
//Reference api doc: https://api-gw.dev.platform.linuxfoundation.org/cla-service/v4/api-docs#tag/cla-manager
/*
https://api-gw.dev.platform.linuxfoundation.org/acs/v1/api-docs#tag/UserRole
https://api-gw.dev.platform.linuxfoundation.org/acs/v1/api-docs#tag/Role/operation/getRoles
*/
//Variable for GitHub
const companyID="f7c7ac9c-4dbf-4104-ab3f-6b38a26d82dc";
const projectSFID="a09P000000DsCE5IAN";//sun
const projectSFID_Designee="a09P000000DsNH2IAN"
const claEndpoint = `${Cypress.env("APP_URL")}cla-service/v4/`;
let bearerToken: string = "";
const claGroupID="1baf67ab-d894-4edf-b6fc-c5f939db59f7";
const sun_claGroupID="01af041c-fa69-4052-a23c-fb8c1d3bef24"
const userEmail="veerendrat@proximabiz.com";
let companyName="Infosys limited";
let organization_id="";
let organization_name="";
let companySFID="";
let userLFID="veerendrat";
let userId="c5ac2857-c263-11ed-94d1-d2349de32229";//veerendrat

before(() => {

cy.request({
method: 'POST',
url: Cypress.env("AUTH0_TOKEN_API"),

body: {
"grant_type": "http://auth0.com/oauth/grant-type/password-realm",
"realm": "Username-Password-Authentication",
"username":Cypress.env("AUTH0_USER_NAME"),
"password":Cypress.env("AUTH0_PASSWORD"),
"client_id":Cypress.env("AUTH0_CLIENT_ID"),
"audience": "https://api-gw.dev.platform.linuxfoundation.org/",
"scope": "access:api openid profile email"
}
}).then(response => {
expect(response.status).to.eq(200);
bearerToken = response.body.access_token;

});
});

it("Assigns CLA Manager designee to a given user.", function () {
cy.request({
method: 'POST',
url: `${claEndpoint}company/${companyID}/claGroup/${claGroupID}/cla-manager-designee`,

auth: {
'bearer': bearerToken,
},
body:{
"userEmail": userEmail
}
}).then((response) => {
// expect(response.duration).to.be.lessThan(20000);
validate_200_Status(response);
companySFID=response.body.list[0].company_sfid;
userLFID=response.body.list[0].lf_username;
cy.log('company_sfid : '+ companySFID);
cy.log('lf_username : '+ userLFID);
//To validate Post response
if (response.status === 200) {
getClaManager();
}
validateApiResponse("cla-manager/assignCLAManager.json",response)
});
});

it("Allows an existing CLA Manager to add another CLA Manager to the specified Company and Project.", function () {
cy.request({
method: 'POST',
url: `${claEndpoint}company/${companyID}/project/${projectSFID}/cla-manager`,

auth: {
'bearer': bearerToken,
},
failOnStatusCode: false,
body:{

"firstName": "veerendrat",
"lastName": "thakur",
"userEmail": userEmail

}
}).then((response) => {

// expect(response.duration).to.be.lessThan(20000);

if(response.status === 200) {
validate_200_Status(response);
// Validate specific data in the response
let list = response.body;
organization_id=list.organization_id;
organization_name=list.organization_name;
expect(list.project_sfid).to.eql(projectSFID)
//To validate schema of response
}else{
expect(response.body.Message).to.include('error: manager already in signature ACL');
}
validateApiResponse("cla-manager/createCLAManager.json",response)
});
});

it("Deletes the CLA Manager from CLA Manager list for specified Company and Project", function () {
cy.request({
method: 'DELETE',
url: `${claEndpoint}company/${companyID}/project/${projectSFID}/cla-manager/${userLFID}`,

auth: {
'bearer': bearerToken,
},

}).then((response) => {
// expect(response.duration).to.be.lessThan(20000);
expect(response.status).to.eq(204);
});
});

it("Assigns CLA Manager designee to a given user", function () {
cy.request({
method: 'POST',
url: `${claEndpoint}company/${companyID}/project/${projectSFID_Designee}/cla-manager-designee`,

auth: {
'bearer': bearerToken,
},
body:{
"userEmail": userEmail
}
}).then((response) => {
// expect(response.duration).to.be.lessThan(20000);
validate_200_Status(response);
// Validate specific data in the response
expect(response.body.project_sfid).to.eql(projectSFID_Designee)
if (response.status === 200) {
getClaManager();
}
validateApiResponse("cla-manager/createCLAManagerDesignee.json",response)
});
});

it("Adds a CLA Manager Designee to the specified Company and Project", function () {
cy.request({
method: 'POST',
url: `${claEndpoint}company/${companyID}/project/${projectSFID_Designee}/cla-manager/requests`,

auth: {
'bearer': bearerToken,
},
body:{
"contactAdmin": false,
"fullName": "veerendrat cla",
"userEmail": "veerendrat+cla@proximabiz.com"
}
}).then((response) => {
// expect(response.duration).to.be.lessThan(20000);
validate_200_Status(response);
// Validate specific data in the response
expect(response.body.project_sfid).to.eql(projectSFID_Designee)
//To validate schema of response
validateApiResponse("cla-manager/createCLAManagerDesignee.json",response)
});
});

it("Send Notification to CLA Managaers", function () {
cy.request({
method: 'POST',
url: `${claEndpoint}notify-cla-managers`,

auth: {
'bearer': bearerToken,
},
body:{
"claGroupID": claGroupID,
"companyName": companyName,
"list": [
{
"email": "vthakur@contractor.linuxfoundation.org",
"name": "vthakur"
}
],
"signingEntityName": "Linux Foundation",
"userID": userId
}
}).then((response) => {
// expect(response.duration).to.be.lessThan(20000);
expect(response.status).to.eq(204);
});
});

it("Invite Company Admin based on user request to sign CLA", function () {
cy.request({
method: 'POST',
url: `${claEndpoint}user/${userId}/invite-company-admin`,

auth: {
'bearer': bearerToken,
},
body:{
"claGroupID": sun_claGroupID,
"companyID": companyID,
"contactAdmin": true,
"name": "veerendra thakur",
"userEmail": userEmail
}
}).then((response) => {
// expect(response.duration).to.be.lessThan(20000);
validate_200_Status(response);
// validateApiResponse("cla-manager/assignCLAManager.json",response)
});
});


function getClaManager(){
cy.request({
method: 'GET',
url: `${claEndpoint}company/${companySFID}/user/${userLFID}/claGroupID/${claGroupID}/is-cla-manager-designee`,
auth: {
'bearer': bearerToken,
},
}).then((response) => {
validate_200_Status(response);
expect(response.body.hasRole).to.eq(true);
expect(response.body.lfUsername).to.eq(userLFID);
// validateApiResponse("cla-manager/isCLAManagerDesignee.json",response)
})
}
});
16 changes: 9 additions & 7 deletions tests/functional/cypress/e2e/events.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,9 @@ describe("To Validate events are properly capture via API call", function () {
const projectSfid='a09P000000DsNH2IAN'; //project name: easyAutom-child2
const companyID="f7c7ac9c-4dbf-4104-ab3f-6b38a26d82dc";
const compProjectSFID="a092h000004x5tVAAQ";
const Ajv = require('ajv');

before(() => {
before(() => {

cy.request({
method: 'POST',
url: Cypress.env("AUTH0_TOKEN_API"),
Expand All @@ -23,6 +22,7 @@ before(() => {
"username":Cypress.env("AUTH0_USER_NAME"),
"password":Cypress.env("AUTH0_PASSWORD"),
"client_id":Cypress.env("AUTH0_CLIENT_ID"),
// "client_secret": Cypress.env("AUTH0_CLIENT_SECRET"),
"audience": "https://api-gw.dev.platform.linuxfoundation.org/",
"scope": "access:api openid profile email"
}
Expand All @@ -31,6 +31,7 @@ before(() => {
expect(response.status).to.eq(200);
bearerToken = response.body.access_token;
});

});

it("Get recent events of company and project - Record should Returns 200 Response", function () {
Expand Down Expand Up @@ -82,7 +83,7 @@ it("Get events of foundation project - Record should Returns 200 Response", func
expect(Events).to.be.an('array');
// Assert that the array has at least one item
expect(Events.length).to.be.greaterThan(0);
validateApiResponse("events/getFoundationEvents.json",list);
// validateApiResponse("events/getFoundationEvents.json",list);
fetchNextRecords(claEndpointForNextKey,NextKey);
});
});
Expand All @@ -91,13 +92,13 @@ it("Get events of foundation project - Record should Returns 200 Response", func
claEndpointForNextKey=`${claEndpoint}/project/${projectSfid}`;
cy.request({
method: 'GET',
url: `${claEndpointForNextKey}`,
url: `${claEndpoint}/project/${projectSfid}`,
auth: {
'bearer': bearerToken,
}
}).then((response) => {
expect(response.status).to.eq(200);
expect(response.body).to.not.be.null;
expect(response.body).to.not.be.null;
let list=response.body;
// Validate specific data in the response
expect(list).to.have.property('NextKey');
Expand Down Expand Up @@ -164,7 +165,7 @@ it("Get events of foundation project - Record should Returns 200 Response", func
});

function fetchNextRecords(URL,NextKey){

if(NextKey!==undefined){
cy.request({
method: 'GET',
url: `${URL}?nextKey=${NextKey}&pageSize=50`,
Expand All @@ -180,5 +181,6 @@ it("Get events of foundation project - Record should Returns 200 Response", func
fetchNextRecords(URL,updatedNextKey);
}
});
}
}
})
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"list": {
"type": "array",
"items": [
{
"type": "object",
"properties": {
"assigned_on": {
"type": "string"
},
"company_id": {
"type": "string"
},
"company_sfid": {
"type": "string"
},
"email": {
"type": "string"
},
"lf_username": {
"type": "string"
},
"name": {
"type": "string"
},
"project_name": {
"type": "string"
},
"project_sfid": {
"type": "string"
},
"type": {
"type": "string"
},
"user_sfid": {
"type": "string"
}
},
"required": [
"assigned_on",
"company_id",
"company_sfid",
"email",
"lf_username",
"name",
"project_name",
"project_sfid",
"type",
"user_sfid"
]
}
]
}
},
"required": [
"list"
]
}
Loading

0 comments on commit b6c39a4

Please sign in to comment.