72 lines
2.1 KiB
JavaScript
72 lines
2.1 KiB
JavaScript
export function documentHasCookie(cookieAndValue) {
|
|
return document.cookie.split(';').some(item => item.includes(cookieAndValue));
|
|
}
|
|
|
|
export async function waitForCookie(cookieAndValue, expectCookie) {
|
|
const startTime = Date.now();
|
|
const hasCookie = await new Promise(resolve => {
|
|
const interval = setInterval(() => {
|
|
if (documentHasCookie(cookieAndValue)) {
|
|
clearInterval(interval);
|
|
resolve(true);
|
|
}
|
|
if (!expectCookie && Date.now() - startTime >= 1000) {
|
|
clearInterval(interval);
|
|
resolve(false);
|
|
}
|
|
}, 100);
|
|
});
|
|
assert_equals(hasCookie, expectCookie);
|
|
}
|
|
|
|
export function expireCookie(cookieAndAttributes) {
|
|
document.cookie =
|
|
`${cookieAndAttributes}; expires=Thu, 01 Jan 1970 00:00:00 UTC;`;
|
|
}
|
|
|
|
export function addCookieAndSessionCleanup(test) {
|
|
// Clean up any set cookies once the test completes.
|
|
test.add_cleanup(async () => {
|
|
const response = await fetch('end_session_via_clear_site_data.py');
|
|
assert_equals(response.status, 200);
|
|
});
|
|
}
|
|
|
|
export async function postJson(url, obj) {
|
|
return await fetch(url, {
|
|
method: 'POST',
|
|
headers: {'Content-Type': 'application/json'},
|
|
body: JSON.stringify(obj),
|
|
});
|
|
}
|
|
|
|
export async function configureServer(obj) {
|
|
const response = await fetch('configure_server.py', {
|
|
method: 'POST',
|
|
headers: {'Content-Type': 'application/json'},
|
|
body: JSON.stringify(obj),
|
|
});
|
|
assert_equals(response.status, 200);
|
|
}
|
|
|
|
export async function setupShardedServerState(testId) {
|
|
const obj = {};
|
|
if (testId !== undefined) {
|
|
obj.testId = testId;
|
|
}
|
|
const response = await fetch('setup_sharded_server_state.py', {
|
|
method: 'POST',
|
|
headers: {'Content-Type': 'application/json'},
|
|
body: JSON.stringify(obj),
|
|
});
|
|
assert_equals(response.status, 200);
|
|
const testIdCookie =
|
|
document.cookie.split(';').filter(item => item.includes('test_id'))[0];
|
|
return testIdCookie.split('=')[1];
|
|
}
|
|
|
|
export async function pullServerState() {
|
|
const response = await fetch('pull_server_state.py');
|
|
assert_equals(response.status, 200);
|
|
return await response.json();
|
|
}
|