fix: fix duplicate mfe context calls and cookie set exc (#1103)

This commit is contained in:
Syed Sajjad Hussain Shah
2023-11-16 10:44:29 +05:00
committed by GitHub
parent a957973105
commit 4ff14c8731
3 changed files with 61 additions and 9 deletions

View File

@@ -2,9 +2,7 @@ import { THIRD_PARTY_AUTH_CONTEXT, THIRD_PARTY_AUTH_CONTEXT_CLEAR_ERROR_MSG } fr
import { COMPLETE_STATE, FAILURE_STATE, PENDING_STATE } from '../../data/constants';
export const defaultState = {
fieldDescriptions: {
fields: {},
},
fieldDescriptions: {},
optionalFields: {
fields: {},
extended_profile: [],
@@ -33,7 +31,7 @@ const reducer = (state = defaultState, action = {}) => {
case THIRD_PARTY_AUTH_CONTEXT.SUCCESS: {
return {
...state,
fieldDescriptions: action.payload.fieldDescriptions.fields,
fieldDescriptions: action.payload.fieldDescriptions?.fields,
optionalFields: action.payload.optionalFields,
thirdPartyAuthContext: action.payload.thirdPartyAuthContext,
thirdPartyAuthApiStatus: COMPLETE_STATE,

View File

@@ -0,0 +1,52 @@
import { getConfig } from '@edx/frontend-platform';
import Cookies from 'universal-cookie';
import { setCookie } from '../utils';
// Mock getConfig function
jest.mock('@edx/frontend-platform', () => ({
getConfig: jest.fn(),
}));
// Mock Cookies class
jest.mock('universal-cookie');
describe('setCookie function', () => {
beforeEach(() => {
jest.clearAllMocks();
});
it('should set a cookie with default options', () => {
getConfig.mockReturnValue({ SESSION_COOKIE_DOMAIN: 'example.com' });
setCookie('testCookie', 'testValue');
expect(Cookies).toHaveBeenCalled();
expect(Cookies).toHaveBeenCalledWith();
expect(Cookies.prototype.set).toHaveBeenCalledWith('testCookie', 'testValue', {
domain: 'example.com',
path: '/',
});
});
it('should set a cookie with specified expiry', () => {
getConfig.mockReturnValue({ SESSION_COOKIE_DOMAIN: 'example.com' });
const expiry = new Date('2023-12-31');
setCookie('testCookie', 'testValue', expiry);
expect(Cookies).toHaveBeenCalled();
expect(Cookies).toHaveBeenCalledWith();
expect(Cookies.prototype.set).toHaveBeenCalledWith('testCookie', 'testValue', {
domain: 'example.com',
path: '/',
expires: expiry,
});
});
it('should not set a cookie if cookieName is undefined', () => {
setCookie(undefined, 'testValue');
expect(Cookies).not.toHaveBeenCalled();
});
});

View File

@@ -2,10 +2,12 @@ import { getConfig } from '@edx/frontend-platform';
import Cookies from 'universal-cookie';
export default function setCookie(cookieName, cookieValue, cookieExpiry) {
const cookies = new Cookies();
const options = { domain: getConfig().SESSION_COOKIE_DOMAIN, path: '/' };
if (cookieExpiry) {
options.expires = cookieExpiry;
if (cookieName) { // To avoid setting getting exception when setting cookie with undefined names.
const cookies = new Cookies();
const options = { domain: getConfig().SESSION_COOKIE_DOMAIN, path: '/' };
if (cookieExpiry) {
options.expires = cookieExpiry;
}
cookies.set(cookieName, cookieValue, options);
}
cookies.set(cookieName, cookieValue, options);
}