| OLD | NEW |
| (Empty) |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 onload = function() { | |
| 6 function createMessage() { | |
| 7 return { | |
| 8 messageId: "message-id", | |
| 9 destinationId: "destination-id", | |
| 10 timeToLive: 2419200, | |
| 11 data: { | |
| 12 "key1": "value1", | |
| 13 "key2": "value" | |
| 14 } | |
| 15 }; | |
| 16 } | |
| 17 | |
| 18 function successfulSend(message) { | |
| 19 chrome.gcm.send(message, function(messageId) { | |
| 20 chrome.test.assertEq(message.messageId, messageId); | |
| 21 chrome.test.succeed(); | |
| 22 }); | |
| 23 } | |
| 24 | |
| 25 function unsuccessfulSend(message) { | |
| 26 try { | |
| 27 chrome.gcm.send(message, function(messageId) { | |
| 28 chrome.test.fail(message); | |
| 29 }); | |
| 30 } catch(e) { | |
| 31 chrome.test.succeed(); | |
| 32 } | |
| 33 } | |
| 34 | |
| 35 function scenario(messageMutations, send) { | |
| 36 var message = createMessage(); | |
| 37 messageMutations.forEach(function(mutation) { | |
| 38 mutation(message); | |
| 39 }); | |
| 40 send(message); | |
| 41 } | |
| 42 | |
| 43 function expectSuccessWhen() { | |
| 44 scenario(Array.prototype.slice.call(arguments), successfulSend); | |
| 45 } | |
| 46 | |
| 47 function expectFailureWhen() { | |
| 48 scenario(Array.prototype.slice.call(arguments), unsuccessfulSend); | |
| 49 } | |
| 50 | |
| 51 chrome.test.runTests([ | |
| 52 function successWhenHappyPath() { | |
| 53 expectSuccessWhen(/* no changes to message here */); | |
| 54 }, | |
| 55 function successWhenTtlIsZero() { | |
| 56 expectSuccessWhen(function(message) { message.timeToLive = 0; }); | |
| 57 }, | |
| 58 function successWhenTtlIsMissing() { | |
| 59 expectSuccessWhen(function(message) { delete message.timeToLive; }); | |
| 60 }, | |
| 61 function failureWhenTtlIsNegative() { | |
| 62 expectFailureWhen(function(message) { message.timeToLive = -1; }); | |
| 63 }, | |
| 64 function failureWhenTtlIsTooLarge() { | |
| 65 expectFailureWhen(function(message) { message.timeToLive = 24192001; }); | |
| 66 }, | |
| 67 function failureWhenMessageIdMissing() { | |
| 68 expectFailureWhen(function(message) { delete message.messageId; }); | |
| 69 }, | |
| 70 function failureWhenMessageIdIsEmpty() { | |
| 71 expectFailureWhen(function(message) { message.messageId = ""; }); | |
| 72 }, | |
| 73 function failureWhenDestinationIdMissing() { | |
| 74 expectFailureWhen(function(message) { delete message.destinationId; }); | |
| 75 }, | |
| 76 function failureWhenDestinationIdIsEmpty() { | |
| 77 expectFailureWhen(function(message) { message.destinationId = ""; }); | |
| 78 }, | |
| 79 function failureWhenDataIsMissing() { | |
| 80 expectFailureWhen(function(message) { delete message.data; }); | |
| 81 }, | |
| 82 function failureWhenDataIsEmpty() { | |
| 83 expectFailureWhen(function(message) { message.data = {}; }); | |
| 84 }, | |
| 85 function failureWhenDataKeyIsEmpty() { | |
| 86 expectFailureWhen(function(message) { message.data[""] = "value"; }); | |
| 87 }, | |
| 88 function successWhenDataKeyHasGoogDotInIt() { | |
| 89 expectSuccessWhen(function(message) { | |
| 90 message.data["something.goog."] = "value"; | |
| 91 }); | |
| 92 }, | |
| 93 function failureWhenDataKeyIsGoogDot() { | |
| 94 expectFailureWhen(function(message) { message.data["goog."] = "value"; }); | |
| 95 }, | |
| 96 function failureWhenDataKeyIsGoogDotPrefixed() { | |
| 97 expectFailureWhen(function(message) { | |
| 98 message.data["goog.something"] = "value"; | |
| 99 }); | |
| 100 }, | |
| 101 function successWhenDataKeyHasGoogleInIt() { | |
| 102 expectSuccessWhen(function(message) { | |
| 103 message.data["somthing.google"] = "value"; | |
| 104 }); | |
| 105 }, | |
| 106 function failureWhenDataKeyIsGoogle() { | |
| 107 expectFailureWhen(function(message) { | |
| 108 message.data["google"] = "value"; | |
| 109 }); | |
| 110 }, | |
| 111 function failureWhenDataKeyIsGooglePrefixed() { | |
| 112 expectFailureWhen(function(message) { | |
| 113 message.data["googleSomething"] = "value"; | |
| 114 }); | |
| 115 }, | |
| 116 function failureWhenMessageIsTooLarge() { | |
| 117 expectFailureWhen(function(message) { | |
| 118 function generateString(base, len) { | |
| 119 // Generates a string of size |len| by concatenating |base| multiple | |
| 120 // times and trimming to |len|. | |
| 121 while (base.length < len) base += base; | |
| 122 return base.substring(0, len); | |
| 123 } | |
| 124 | |
| 125 var source = "abcdefghijklmnopqrstuvwxyz"; | |
| 126 // Creates 8 * (256 + 256) == 4096 bytes of message data which together | |
| 127 // with data put in by default is more than allowed max. | |
| 128 var entries = 8; | |
| 129 while (entries > 0) { | |
| 130 var s = generateString(source + entries, 256); | |
| 131 message.data[s] = s; | |
| 132 --entries; | |
| 133 } | |
| 134 }); | |
| 135 } | |
| 136 ]); | |
| 137 }; | |
| OLD | NEW |