Skip to content

Commit

Permalink
Extract common testing functions
Browse files Browse the repository at this point in the history
  • Loading branch information
sammacbeth committed Aug 17, 2021
1 parent 1db29b2 commit edf4cab
Showing 1 changed file with 41 additions and 35 deletions.
76 changes: 41 additions & 35 deletions integration-test/background/storage.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,77 +18,83 @@ async function setup () {
return { browser, page }
}

async function loadTestPage () {
let cookies = []
const { browser, page } = await setup()
try {
// Load the test pages home first to give some time for the extension background to start
// and register the content-script-message handler
await page.goto(`https://${testPageDomain}/`, { waitUntil: 'networkidle0' })
await page.bringToFront()
await page.goto(`https://${testPageDomain}/privacy-protections/storage-blocking/?store`, { waitUntil: 'networkidle2' })
await waitForAllResults(page)
// collect all browser cookies
cookies = (await page._client.send('Network.getAllCookies')).cookies
} finally {
await page.close()
await harness.teardown(browser)
}
return cookies
}


async function waitForAllResults (page) {
while ((await page.$$('#tests-details > li > span > ul')).length < 2) {
await new Promise(resolve => setTimeout(resolve, 100))
}
}

function expectCookieExists (cookies, cookieName, cookieDomain) {
const cookie = cookies.find(({ name, domain }) => name === cookieName && domain === cookieDomain)
expect(cookie).toBeTruthy()
expect(cookie.expires).toBeGreaterThan(Date.now() / 1000)
return cookie
}

function expectCookieNotExists (cookies, cookieName, cookieDomain) {
const cookie = cookies.find(({ name, domain }) => name === cookieName && domain === cookieDomain)
expect(cookie).toBeUndefined()
}

describe('Storage blocking Tests', () => {
describe(`On https://${testPageDomain}/privacy-protections/storage-blocking/`, () => {
let cookies = []

beforeAll(async () => {
const { browser, page } = await setup()
try {
// Load the test pages home first to give some time for the extension background to start
// and register the content-script-message handler
await page.goto(`https://${testPageDomain}/`, { waitUntil: 'networkidle0' })
await page.bringToFront()
await page.goto(`https://${testPageDomain}/privacy-protections/storage-blocking/?store`, { waitUntil: 'networkidle2' })
await waitForAllResults(page)
// collect all browser cookies
cookies = (await page._client.send('Network.getAllCookies')).cookies
} finally {
await page.close()
await harness.teardown(browser)
}
cookies = await loadTestPage()
})

it('does not block 1st party HTTP cookies', () => {
const headerCookie = cookies.find(({ name, domain }) => name === 'headerdata' && domain === testPageDomain)
expect(headerCookie).toBeTruthy()
expect(headerCookie.expires).toBeGreaterThan(Date.now() / 1000)
expectCookieExists(cookies, 'headerdata', testPageDomain)
})

it('does not block 3rd party HTTP cookies not on block list', () => {
const headerCookie = cookies.find(({ name, domain }) => name === 'headerdata' && domain === thirdPartyDomain)
expect(headerCookie).toBeTruthy()
expect(headerCookie.expires).toBeGreaterThan(Date.now() / 1000)
expectCookieExists(cookies, 'headerdata', thirdPartyDomain)
})

it('blocks 3rd party HTTP cookies for trackers', () => {
const headerCookie = cookies.find(({ name, domain }) => name === 'headerdata' && domain === thirdPartyTracker)
expect(headerCookie).toBeUndefined()
expectCookieNotExists(cookies, 'headerdata', thirdPartyTracker)
})

it('does not block 1st party JS cookies', () => {
const jsCookie = cookies.find(({ name, domain }) => name === 'jsdata' && domain === testPageDomain)
expect(jsCookie).toBeTruthy()
expect(jsCookie.expires).toBeGreaterThan(Date.now() / 1000)
expectCookieExists(cookies, 'jsdata', testPageDomain)
})

it('does not block 3rd party JS cookies not on block list', () => {
const jsCookie = cookies.find(({ name, domain }) => name === 'jsdata' && domain === thirdPartyDomain)
expect(jsCookie).toBeTruthy()
expect(jsCookie.expires).toBeGreaterThan(Date.now() / 1000)
expectCookieExists(cookies, 'jsdata', thirdPartyDomain)
})

it('blocks 3rd party JS cookies from trackers', () => {
const headerCookie = cookies.find(({ name, domain }) => name === 'jsdata' && domain === thirdPartyTracker)
expect(headerCookie).toBeUndefined()
expectCookieNotExists(cookies, 'jsdata', thirdPartyTracker)
})

it('does not block 1st party JS cookies set by non-trackers', () => {
const jsCookie = cookies.find(({ name, domain }) => name === 'tpsdata' && domain === testPageDomain)
expect(jsCookie).toBeTruthy()
const jsCookie = expectCookieExists(cookies, 'tpsdata', testPageDomain)
expect(jsCookie.expires).toBeGreaterThan(Date.now() / 1000 + 950400) // 11 days in the future
})

it('reduces the expiry of 1st party JS cookies set by trackers to 8 days', () => {
const jsCookie = cookies.find(({ name, domain }) => name === 'tptdata' && domain === testPageDomain)
expect(jsCookie).toBeTruthy()
expect(jsCookie.expires).toBeGreaterThan(Date.now() / 1000)
const jsCookie = expectCookieExists(cookies, 'tptdata', testPageDomain)
expect(jsCookie.expires).toBeLessThan(Date.now() / 1000 + 864000) // 10 days in the future
})
})
Expand Down

0 comments on commit edf4cab

Please sign in to comment.