diff --git a/client/src/pages/email-sign-up.tsx b/client/src/pages/email-sign-up.tsx index 7df6f055e1..91c9a032a0 100644 --- a/client/src/pages/email-sign-up.tsx +++ b/client/src/pages/email-sign-up.tsx @@ -64,7 +64,10 @@ function AcceptPrivacyTerms({ {t('misc.email-signup')} | freeCodeCamp.org - + {t('misc.email-signup')} diff --git a/cypress/integration/user/privacy-terms.js b/cypress/integration/user/privacy-terms.js new file mode 100644 index 0000000000..5ab7c8c094 --- /dev/null +++ b/cypress/integration/user/privacy-terms.js @@ -0,0 +1,30 @@ +describe('Privacy terms', () => { + it('should not redirect away from email sign up page on login', () => { + // Flag used to identify if the `/update-privacy-terms` have been called + let privacyTermsUpdated = false; + cy.intercept('PUT', '/update-privacy-terms', () => { + privacyTermsUpdated = true; + }).as('updatePrivacyTerms'); + + // Seed dev user with `acceptedPrivacyTerms` unset + cy.exec('npm run seed -- --unset-privacy-terms'); + // Go to the homepage and log in manually so we can assert the following: + // 1. Redirection to /email-sign-up works properly + // 2. The /update-privacy-terms has not been requested + cy.visit('/'); + cy.get('[data-test-label="landing-small-cta"]').click(); + cy.location('pathname').should('contain', '/email-sign-up'); + cy.wrap(privacyTermsUpdated).should('eq', false); + // Assert email sign up elements and make sure we don't get redirected somewhere else + cy.title().should('contain', 'Email Sign Up'); + cy.get('[data-cy="email-sign-up"]').should('exist'); + // Navigate away from this page via quincy emails which should unmount the component + // and request /update-privacy-terms + cy.get('button:contains("Yes please")').click(); + cy.wait('@updatePrivacyTerms').then(() => { + expect(privacyTermsUpdated).to.eq(true); + cy.contains('Welcome back'); + cy.location('pathname').should('contain', '/learn'); + }); + }); +}); diff --git a/tools/scripts/seed/seedAuthUser.js b/tools/scripts/seed/seedAuthUser.js index 5f9c5fa87b..aa23504a69 100644 --- a/tools/scripts/seed/seedAuthUser.js +++ b/tools/scripts/seed/seedAuthUser.js @@ -25,7 +25,6 @@ function handleError(err, client) { } } -/* eslint-disable max-len */ const authUser = { _id: ObjectId('5bd30e0f1caf6ac3ddddddb5'), email: 'foo@bar.com', @@ -38,7 +37,9 @@ const authUser = { name: 'Development User', location: '', picture: defaultUserImage, - acceptedPrivacyTerms: true, + acceptedPrivacyTerms: envVariables.includes('--unset-privacy-terms') + ? null + : true, sendQuincyEmail: false, currentChallengeId: '', isHonest: false, @@ -84,6 +85,7 @@ const authUser = { emailAuthLinkTTL: null, emailVerifyTTL: null }; + const blankUser = { _id: ObjectId('5bd30e0f1caf6ac3ddddddb9'), email: 'bar@bar.com',