Skip to content

Commit

Permalink
DT-988: Remove awaits for Metrics calls (#2724)
Browse files Browse the repository at this point in the history
  • Loading branch information
rushtong authored Nov 14, 2024
1 parent b4b1f12 commit cc03b8f
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 20 deletions.
34 changes: 24 additions & 10 deletions cypress/component/SignIn/sign_in_button.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,18 @@ import {Metrics} from '../../../src/libs/ajax/Metrics';
import {StackdriverReporter} from '../../../src/libs/stackdriverReporter';
import {ToS} from '../../../src/libs/ajax/ToS';
import {mockOidcUser} from '../Auth/mockOidcUser';

const signInText = 'Sign In';

const duosUser = {
displayName: 'display name',
email: 'test@user.com',
isAdmin: true,
isAlumni: false,
isChairPerson: false,
isDataSubmitter: false,
isMember: false,
isResearcher: false,
isSigningOfficial: false,
roles: [{
name: 'Admin'
}]
Expand All @@ -33,6 +39,11 @@ const notAcceptedUserStatus = Object.assign({}, userStatus, {'tosAccepted': fals

describe('Sign In: Component Loads', function () {

// Intercept configuration calls
beforeEach(() => {
cy.initApplicationConfig();
});

it('Sign In Button Loads', function () {
cy.viewport(600, 300);
mount(<SignInButton history={undefined}/>);
Expand All @@ -42,14 +53,15 @@ describe('Sign In: Component Loads', function () {
it('Sign In: On Success', function () {
cy.viewport(600, 300);
cy.stub(Auth, 'signIn').returns(Promise.resolve(mockOidcUser));
cy.stub(User, 'getMe').returns(duosUser);
cy.intercept({method: 'GET', url: '**/api/user/me'}, {statusCode: 200, body: duosUser}).as('getMe');
cy.stub(StackdriverReporter, 'report');
cy.stub(Metrics, 'identify');
cy.stub(Metrics, 'syncProfile');
cy.stub(Metrics, 'captureEvent');
cy.stub(ToS, 'getStatus').returns(userStatus);
mount(<SignInButton history={[]}/>);
cy.get('button').click().then(() => {
cy.get('button').click();
cy.wait('@getMe').then(() => {
expect(Storage.getCurrentUser()).to.deep.equal(duosUser);
expect(Storage.getAnonymousId()).to.not.be.null;
expect(StackdriverReporter.report).to.not.be.called;
Expand All @@ -63,29 +75,31 @@ describe('Sign In: Component Loads', function () {
const bareUser = {email: 'test@user.com'};
cy.viewport(600, 300);
cy.stub(Auth, 'signIn').returns(Promise.resolve(mockOidcUser));
cy.stub(User, 'getMe').returns(bareUser);
cy.intercept({method: 'GET', url: '**/api/user/me'}, {statusCode: 200, body: bareUser}).as('getMe');
cy.stub(StackdriverReporter, 'report');
cy.stub(Metrics, 'identify');
cy.stub(Metrics, 'syncProfile');
cy.stub(Metrics, 'captureEvent');
cy.stub(ToS, 'getStatus').returns(userStatus);
mount(<SignInButton history={[]}/>);
cy.get('button').click().then(() => {
cy.get('button').click();
cy.wait('@getMe').then(() => {
expect(StackdriverReporter.report).to.be.called;
});
});

it('Sign In: Redirects to ToS if not accepted', function () {
cy.viewport(600, 300);
cy.stub(Auth, 'signIn').returns(Promise.resolve(mockOidcUser));
cy.stub(User, 'getMe').returns(duosUser);
cy.intercept({method: 'GET', url: '**/api/user/me'}, {statusCode: 200, body: duosUser}).as('getMe');
cy.stub(ToS, 'getStatus').returns(notAcceptedUserStatus);
cy.stub(Metrics, 'identify');
cy.stub(Metrics, 'syncProfile');
cy.stub(Metrics, 'captureEvent');
let history = [];
mount(<SignInButton history={history}/>);
cy.get('button').click().then(() => {
cy.get('button').click();
cy.wait('@getMe').then(() => {
expect(history).to.not.be.empty;
expect(history[0].includes('tos_acceptance')).to.be.true;
});
Expand All @@ -96,15 +110,15 @@ describe('Sign In: Component Loads', function () {
cy.stub(Auth, 'signIn').returns(Promise.resolve(mockOidcUser));
// Simulate user not found
cy.stub(User, 'getMe').throws();
cy.stub(User, 'registerUser').returns(duosUser);
cy.intercept({method: 'POST', url: '**/api/user'}, {statusCode: 200, body: duosUser}).as('registerUser');
cy.stub(ToS, 'getStatus').returns(notAcceptedUserStatus);
cy.stub(Metrics, 'identify');
cy.stub(Metrics, 'syncProfile');
cy.stub(Metrics, 'captureEvent');
let history = [];
mount(<SignInButton history={history}/>);
cy.get('button').click().then(() => {
expect(User.registerUser).to.be.called;
cy.get('button').click();
cy.wait('@registerUser').then(() => {
expect(history).to.not.be.empty;
expect(history[0].includes('tos_acceptance')).to.be.true;
});
Expand Down
24 changes: 23 additions & 1 deletion cypress/support/commands.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,26 @@ Cypress.Commands.add('auth', async (roleName) => {
const url = Cypress.env('baseUrl');
await client.request({ url });
return client.credentials;
});
});

Cypress.Commands.add('initApplicationConfig', () => {
cy.intercept({
method: 'GET',
url: '/config.json',
hostname: 'localhost',
}, {
'env': 'ci',
'hash': '',
'tag': '',
'bardApiUrl': '',
'apiUrl': '',
'ontologyApiUrl': '',
'terraUrl': '',
'tdrApiUrl': '',
'errorApiKey': '',
'profileUrl': '',
'nihUrl': '',
'gaId': '',
'features': {}
});
});
9 changes: 6 additions & 3 deletions src/components/SignInButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,12 @@ export const SignInButton = (props: SignInButtonProps) => {

const syncSignInOrRegistrationEvent = async (event: String) => {
Storage.setAnonymousId();
await Metrics.identify(Storage.getAnonymousId());
await Metrics.syncProfile();
await Metrics.captureEvent(event);
// noinspection ES6MissingAwait
Metrics.identify(Storage.getAnonymousId());
// noinspection ES6MissingAwait
Metrics.syncProfile();
// noinspection ES6MissingAwait
Metrics.captureEvent(event);
};

const errorStreamToString = async (error: HttpError) => {
Expand Down
9 changes: 6 additions & 3 deletions src/libs/ajax/DAR.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ export const DAR = {

//v2, v3 Draft DAR Update
updateDarDraft: async (dar, referenceId) => {
await Metrics.captureEvent(eventList.dar, {'action': 'update'});
// noinspection ES6MissingAwait
Metrics.captureEvent(eventList.dar, {'action': 'update'});
const url = DAAUtils.isEnabled() ?
`${await getApiUrl()}/api/dar/v3/draft/${referenceId}` :
`${await getApiUrl()}/api/dar/v2/draft/${referenceId}`;
Expand All @@ -29,7 +30,8 @@ export const DAR = {

//v2, v3 Draft DAR Creation
postDarDraft: async (dar) => {
await Metrics.captureEvent(eventList.dar, {'action': 'draft'});
// noinspection ES6MissingAwait
Metrics.captureEvent(eventList.dar, {'action': 'draft'});
const url = DAAUtils.isEnabled() ?
`${await getApiUrl()}/api/dar/v3/draft` :
`${await getApiUrl()}/api/dar/v2/draft`;
Expand All @@ -46,7 +48,8 @@ export const DAR = {

//v2, v3 DAR Creation
postDar: async (dar) => {
await Metrics.captureEvent(eventList.dar, {'action': 'submit'});
// noinspection ES6MissingAwait
Metrics.captureEvent(eventList.dar, {'action': 'submit'});
const filteredDar = fp.omit(['createDate', 'sortDate', 'data_access_request_id'])(dar);
const url = DAAUtils.isEnabled() ?
`${await getApiUrl()}/api/dar/v3` :
Expand Down
5 changes: 3 additions & 2 deletions src/pages/DatasetSearch.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -275,9 +275,10 @@ export const DatasetSearch = (props) => {

useEffect(() => {
const init = async () => {
// noinspection ES6MissingAwait
key === '/datalibrary' ?
await Metrics.captureEvent(eventList.dataLibrary) :
await Metrics.captureEvent(eventList.dataLibrary, {'brand': key.replaceAll('/', '').toLowerCase()});
Metrics.captureEvent(eventList.dataLibrary) :
Metrics.captureEvent(eventList.dataLibrary, {'brand': key.replaceAll('/', '').toLowerCase()});
};
init();
}, [key]);
Expand Down
3 changes: 2 additions & 1 deletion src/pages/dar_application/DataAccessRequestApplication.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,8 @@ const DataAccessRequestApplication = (props) => {
if (isInvalidForm) {
scrollToFormErrors(validation, eraCommonsIdValid, hasLibraryCard);
} else {
await Metrics.captureEvent(eventList.dar, {'action': 'attest'});
// noinspection ES6MissingAwait
Metrics.captureEvent(eventList.dar, {'action': 'attest'});
setIsAttested(true);
addDucAddendumTab();
await goToDucAddendum();
Expand Down

0 comments on commit cc03b8f

Please sign in to comment.