onesignal-web-sdk
Version:
Web push notifications from OneSignal.
66 lines (47 loc) • 2.82 kB
text/typescript
import '../../support/polyfills/polyfills';
import test from 'ava';
import sinon from 'sinon';
import { TestEnvironment, HttpHttpsEnvironment } from '../../support/sdk/TestEnvironment';
import ServiceWorkerRegistration from '../../support/mocks/service-workers/models/ServiceWorkerRegistration';
import ServiceWorker from '../../support/mocks/service-workers/ServiceWorker';
import { ServiceWorkerContainer } from '../../support/mocks/service-workers/ServiceWorkerContainer';
const VAPID_PUBLIC_KEY_1 = 'CAdXhdGDgXJfJccxabiFhmlyTyF17HrCsfyIj3XEhg2j-RmT4wXU7lHiBPqSKSotvtfejZlAaPywJ3E-3AxXQBj1';
const VAPID_PUBLIC_KEY_2 =
'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgrjd4cWBgjEtiIqh45fbzkJdlr8ir7ZidvNzMAsHP_uBQuPsn1n5QWYqJy80fkkjbf-1LH99C_y9RjLGjsesUg';
test.beforeEach(async t => {
await TestEnvironment.initialize({
httpOrHttps: HttpHttpsEnvironment.Https
});
});
test('mock service worker browser API properties should exist', async t => {
t.true(navigator.serviceWorker instanceof ServiceWorkerContainer);
t.true(navigator.serviceWorker.getRegistration instanceof Function);
t.true(navigator.serviceWorker.getRegistrations instanceof Function);
t.true(navigator.serviceWorker.ready instanceof Promise);
t.true(navigator.serviceWorker.register instanceof Function);
t.true(navigator.serviceWorker.addEventListener instanceof Function);
});
test('mock service worker should not return an existing registration for a clean run', async t => {
t.is(navigator.serviceWorker.controller, null);
const registration = await navigator.serviceWorker.getRegistration();
t.is(registration, null);
const registrations = await navigator.serviceWorker.getRegistrations();
t.deepEqual(registrations, []);
});
test('mock service worker registration should return the registered worker', async t => {
await navigator.serviceWorker.register('/worker.js', { scope: '/' });
t.true(navigator.serviceWorker.controller instanceof ServiceWorker);
const registration = await navigator.serviceWorker.getRegistration();
t.true(registration instanceof ServiceWorkerRegistration);
const registrations = await navigator.serviceWorker.getRegistrations();
t.deepEqual(registrations, [registration]);
});
test('mock service worker unregistration should return no registered workers', async t => {
await navigator.serviceWorker.register('/worker.js', { scope: '/' });
const initialRegistration = await navigator.serviceWorker.getRegistration();
await initialRegistration.unregister();
const postUnsubscribeRegistration = await navigator.serviceWorker.getRegistration();
t.is(postUnsubscribeRegistration, null);
const registrations = await navigator.serviceWorker.getRegistrations();
t.deepEqual(registrations, []);
});