-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
extract chunkString to utils configure jest add test to cookie manager and utils upgarde typescript
- Loading branch information
1 parent
e0ef961
commit f158248
Showing
11 changed files
with
1,589 additions
and
49 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
module.exports = { | ||
preset: 'ts-jest', | ||
transform: { | ||
'^.+\\.(ts|tsx)?$': 'ts-jest', | ||
'^.+\\.(js|jsx)$': 'babel-jest', | ||
}, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
export function chunkString(str: string, chunkSize: number) { | ||
const numChunks = Math.ceil(str.length / chunkSize); | ||
const chunks: string[] = []; | ||
for (let i = 0; i < numChunks; i++) { | ||
const start = i * chunkSize; | ||
const end = start + chunkSize; | ||
chunks.push(str.substring(start, end < str.length ? end : str.length)); | ||
} | ||
return chunks; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
import { CookieManager, FronteggConfig } from '../../../src'; | ||
import { smallCookieValue, bigCookieValue, cookieDomain, cookieName } from './const'; | ||
|
||
const extractValueOutOfCookie = (cookie: string) => | ||
cookie | ||
.split('; ') | ||
?.find((c) => c.includes(cookieName)) | ||
?.split('=')[1] ?? ''; | ||
|
||
describe('Cookie Manager', () => { | ||
it('getCookieName should return right cookie name', () => { | ||
const cookieNumber = 7; | ||
const cookieName = CookieManager.getCookieName(cookieNumber); | ||
expect(cookieName).toEqual(`${FronteggConfig.cookieName}-${cookieNumber}`); | ||
}); | ||
|
||
it('createCookie should create cookie properly', () => { | ||
const cookieValue = CookieManager.createCookie({ | ||
cookieName, | ||
value: smallCookieValue, | ||
expires: new Date(), | ||
isSecured: true, | ||
cookieDomain, | ||
}); | ||
|
||
expect(cookieValue.length).toEqual(1); | ||
expect(cookieValue[0]).toContain(`${cookieName}=${smallCookieValue}`); | ||
expect(cookieValue[0]).toContain('HttpOnly'); | ||
expect(cookieValue[0]).toContain('Secure'); | ||
expect(cookieValue[0]).toContain('SameSite=None'); | ||
expect(cookieValue[0]).toContain(`Domain=${cookieDomain}`); | ||
}); | ||
|
||
it('createCookie with big value should create split cookie properly', () => { | ||
const cookieValue = CookieManager.createCookie({ | ||
cookieName, | ||
value: bigCookieValue, | ||
expires: new Date(), | ||
isSecured: true, | ||
cookieDomain, | ||
}); | ||
const firstCookieName = CookieManager.getCookieName(1, cookieName); | ||
const secondCookieName = CookieManager.getCookieName(2, cookieName); | ||
|
||
const firstCookieValue = extractValueOutOfCookie(cookieValue[0]); | ||
const secondCookieValue = extractValueOutOfCookie(cookieValue[1]); | ||
|
||
expect(cookieValue.length).toEqual(2); | ||
|
||
expect(cookieValue[0]).toContain(`${firstCookieName}=${firstCookieValue}`); | ||
expect(cookieValue[0]).toContain('HttpOnly'); | ||
expect(cookieValue[0]).toContain('Secure'); | ||
expect(cookieValue[0]).toContain('SameSite=None'); | ||
expect(cookieValue[0]).toContain(`Domain=${cookieDomain}`); | ||
|
||
expect(cookieValue[1]).toContain(`${secondCookieName}=${secondCookieValue}`); | ||
expect(cookieValue[1]).toContain('HttpOnly'); | ||
expect(cookieValue[1]).toContain('Secure'); | ||
expect(cookieValue[1]).toContain('SameSite=None'); | ||
expect(cookieValue[1]).toContain(`Domain=${cookieDomain}`); | ||
|
||
expect(firstCookieValue + secondCookieValue).toEqual(bigCookieValue); | ||
}); | ||
|
||
it('createCookie with big value should create split cookie properly', () => { | ||
const cookieValue = CookieManager.createCookie({ | ||
cookieName, | ||
value: bigCookieValue, | ||
expires: new Date(), | ||
isSecured: true, | ||
cookieDomain, | ||
}); | ||
const firstCookieName = CookieManager.getCookieName(1, cookieName); | ||
const secondCookieName = CookieManager.getCookieName(2, cookieName); | ||
|
||
expect(cookieValue.length).toEqual(2); | ||
|
||
expect(cookieValue[0]).toContain(firstCookieName); | ||
expect(cookieValue[0]).toContain('HttpOnly'); | ||
expect(cookieValue[0]).toContain('Secure'); | ||
expect(cookieValue[0]).toContain('SameSite=None'); | ||
expect(cookieValue[0]).toContain(`Domain=${cookieDomain}`); | ||
|
||
expect(cookieValue[1]).toContain(secondCookieName); | ||
expect(cookieValue[1]).toContain('HttpOnly'); | ||
expect(cookieValue[1]).toContain('Secure'); | ||
expect(cookieValue[1]).toContain('SameSite=None'); | ||
expect(cookieValue[1]).toContain(`Domain=${cookieDomain}`); | ||
}); | ||
|
||
it('createEmptyCookies should accepts cookie names and create same cookies with empty value and expiration date equals to now', () => { | ||
const emptyCookies = CookieManager.createEmptyCookies(true, cookieDomain, [cookieName]); | ||
|
||
expect(emptyCookies.length).toEqual(1); | ||
expect(emptyCookies[0]).toContain(`${cookieName}=;`); | ||
expect(emptyCookies[0]).toContain('HttpOnly'); | ||
expect(emptyCookies[0]).toContain('Secure'); | ||
expect(emptyCookies[0]).toContain('SameSite=None'); | ||
expect(emptyCookies[0]).toContain(`Domain=${cookieDomain}`); | ||
expect(emptyCookies[0]).toContain(`Expires=${new Date().toUTCString()}`); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
export const smallCookieValue = 'value'; | ||
export const bigCookieValue = | ||
'vjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjjvjsdhavkljdrbonfoknmokfmnoksrjtnokbsmrtkbmsrobmormbowrjtnojetynjj'; | ||
export const cookieDomain = 'domain'; | ||
export const cookieName = 'cookieName'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
import { chunkString } from '../../../src/common/utils'; | ||
|
||
describe('utils', () => { | ||
it('chunkString should return array of strings with the right chunk size', () => { | ||
const chunkSize = 3; | ||
const chunks = chunkString('123456', chunkSize); | ||
expect(chunks.length).toEqual(2); | ||
expect(chunks[0].length).toEqual(chunkSize); | ||
expect(chunks[1].length).toEqual(chunkSize); | ||
}); | ||
|
||
it('chunkString should return array of one string if chunk size is bigger then string size', () => { | ||
const chunkSize = 9; | ||
const string = '123456'; | ||
const chunks = chunkString(string, chunkSize); | ||
expect(chunks.length).toEqual(1); | ||
expect(chunks[0].length).toEqual(string.length); | ||
}); | ||
|
||
it('chunkString should return array of strings with the right chunk size and also last item if his size is not equal chunk size', () => { | ||
const chunkSize = 3; | ||
const string = '12345678'; | ||
const chunks = chunkString(string, chunkSize); | ||
expect(chunks.length).toEqual(3); | ||
expect(chunks[0].length).toEqual(chunkSize); | ||
expect(chunks[1].length).toEqual(chunkSize); | ||
expect(chunks[2].length).not.toEqual(chunkSize); | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.