Thu, 15 Jan 2015 15:55:04 +0100
Back out 97036ab72558 which inappropriately compared turds to third parties.
1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
4 "use strict";
6 function getPaymentHelper() {
7 let error;
8 let paym = newPaymentModule();
10 paym.PaymentManager.paymentFailed = function paymentFailed(aRequestId,
11 errorMsg) {
12 error = errorMsg;
13 };
15 return {
16 get paymentModule() {
17 return paym;
18 },
19 get error() {
20 return error;
21 }
22 };
23 }
25 function run_test() {
26 run_next_test();
27 }
29 function testGetPaymentRequest(paymentProviders, test) {
30 let helper = getPaymentHelper();
31 let paym = helper.paymentModule;
33 paym.PaymentManager.registeredProviders = paymentProviders;
35 let ret = paym.PaymentManager.getPaymentRequestInfo("", test.jwt);
36 if (!test.result) {
37 test.ret ? do_check_true(ret) : do_check_false(ret);
38 }
39 if (test.error !== null) {
40 do_check_eq(helper.error, test.error);
41 } else {
42 do_check_eq(typeof ret, "object");
43 do_check_eq(ret.jwt, test.jwt);
44 do_check_eq(ret.type, test.result.type);
45 do_check_eq(ret.providerName, test.result.providerName);
46 }
47 }
49 add_test(function test_successfull_request() {
50 let providers = {};
51 let type = "mock/payments/inapp/v1";
52 providers[type] = {
53 name: "mockprovider",
54 description: "Mock Payment Provider",
55 uri: "https://mockpayprovider.phpfogapp.com/?req=",
56 requestMethod: "GET"
57 };
59 // Payload
60 // {
61 // "aud": "mockpayprovider.phpfogapp.com",
62 // "iss": "Enter you app key here!",
63 // "request": {
64 // "name": "Piece of Cake",
65 // "price": "10.50",
66 // "priceTier": 1,
67 // "productdata": "transaction_id=86",
68 // "currencyCode": "USD",
69 // "description": "Virtual chocolate cake to fill your virtual tummy"
70 // },
71 // "exp": 1352232792,
72 // "iat": 1352229192,
73 // "typ": "mock/payments/inapp/v1"
74 // }
75 let jwt = "eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJhdWQiOiAibW9j" +
76 "a3BheXByb3ZpZGVyLnBocGZvZ2FwcC5jb20iLCAiaXNzIjogIkVudGVyI" +
77 "HlvdSBhcHAga2V5IGhlcmUhIiwgInJlcXVlc3QiOiB7Im5hbWUiOiAiUG" +
78 "llY2Ugb2YgQ2FrZSIsICJwcmljZSI6ICIxMC41MCIsICJwcmljZVRpZXI" +
79 "iOiAxLCAicHJvZHVjdGRhdGEiOiAidHJhbnNhY3Rpb25faWQ9ODYiLCAi" +
80 "Y3VycmVuY3lDb2RlIjogIlVTRCIsICJkZXNjcmlwdGlvbiI6ICJWaXJ0d" +
81 "WFsIGNob2NvbGF0ZSBjYWtlIHRvIGZpbGwgeW91ciB2aXJ0dWFsIHR1bW" +
82 "15In0sICJleHAiOiAxMzUyMjMyNzkyLCAiaWF0IjogMTM1MjIyOTE5Miw" +
83 "gInR5cCI6ICJtb2NrL3BheW1lbnRzL2luYXBwL3YxIn0.QZxc62USCy4U" +
84 "IyKIC1TKelVhNklvk-Ou1l_daKntaFI";
86 testGetPaymentRequest(providers, {
87 jwt: jwt,
88 ret: true,
89 error: null,
90 result: {
91 type: type,
92 providerName: providers[type].name
93 }
94 });
96 run_next_test();
97 });
99 add_test(function test_successfull_request_html_description() {
100 let providers = {};
101 let type = "mozilla/payments/pay/v1";
102 providers[type] = {
103 name: "webpay",
104 description: "Mozilla Payment Provider",
105 uri: "https://marketplace.firefox.com/mozpay/?req=",
106 requestMethod: "GET"
107 };
109 // Payload
110 // {
111 // "aud": "marketplace.firefox.com",
112 // "iss": "marketplace-dev.allizom.org",
113 // "request": {
114 // "name": "Krupa's paid app 1",
115 // "chargebackURL": "http://localhost:8002/telefonica/services/webpay/"
116 // "chargeback",
117 // "postbackURL": "http://localhost:8002/telefonica/services/webpay/"
118 // "postback",
119 // "productData": "addon_id=85&seller_uuid=d4855df9-6ce0-45cd-81cb-"
120 // "cf8737e1e7aa&contrib_uuid=201868b7ac2cda410a99b3"
121 // "ed4c11a8ea",
122 // "pricePoint": 1,
123 // "id": "maude:85",
124 // "description": "This app has been automatically generated by <a href="
125 // "\"http://outgoing.mozilla.org/v1/ba7f373ae16789eff3ab"
126 // "fd95ca8d3c15d18dc9009afa204dc43f85a55b1f6ef1/http%3A/"
127 // "/testmanifest.com\" rel=\"nofollow\">testmanifest.com"
128 // "</a>"
129 // },
130 // "exp": 1358379147,
131 // "iat": 1358375547,
132 // "typ": "mozilla/payments/pay/v1"
133 // }
134 let jwt = "eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJhdWQiOiAibWFya2V0cGx" +
135 "hY2UuZmlyZWZveC5jb20iLCAiaXNzIjogIm1hcmtldHBsYWNlLWRldi5hbGxpem9" +
136 "tLm9yZyIsICJyZXF1ZXN0IjogeyJuYW1lIjogIktydXBhJ3MgcGFpZCBhcHAgMSI" +
137 "sICJjaGFyZ2ViYWNrVVJMIjogImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMi90ZWxlZm9" +
138 "uaWNhL3NlcnZpY2VzL3dlYnBheS9jaGFyZ2ViYWNrIiwgInBvc3RiYWNrVVJMIjo" +
139 "gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMi90ZWxlZm9uaWNhL3NlcnZpY2VzL3dlYnB" +
140 "heS9wb3N0YmFjayIsICJwcm9kdWN0RGF0YSI6ICJhZGRvbl9pZD04NSZzZWxsZXJ" +
141 "fdXVpZD1kNDg1NWRmOS02Y2UwLTQ1Y2QtODFjYi1jZjg3MzdlMWU3YWEmY29udHJ" +
142 "pYl91dWlkPTIwMTg2OGI3YWMyY2RhNDEwYTk5YjNlZDRjMTFhOGVhIiwgInByaWN" +
143 "lUG9pbnQiOiAxLCAiaWQiOiAibWF1ZGU6ODUiLCAiZGVzY3JpcHRpb24iOiAiVGh" +
144 "pcyBhcHAgaGFzIGJlZW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgPGEgaHJ" +
145 "lZj1cImh0dHA6Ly9vdXRnb2luZy5tb3ppbGxhLm9yZy92MS9iYTdmMzczYWUxNjc" +
146 "4OWVmZjNhYmZkOTVjYThkM2MxNWQxOGRjOTAwOWFmYTIwNGRjNDNmODVhNTViMWY" +
147 "2ZWYxL2h0dHAlM0EvL3Rlc3RtYW5pZmVzdC5jb21cIiByZWw9XCJub2ZvbGxvd1w" +
148 "iPnRlc3RtYW5pZmVzdC5jb208L2E-In0sICJleHAiOiAxMzU4Mzc5MTQ3LCAiaWF" +
149 "0IjogMTM1ODM3NTU0NywgInR5cCI6ICJtb3ppbGxhL3BheW1lbnRzL3BheS92MSJ" +
150 "9.kgSt636OSRBezMGtm9QLeDxlEOevL4xcOoDj8VRJyD8";
152 testGetPaymentRequest(providers, {
153 jwt: jwt,
154 ret: true,
155 error: null,
156 result: {
157 type: type,
158 providerName: providers[type].name
159 }
160 });
162 run_next_test();
163 });
165 add_test(function test_empty_jwt() {
166 testGetPaymentRequest(null, {
167 jwt: "",
168 ret: true,
169 error: "INTERNAL_ERROR_CALL_WITH_MISSING_JWT"
170 });
172 run_next_test();
173 });
175 add_test(function test_wrong_segments_count() {
176 // 1 segment JWT
177 let OneSegJwt = "eyJhbGciOiJIUzI1NiJ9";
178 testGetPaymentRequest(null, {
179 jwt: OneSegJwt,
180 ret: true,
181 error: "PAY_REQUEST_ERROR_WRONG_SEGMENTS_COUNT"
182 });
184 // 2 segments JWT
185 let TwoSegJwt = "eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIwNTg2NDkwMTM2NTY2N" +
186 "zU1ODY2MSIsImF1ZCI6Ikdvb2dsZSIsInR5cCI6Imdvb2dsZS9" +
187 "wYXltZW50cy9pbmFwcC9pdGVtL3YxIiwiaWF0IjoxMzUyMjIwM" +
188 "jEyLCJleHAiOjEzNTIzMDY2MTIsInJlcXVlc3QiOnsiY3VycmV" +
189 "uY3lDb2RlIjoiVVNEIiwicHJpY2UiOiIzLjAwIiwibmFtZSI6I" +
190 "kdvbGQgU3RhciIsInNlbGxlckRhdGEiOiJzb21lIG9wYXF1ZSB" +
191 "kYXRhIiwiZGVzY3JpcHRpb24iOiJBIHNoaW5pbmcgYmFkZ2Ugb" +
192 "2YgZGlzdGluY3Rpb24ifX0";
194 testGetPaymentRequest(null, {
195 jwt: TwoSegJwt,
196 ret: true,
197 error: "PAY_REQUEST_ERROR_WRONG_SEGMENTS_COUNT"
198 });
200 run_next_test();
201 });
203 add_test(function test_empty_payload() {
204 let EmptyPayloadJwt = "eyJhbGciOiJIUzI1NiJ9..eyJpc3MiOiIwNTg2NDkwMTM2NTY2N";
206 testGetPaymentRequest(null, {
207 jwt: EmptyPayloadJwt,
208 ret: true,
209 error: "PAY_REQUEST_ERROR_EMPTY_PAYLOAD"
210 });
212 run_next_test();
213 });
215 add_test(function test_missing_typ_parameter() {
216 // Payload
217 // {
218 // "iss": "640ae477-df33-45cd-83b8-6f1f910a6494",
219 // "iat": 1361203745,
220 // "request": {
221 // "description": "detailed description",
222 // "id": "799db970-7afa-4028-bdb7-8b045eb8babc",
223 // "postbackURL": "http://inapp-pay-test.farmdev.com/postback",
224 // "productData": "transaction_id=58",
225 // "pricePoint": 1,
226 // "chargebackURL": "http://inapp-pay-test.farmdev.com/chargeback",
227 // "name": "The Product"
228 // },
229 // "aud": "marketplace-dev.allizom.org",
230 // "exp": 1361207345
231 // }
232 let missingTypJwt = "eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9." +
233 "eyJpc3MiOiAiNjQwYWU0NzctZGYzMy00NWNkLTgzY" +
234 "jgtNmYxZjkxMGE2NDk0IiwgImlhdCI6IDEzNjEyMD" +
235 "M3NDUsICJyZXF1ZXN0IjogeyJkZXNjcmlwdGlvbiI" +
236 "6ICJkZXRhaWxlZCBkZXNjcmlwdGlvbiIsICJpZCI6" +
237 "ICI3OTlkYjk3MC03YWZhLTQwMjgtYmRiNy04YjA0N" +
238 "WViOGJhYmMiLCAicG9zdGJhY2tVUkwiOiAiaHR0cD" +
239 "ovL2luYXBwLXBheS10ZXN0LmZhcm1kZXYuY29tL3B" +
240 "vc3RiYWNrIiwgInByb2R1Y3REYXRhIjogInRyYW5z" +
241 "YWN0aW9uX2lkPTU4IiwgInByaWNlUG9pbnQiOiAxL" +
242 "CAiY2hhcmdlYmFja1VSTCI6ICJodHRwOi8vaW5hcH" +
243 "AtcGF5LXRlc3QuZmFybWRldi5jb20vY2hhcmdlYmF" +
244 "jayIsICJuYW1lIjogIlRoZSBQcm9kdWN0In0sICJh" +
245 "dWQiOiAibWFya2V0cGxhY2UtZGV2LmFsbGl6b20ub" +
246 "3JnIiwgImV4cCI6IDEzNjEyMDczNDV9.KAHsJX1Hy" +
247 "fmwNvAckdVUqlpPvdHggpx9yX276TWacRg";
248 testGetPaymentRequest(null, {
249 jwt: missingTypJwt,
250 ret: true,
251 error: "PAY_REQUEST_ERROR_NO_TYP_PARAMETER"
252 });
254 run_next_test();
255 });
257 add_test(function test_missing_request_parameter() {
258 // Payload
259 // {
260 // "iss": "Enter you app key here!",
261 // "iat": 1352225299,
262 // "typ": "mock/payments/inapp/v1",
263 // "aud": "mockpayprovider.phpfogapp.com",
264 // "exp": 1352228899
265 // }
266 let missingRequestJwt = "eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9." +
267 "eyJpc3MiOiAiRW50ZXIgeW91IGFwcCBrZXkgaGVyZ" +
268 "SEiLCAiaWF0IjogMTM1MjIyNTI5OSwgInR5cCI6IC" +
269 "Jtb2NrL3BheW1lbnRzL2luYXBwL3YxIiwgImF1ZCI" +
270 "6ICJtb2NrcGF5cHJvdmlkZXIucGhwZm9nYXBwLmNv" +
271 "bSIsICJleHAiOiAxMzUyMjI4ODk5fQ.yXGinvZiUs" +
272 "v9JWvdfM6zPD0iOX9DgCPcIwIbCrL4tcs";
274 testGetPaymentRequest(null, {
275 jwt: missingRequestJwt,
276 ret: true,
277 error: "PAY_REQUEST_ERROR_NO_REQUEST_PARAMETER"
278 });
280 run_next_test();
281 });
283 add_test(function test_jwt_decoding_error() {
284 let wrongJwt = "eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.^eyJhdWQiOiAibW9" +
285 "a3BheXByb3ZpZGVyLnBocGZvZ2FwcC5jb20iLCAiaXNzIjogIkVudGVyI" +
286 "HlvdSBhcHAga2V5IGhlcmUhIiwgInJlcXVlc3QiOiB7Im5hbWUiOiAiUG" +
287 "llY2Ugb2YgQ2FrZSIsICJwcmljZSI6ICIxMC41MCIsICJwcmljZVRpZXI" +
288 "iOiAxLCAicHJvZHVjdGRhdGEiOiAidHJhbnNhY3Rpb25faWQ9ODYiLCAi" +
289 "Y3VycmVuY3lDb2RlIjogIlVTRCIsICJkZXNjcmlwdGlvbiI6ICJWaXJ0d" +
290 "WFsIGNob2NvbGF0ZSBjYWtlIHRvIGZpbGwgeW91ciB2aXJ0dWFsIHR1bW" +
291 "15In0sICJleHAiOiAxMzUyMjMyNzkyLCAiaWF0IjogMTM1MjIyOTE5Miw" +
292 "gInR5cCI6ICJtb2NrL3BheW1lbnRzL2luYXBwL3YxIn0.QZxc62USCy4U" +
293 "IyKIC1TKelVhNklvk-Ou1l_daKntaFI";
295 testGetPaymentRequest(null, {
296 jwt: wrongJwt,
297 ret: true,
298 error: "PAY_REQUEST_ERROR_ERROR_DECODING_JWT"
299 });
301 run_next_test();
302 });
304 add_test(function test_non_https_provider() {
305 let providers = {};
306 let type = "mock/payments/inapp/v1";
307 providers[type] = {
308 name: "mockprovider",
309 description: "Mock Payment Provider",
310 uri: "http://mockpayprovider.phpfogapp.com/?req=",
311 requestMethod: "GET"
312 };
314 // Payload
315 // {
316 // "aud": "mockpayprovider.phpfogapp.com",
317 // "iss": "Enter you app key here!",
318 // "request": {
319 // "name": "Piece of Cake",
320 // "price": "10.50",
321 // "priceTier": 1,
322 // "productdata": "transaction_id=86",
323 // "currencyCode": "USD",
324 // "description": "Virtual chocolate cake to fill your virtual tummy"
325 // },
326 // "exp": 1352232792,
327 // "iat": 1352229192,
328 // "typ": "mock/payments/inapp/v1"
329 // }
330 let jwt = "eyJhbGciOiAiSFMyNTYiLCAidHlwIjogIkpXVCJ9.eyJhdWQiOiAibW9j" +
331 "a3BheXByb3ZpZGVyLnBocGZvZ2FwcC5jb20iLCAiaXNzIjogIkVudGVyI" +
332 "HlvdSBhcHAga2V5IGhlcmUhIiwgInJlcXVlc3QiOiB7Im5hbWUiOiAiUG" +
333 "llY2Ugb2YgQ2FrZSIsICJwcmljZSI6ICIxMC41MCIsICJwcmljZVRpZXI" +
334 "iOiAxLCAicHJvZHVjdGRhdGEiOiAidHJhbnNhY3Rpb25faWQ9ODYiLCAi" +
335 "Y3VycmVuY3lDb2RlIjogIlVTRCIsICJkZXNjcmlwdGlvbiI6ICJWaXJ0d" +
336 "WFsIGNob2NvbGF0ZSBjYWtlIHRvIGZpbGwgeW91ciB2aXJ0dWFsIHR1bW" +
337 "15In0sICJleHAiOiAxMzUyMjMyNzkyLCAiaWF0IjogMTM1MjIyOTE5Miw" +
338 "gInR5cCI6ICJtb2NrL3BheW1lbnRzL2luYXBwL3YxIn0.QZxc62USCy4U" +
339 "IyKIC1TKelVhNklvk-Ou1l_daKntaFI";
341 testGetPaymentRequest(providers, {
342 jwt: jwt,
343 ret: true,
344 error: "INTERNAL_ERROR_NON_HTTPS_PROVIDER_URI"
345 });
347 run_next_test();
348 });