1 | import {validateLoadParams, findScript} from './shared';
|
2 |
|
3 | describe('validateLoadParams', () => {
|
4 | const INVALID_INPUTS: any[] = [
|
5 | [undefined],
|
6 | [false],
|
7 | [null],
|
8 | [true],
|
9 | [{}],
|
10 | [8],
|
11 | [{advancedFraud: true}],
|
12 | [{advancedFraudSignals: true, someOtherKey: true}],
|
13 | [{advancedFraudSignals: 'true'}],
|
14 | ];
|
15 |
|
16 | test.each(INVALID_INPUTS)('throws on invalid input: %p', (input) => {
|
17 | expect(() => validateLoadParams(input)).toThrow('invalid load parameters');
|
18 | });
|
19 |
|
20 | test('validates valid input', () => {
|
21 | expect(validateLoadParams({advancedFraudSignals: true})).toEqual({
|
22 | advancedFraudSignals: true,
|
23 | });
|
24 |
|
25 | expect(validateLoadParams({advancedFraudSignals: false})).toEqual({
|
26 | advancedFraudSignals: false,
|
27 | });
|
28 | });
|
29 | });
|
30 |
|
31 | describe('findScript', () => {
|
32 | const CASES: Array<[string, boolean]> = [
|
33 | ['https://js.stripe.com/v3?advancedFraudSignals=true', true],
|
34 | ['https://js.stripe.com/v3', true],
|
35 | ['https://js.stripe.com/v3/', true],
|
36 | ['https://js.stripe.com/v3?advancedFraudSignals=false', true],
|
37 | ['https://js.stripe.com/v3?ab=cd', true],
|
38 | ['https://js.stripe.com/v3/something.js', false],
|
39 | ['https://js.stripe.com/v3/something.js?advancedFraudSignals=false', false],
|
40 | ['https://js.stripe.com/v3/something.js?ab=cd', false],
|
41 | ];
|
42 |
|
43 | afterEach(() => {
|
44 | for (const [url] of CASES) {
|
45 | const script = document.querySelector(`script[src="${url}"]`);
|
46 |
|
47 | if (script && script.parentElement) {
|
48 | script.parentElement.removeChild(script);
|
49 | }
|
50 | }
|
51 |
|
52 | delete window.Stripe;
|
53 | });
|
54 |
|
55 | test.each(CASES)(
|
56 | 'findScript with <script src="%s"></script>',
|
57 | (url, shouldBeFound) => {
|
58 | const script = document.createElement('script');
|
59 | script.src = url;
|
60 | document.body.appendChild(script);
|
61 |
|
62 | expect(!!findScript()).toBe(shouldBeFound);
|
63 | }
|
64 | );
|
65 | });
|