Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SDK-1577] [SDK-1578] Add login functionality #5

Merged
merged 8 commits into from
May 7, 2020

Conversation

adamjmcgrath
Copy link
Contributor

@adamjmcgrath adamjmcgrath commented May 5, 2020

Description

Add login functionality to the auth0 hook

Testing

  • This change adds test coverage for new/changed/fixed functionality

Checklist

  • All active GitHub checks for tests, formatting, and security are passing
  • The correct base branch is being used, if not master

@adamjmcgrath adamjmcgrath added medium This PR may require moderate effort to action, or contains many changes to review CH: Added PR is adding feature or functionality labels May 5, 2020
@adamjmcgrath adamjmcgrath requested a review from a team May 5, 2020 10:18
import { renderHook } from '@testing-library/react-hooks';
import {
Auth0Client,
// @ts-ignore
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wanted to use manual mocks to mock the Auth0Client class https://jestjs.io/docs/en/es6-class-mocks#manual-mock

This is so that I can export the methods as individual mocked methods, so I can do:

expect(getTokenSilently).toHaveBeenCalled()

Rather than use automatic mocks and do this everywhere:

expect((Auth0Client as any as jest.Mock).mock.instances[0].getTokenSilently).toHaveBeenCalled()

Since TS doesn't understand mocking in Jest, we do have to ts-ignore the additional imports

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not something to change in this PR, but I think we need to think about why we're mocking the SPA SDK and whether that's the right thing, instead of mocking the resulting HTTP calls (or handling them with some kind of test proxy).

For the same reason we don't test or mock private methods, the fact we're using the SDK internally should just be that - an internal detail. HTTP calls out to the auth service are where the 'seams' are and it's the seams that should ideally be mocked. If we go down the path of mocking dependencies like these, we can lose sight of what happens when those dependencies change if we're always mocking out the ideal scenario.

__tests__/helpers.tsx Outdated Show resolved Hide resolved
src/auth-context.tsx Outdated Show resolved Hide resolved
@adamjmcgrath adamjmcgrath changed the title [SDK-1523] Add login functionality [SDK-1577] Add login functionality May 6, 2020
@adamjmcgrath adamjmcgrath changed the title [SDK-1577] Add login functionality [SDK-1577] [SDK-1578] Add login functionality May 6, 2020
@adamjmcgrath adamjmcgrath merged commit ceb2f16 into master May 7, 2020
@evansims evansims deleted the handle-redirect-callback branch July 5, 2022 21:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CH: Added PR is adding feature or functionality medium This PR may require moderate effort to action, or contains many changes to review
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants