diff --git a/__tests__/actions/auth.js b/__tests__/actions/auth.js index 2922e0b4..a36ef7e3 100644 --- a/__tests__/actions/auth.js +++ b/__tests__/actions/auth.js @@ -1,13 +1,17 @@ const MOCK_GROUPS_REQ_URL = 'https://api.topcoder-dev.com/v5/groups?memberId=12345&membershipType=user'; -const MOCK_PROFILE_REQ_URL = 'https://api.topcoder-dev.com/v5/members/username12345'; +const MOCK_PROFILE_REQ_URL = 'https://api.topcoder-dev.com/v3/members/username12345'; jest.mock('isomorphic-fetch', () => jest.fn(url => Promise.resolve({ ok: true, json: () => { let content; switch (url) { - case MOCK_GROUPS_REQ_URL: content = ['Group1', 'Group2']; break; - case MOCK_PROFILE_REQ_URL: content = [{ userId: 12345 }]; break; + case MOCK_GROUPS_REQ_URL: + content = ['Group1', 'Group2']; + break; + case MOCK_PROFILE_REQ_URL: + content = { result: { content: { userId: 12345 }, status: 200 } }; + break; default: throw new Error('Unexpected URL!'); } return content; diff --git a/src/actions/auth.js b/src/actions/auth.js index 0a611f43..f758d9ed 100644 --- a/src/actions/auth.js +++ b/src/actions/auth.js @@ -5,23 +5,23 @@ import { createActions } from 'redux-actions'; import { decodeToken } from 'tc-accounts'; -import { getApi } from '../services/api'; +import { getApiV3, getApiV5 } from '../services/api'; /** * @static - * @desc Creates an action that loads Topcoder user profile from v5 API. + * @desc Creates an action that loads Topcoder user profile from v3 API. * @param {String} userTokenV3 v3 authentication token. * @return {Action} */ function loadProfileDone(userTokenV3) { if (!userTokenV3) return Promise.resolve(null); const user = decodeToken(userTokenV3); - const api = getApi('V5', userTokenV3); + const apiV3 = getApiV3(userTokenV3); + const apiV5 = getApiV5(userTokenV3); return Promise.all([ - api.get(`/members/${user.handle}`) - .then(res => (res.ok ? res.json() : new Error(res.statusText))) - .then(res => (res.message ? new Error(res.message) : res[0])), - api.get(`/groups?memberId=${user.userId}&membershipType=user`) + apiV3.get(`/members/${user.handle}`) + .then(res => res.json()).then(res => (res.result.status === 200 ? res.result.content : {})), + apiV5.get(`/groups?memberId=${user.userId}&membershipType=user`) .then(res => (res.ok ? res.json() : new Error(res.statusText))) .then(res => (res.message ? new Error(res.message) : res)), ]).then(([profile, groups]) => ({ ...profile, groups }));