mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-02 20:18:08 +00:00
* fix: cookie setting * chore: remove debug statement * chore: add specs to test stringify
147 lines
3.6 KiB
JavaScript
147 lines
3.6 KiB
JavaScript
import Cookies from 'js-cookie';
|
|
import {
|
|
getUserCookieName,
|
|
getUserString,
|
|
hasUserKeys,
|
|
setCookieWithDomain,
|
|
} from '../cookieHelpers';
|
|
|
|
describe('#getUserCookieName', () => {
|
|
it('returns correct cookie name', () => {
|
|
global.$chatwoot = { websiteToken: '123456' };
|
|
expect(getUserCookieName()).toBe('cw_user_123456');
|
|
});
|
|
});
|
|
|
|
describe('#getUserString', () => {
|
|
it('returns correct user string', () => {
|
|
expect(
|
|
getUserString({
|
|
user: {
|
|
name: 'Pranav',
|
|
email: 'pranav@example.com',
|
|
avatar_url: 'https://images.chatwoot.com/placeholder',
|
|
identifier_hash: '12345',
|
|
},
|
|
identifier: '12345',
|
|
})
|
|
).toBe(
|
|
'avatar_urlhttps://images.chatwoot.com/placeholderemailpranav@example.comnamePranavidentifier_hash12345identifier12345'
|
|
);
|
|
|
|
expect(
|
|
getUserString({
|
|
user: {
|
|
email: 'pranav@example.com',
|
|
avatar_url: 'https://images.chatwoot.com/placeholder',
|
|
},
|
|
})
|
|
).toBe(
|
|
'avatar_urlhttps://images.chatwoot.com/placeholderemailpranav@example.comnameidentifier_hashidentifier'
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('#hasUserKeys', () => {
|
|
it('checks whether the allowed list of keys are present', () => {
|
|
expect(hasUserKeys({})).toBe(false);
|
|
expect(hasUserKeys({ randomKey: 'randomValue' })).toBe(false);
|
|
expect(hasUserKeys({ avatar_url: 'randomValue' })).toBe(true);
|
|
});
|
|
});
|
|
|
|
// Mock the 'set' method of the 'Cookies' object
|
|
jest.mock('js-cookie', () => ({
|
|
set: jest.fn(),
|
|
}));
|
|
|
|
describe('setCookieWithDomain', () => {
|
|
afterEach(() => {
|
|
// Clear mock calls after each test
|
|
Cookies.set.mockClear();
|
|
});
|
|
|
|
it('should set a cookie with default parameters', () => {
|
|
setCookieWithDomain('myCookie', 'cookieValue');
|
|
|
|
expect(Cookies.set).toHaveBeenCalledWith(
|
|
'myCookie',
|
|
'cookieValue',
|
|
expect.objectContaining({
|
|
expires: 365,
|
|
sameSite: 'Lax',
|
|
domain: undefined,
|
|
})
|
|
);
|
|
});
|
|
|
|
it('should set a cookie with custom expiration and sameSite attribute', () => {
|
|
setCookieWithDomain('myCookie', 'cookieValue', {
|
|
expires: 30,
|
|
});
|
|
|
|
expect(Cookies.set).toHaveBeenCalledWith(
|
|
'myCookie',
|
|
'cookieValue',
|
|
expect.objectContaining({
|
|
expires: 30,
|
|
sameSite: 'Lax',
|
|
domain: undefined,
|
|
})
|
|
);
|
|
});
|
|
|
|
it('should set a cookie with a specific base domain', () => {
|
|
setCookieWithDomain('myCookie', 'cookieValue', {
|
|
baseDomain: 'example.com',
|
|
});
|
|
|
|
expect(Cookies.set).toHaveBeenCalledWith(
|
|
'myCookie',
|
|
'cookieValue',
|
|
expect.objectContaining({
|
|
expires: 365,
|
|
sameSite: 'Lax',
|
|
domain: 'example.com',
|
|
})
|
|
);
|
|
});
|
|
|
|
it('should stringify the cookie value when setting', () => {
|
|
setCookieWithDomain(
|
|
'myCookie',
|
|
{ value: 'cookieValue' },
|
|
{
|
|
baseDomain: 'example.com',
|
|
}
|
|
);
|
|
|
|
expect(Cookies.set).toHaveBeenCalledWith(
|
|
'myCookie',
|
|
JSON.stringify({ value: 'cookieValue' }),
|
|
expect.objectContaining({
|
|
expires: 365,
|
|
sameSite: 'Lax',
|
|
domain: 'example.com',
|
|
})
|
|
);
|
|
});
|
|
|
|
it('should set a cookie with custom expiration, sameSite attribute, and specific base domain', () => {
|
|
setCookieWithDomain('myCookie', 'cookieValue', {
|
|
expires: 7,
|
|
baseDomain: 'example.com',
|
|
});
|
|
|
|
expect(Cookies.set).toHaveBeenCalledWith(
|
|
'myCookie',
|
|
'cookieValue',
|
|
expect.objectContaining({
|
|
expires: 7,
|
|
sameSite: 'Lax',
|
|
domain: 'example.com',
|
|
})
|
|
);
|
|
});
|
|
});
|