blob: 809f0d76afaae4cbc412aee939bd8c545db05f79 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<title>
Subscribing with applicationServerKey should succeed only when the
applicationServerKey is valid.
</title>
<script src="./resources/push-constants.js"></script>
<script src="./resources/test-helpers.js"></script>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="../resources/testharness-helpers.js"></script>
<script src="../serviceworker/resources/test-helpers.js"></script>
</head>
<body>
<script>
// Subscribe should fail given a gcm sender id encoded as base64 url safe string.
promise_test(function(test) {
return registerAndSubscribePushWithBase64urlString(test, btoa('0123456789'))
.then(function(pushSubscription) {
assert_unreached('Subscribe should have failed.');
})
.catch (function(e) {
assert_true(e.message.includes(
'The provided applicationServerKey is not encoded as base64url without padding'));
});
}, 'Subscribing with a gcm sender id encoded as base64 url safe string should fail');
// Subscribe should succeed given a valid numeric sender ID.
promise_test(function(test) {
return registerAndSubscribePushWithString(test, '0123456789')
.then(function(pushSubscription) {
assert_true(
pushSubscription.endpoint.includes('StandardizedEndpoint'));
});
}, 'Subscribing with a valid numeric sender ID should succeed');
// Subscribe should succeed given a valid p256 key.
promise_test(function(test) {
return registerAndSubscribePush(test, new Uint8Array(PUBLIC_KEY))
.then(function(pushSubscription) {
assert_true(
pushSubscription.endpoint.includes('StandardizedEndpoint'));
});
}, 'Subscribing with a valid p256 applicationServerKey should succeed');
// Subscribe should succeed given a valid base64url encoded key.
promise_test(function(test) {
return registerAndSubscribePushWithBase64urlString(test, VALID_BASE64URL_ENCODED_KEY)
.then(function(pushSubscription) {
assert_true(
pushSubscription.endpoint.includes('StandardizedEndpoint'));
});
}, 'Subscribing with a valid base64url encoded key should succeed');
// Subscribe should fail given a base64 encoded key instead of base64url.
promise_test(function(test) {
return registerAndSubscribePushWithBase64urlString(test, INVALID_BASE64_ENCODED_KEY)
.then(function(pushSubscription) {
assert_unreached('Subscribe should have failed.');
})
.catch (function(e) {
assert_true(e.message.includes(
'The provided applicationServerKey is not encoded as base64url without padding'));
});
}, 'Subscribing with a base64 encoded string should fail');
// Subscribe should fail given an invalid base64url encoded string.
promise_test(function(test) {
return registerAndSubscribePushWithBase64urlString(test, INVALID_BASE64URL_ENCODED_KEY)
.then(function(pushSubscription) {
assert_unreached('Subscribe should have failed.');
})
.catch (function(e) {
assert_true(e.message.includes(
'The provided applicationServerKey is not encoded as base64url without padding'));
});
}, 'Subscribing with an invalid base64url encoded string should fail');
// Subscribe should fail given a non-numeric sender ID.
promise_test(function(test) {
return registerAndSubscribePushWithString(test, '01234a56789')
.then(function(pushSubscription) {
assert_unreached('Subscribe should have failed.');
})
.catch (function(e) {
assert_true(e.message.includes(
'The provided applicationServerKey is not valid.'));
});
}, 'Subscribing with a non-numeric sender ID should fail');
// Subscribe should fail given an empty applicationServerKey.
promise_test(function(test) {
return registerAndSubscribePushWithString(test, '')
.then(function(pushSubscription) {
assert_unreached('Subscribe should have failed.');
})
.catch (function(e) {
assert_true(e.message.includes(
'The provided applicationServerKey is not valid.'));
});
}, 'Subscribing with an empty applicationServerKey should fail');
// Subscribe should fail given a too long applicationServerKey.
promise_test(function(test) {
const longKey = new Uint8Array(300);
return registerAndSubscribePush(test, longKey)
.then(function(pushSubscription) {
assert_unreached('Subscribe should have failed.');
})
.catch (function(e) {
assert_true(e.message.includes(
'The provided applicationServerKey is not valid.'));
});
}, 'Subscribing with a too long applicationServerKey should fail');
</script>
</body>
</html>