Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const encoder = credentials => Object.keys(credentials).map(key => `${encodeURIComponent(key)}=${encodeURIComponent(credentials[key])}`).join('&')
- const postLogin = credentials => {
- credentials.grant_type = 'password'
- const payload = {
- method: 'post',
- headers: config.LOGIN_HEADERS,
- data: encoder(credentials),
- url: `${config.IDENTITY_URL}/Token`
- }
- return axios(payload)
- }
- function * loginRequest (action) {
- try {
- const res = yield call(postLogin, action.credentials)
- utils.storeSessionData(res.data)
- yield put({ type: types.LOGIN_SUCCESS, data: res.data })
- } catch (err) {
- yield put({ type: types.LOGIN_FAILURE, err })
- }
- }
- function * loginSaga () {
- yield takeLatest(types.LOGIN_REQUEST, loginRequest)
- }
- export default loginSaga
- const loginReply = {
- isAuthenticating: false,
- isAuthenticated: true,
- email: 'foo@yahoo.com',
- token: 'access-token',
- userId: '1234F56',
- name: 'Jane Doe',
- title: 'Tester',
- phoneNumber: '123-456-7890',
- picture: 'pic-url',
- marketIds: [1, 2, 3]
- }
- describe('login-saga', () => {
- it('login identity user', async (done) => {
- // Setup Nock
- nock(config.IDENTITY_URL)
- .post('/Token', { userName: 'xxx@xxx.com', password: 'xxxxx' })
- .reply(200, loginReply)
- // Start up the saga tester
- const sagaTester = new SagaTester({})
- sagaTester.start(loginSaga)
- // Dispatch the event to start the saga
- sagaTester.dispatch({type: types.LOGIN_REQUEST})
- // Hook into the success action
- await sagaTester.waitFor(types.LOGIN_SUCCESS)
- // Check the resulting action
- expect(sagaTester.getLatestCalledAction()).to.deep.equal({
- type: types.LOGIN_SUCCESS,
- payload: loginReply
- })
- })
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement