UNPKG

onesignal-web-sdk

Version:

Web push notifications from OneSignal.

69 lines (53 loc) 3.05 kB
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 PushManager from '../../support/mocks/service-workers/models/PushManager'; import PushSubscriptionOptions from '../../support/mocks/service-workers/models/PushSubscriptionOptions'; import PushSubscription from '../../support/mocks/service-workers/models/PushSubscription'; import Random from "../../support/tester/Random"; 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 }); await navigator.serviceWorker.register('/worker.js'); }); test('mock push manager properties should exist', async t => { const registration: ServiceWorkerRegistration = await navigator.serviceWorker.getRegistration() as any; t.true(registration.pushManager instanceof PushManager); t.true(registration.pushManager.getSubscription instanceof Function); t.true(registration.pushManager.subscribe instanceof Function); }); test('mock push manager should not return an existing subscription for a clean run', async t => { const registration: ServiceWorkerRegistration = await navigator.serviceWorker.getRegistration() as any; const subscription = await registration.pushManager.getSubscription(); t.is(subscription, null); }); test('mock push manager should subscribe successfully', async t => { const registration: ServiceWorkerRegistration = await navigator.serviceWorker.getRegistration() as any; const subscriptionOptions: PushSubscriptionOptions = { userVisibleOnly: true, applicationServerKey: Random.getRandomUint8Array(64).buffer }; const subscription = await registration.pushManager.subscribe(subscriptionOptions); t.true(subscription instanceof PushSubscription); t.is(typeof subscription.endpoint, typeof ''); t.true(subscription.getKey instanceof Function); t.deepEqual(subscription.options, subscriptionOptions); t.true(subscription.toJSON instanceof Function); t.true(subscription.unsubscribe instanceof Function); }); test('mock push manager should unsubscribe successfully', async t => { const registration: ServiceWorkerRegistration = await navigator.serviceWorker.getRegistration() as any; let subscription = await registration.pushManager.subscribe({ userVisibleOnly: true, applicationServerKey: Random.getRandomUint8Array(64).buffer }); await subscription.unsubscribe(); subscription = await registration.pushManager.getSubscription(); t.is(subscription, null); });