blob: 40fb6dd269f4711ab631a18953ddd133bfa12454 [file] [log] [blame]
// META: title=PushSubscription tests
// META: global=window,serviceworker
// META: script=constants.js
let subscription = null;
if (GLOBAL.isWorker()) {
let activatePromise = new Promise(resolve => self.onactivate = resolve);
promise_test(async () => {
return activatePromise;
}, "wait for active service worker");
}
promise_test(() => {
assert_true(!!self.internals, "test requires internals");
subscription = self.internals.createPushSubscription(ENDPOINT, EXPIRATION_TIME, VALID_SERVER_KEY, CLIENT_KEY_1, AUTH);
assert_true(subscription instanceof PushSubscription);
assert_equals(subscription.endpoint, ENDPOINT);
assert_equals(subscription.expirationTime, EXPIRATION_TIME);
assert_true(subscription.options === subscription.options, "options should always return same object");
assert_equals(subscription.options.userVisibleOnly, true);
assert_true(subscription.options.applicationServerKey === subscription.options.applicationServerKey, "applicationServerKey should return same object");
assert_array_equals(bytesFrom(subscription.options.applicationServerKey), bytesFrom(VALID_SERVER_KEY));
assert_array_equals(bytesFrom(subscription.getKey('p256dh')), bytesFrom(CLIENT_KEY_1));
assert_array_equals(bytesFrom(subscription.getKey('auth')), bytesFrom(AUTH));
obj = subscription.toJSON();
assert_equals(Object.keys(obj).length, 3);
assert_equals(obj.endpoint, ENDPOINT);
assert_equals(obj.expirationTime, EXPIRATION_TIME);
assert_equals(Object.keys(obj.keys).length, 2);
assert_equals(obj.keys.p256dh, CLIENT_BASE64_KEY_1);
assert_equals(obj.keys.auth, BASE64_AUTH);
return new Promise(resolve => resolve());
}, "PushSubscription getters");
promise_test(async () => {
let result = await subscription.unsubscribe();
assert_false(result, "subscription that is not associated with a service worker registration should already be unsubscribed");
return new Promise(resolve => resolve());
}, "unsubscribing from subscription not associated with a registration");