@evervault/evervault-react-native 1.2.1 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commonjs/components/Card/utilities.js +1 -1
- package/dist/commonjs/components/Card/utilities.js.map +1 -1
- package/dist/commonjs/components/Card/utilities.test.js +88 -0
- package/dist/commonjs/components/Card/utilities.test.js.map +1 -0
- package/dist/module/components/Card/utilities.js +1 -1
- package/dist/module/components/Card/utilities.js.map +1 -1
- package/dist/module/components/Card/utilities.test.js +86 -0
- package/dist/module/components/Card/utilities.test.js.map +1 -0
- package/dist/typescript/src/components/Card/utilities.test.d.ts +2 -0
- package/dist/typescript/src/components/Card/utilities.test.d.ts.map +1 -0
- package/package.json +4 -2
- package/src/components/Card/utilities.test.ts +112 -0
- package/src/components/Card/utilities.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_cardValidator","require","changePayload","encrypt","form","fields","name","number","rawNumber","expiry","cvc","values","replace","brand","localBrands","bin","lastFour","isValid","isValidCardNumber","validateNumber","card","encryptedNumber","formatExpiry","encryptedCVC","isComplete","errors","Object","keys","length","
|
|
1
|
+
{"version":3,"names":["_cardValidator","require","changePayload","encrypt","form","fields","name","number","rawNumber","expiry","cvc","values","includes","replace","brand","localBrands","bin","lastFour","isValid","isValidCardNumber","validateNumber","card","encryptedNumber","formatExpiry","encryptedCVC","isComplete","errors","Object","keys","length","cardValidation","expiryValidation","validateExpiry","cvcValidation","validateCVC","isAcceptedBrand","acceptedBrands","cardNumberValidationResult","isBrandAccepted","isLocalBrandAccepted","some","localBrand","parsedExpiry","month","year","cardNumber"],"sourceRoot":"../../../../src","sources":["components/Card/utilities.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _utilities = require("./utilities");
|
|
4
|
+
function getFutureExpiry() {
|
|
5
|
+
const futureExpiry = new Date();
|
|
6
|
+
futureExpiry.setFullYear(futureExpiry.getFullYear() + 4);
|
|
7
|
+
const month = futureExpiry.getMonth() + 1;
|
|
8
|
+
const year = futureExpiry.getFullYear() % 100;
|
|
9
|
+
if (month < 10) {
|
|
10
|
+
return `0${month}${year}`;
|
|
11
|
+
}
|
|
12
|
+
return `${month}${year}`;
|
|
13
|
+
}
|
|
14
|
+
it("Ignores the card number if it is not included in the fields", async () => {
|
|
15
|
+
const mockEncrypt = jest.fn();
|
|
16
|
+
const expiry = getFutureExpiry();
|
|
17
|
+
const sampleFormPayload = {
|
|
18
|
+
name: "John Doe",
|
|
19
|
+
expiry,
|
|
20
|
+
cvc: "123"
|
|
21
|
+
};
|
|
22
|
+
mockEncrypt.mockImplementation(value => `ev:${value}`);
|
|
23
|
+
const result = await (0, _utilities.changePayload)(mockEncrypt, {
|
|
24
|
+
values: sampleFormPayload,
|
|
25
|
+
isValid: true,
|
|
26
|
+
errors: {},
|
|
27
|
+
setValues: jest.fn(),
|
|
28
|
+
setValue: jest.fn(),
|
|
29
|
+
setError: jest.fn(),
|
|
30
|
+
validate: jest.fn(),
|
|
31
|
+
register: jest.fn()
|
|
32
|
+
}, ["name", "expiry", "cvc"]);
|
|
33
|
+
expect(result.card.number).toBeNull();
|
|
34
|
+
expect(result.card.cvc).toBe(`ev:${sampleFormPayload.cvc}`);
|
|
35
|
+
expect(result.isValid).toBe(true);
|
|
36
|
+
expect(result.isComplete).toBe(true);
|
|
37
|
+
});
|
|
38
|
+
it("Ignores the name if it is not included in the fields", async () => {
|
|
39
|
+
const mockEncrypt = jest.fn();
|
|
40
|
+
const expiry = getFutureExpiry();
|
|
41
|
+
const sampleFormPayload = {
|
|
42
|
+
number: "4242 4242 4242 4242",
|
|
43
|
+
expiry,
|
|
44
|
+
cvc: "123"
|
|
45
|
+
};
|
|
46
|
+
mockEncrypt.mockImplementation(value => `ev:${value}`);
|
|
47
|
+
const result = await (0, _utilities.changePayload)(mockEncrypt, {
|
|
48
|
+
values: sampleFormPayload,
|
|
49
|
+
isValid: true,
|
|
50
|
+
errors: {},
|
|
51
|
+
setValues: jest.fn(),
|
|
52
|
+
setValue: jest.fn(),
|
|
53
|
+
setError: jest.fn(),
|
|
54
|
+
validate: jest.fn(),
|
|
55
|
+
register: jest.fn()
|
|
56
|
+
}, ["number", "expiry", "cvc"]);
|
|
57
|
+
expect(result.card.name).toBeFalsy();
|
|
58
|
+
expect(result.card.number).toBe(`ev:${sampleFormPayload.number.replaceAll(" ", "")}`);
|
|
59
|
+
expect(result.card.cvc).toBe(`ev:${sampleFormPayload.cvc}`);
|
|
60
|
+
expect(result.isValid).toBe(true);
|
|
61
|
+
expect(result.isComplete).toBe(true);
|
|
62
|
+
});
|
|
63
|
+
it("Ignores the cvc if it is not included in the fields", async () => {
|
|
64
|
+
const mockEncrypt = jest.fn();
|
|
65
|
+
const expiry = getFutureExpiry();
|
|
66
|
+
const sampleFormPayload = {
|
|
67
|
+
number: "4242 4242 4242 4242",
|
|
68
|
+
expiry,
|
|
69
|
+
name: "John Doe"
|
|
70
|
+
};
|
|
71
|
+
mockEncrypt.mockImplementation(value => `ev:${value}`);
|
|
72
|
+
const result = await (0, _utilities.changePayload)(mockEncrypt, {
|
|
73
|
+
values: sampleFormPayload,
|
|
74
|
+
isValid: true,
|
|
75
|
+
errors: {},
|
|
76
|
+
setValues: jest.fn(),
|
|
77
|
+
setValue: jest.fn(),
|
|
78
|
+
setError: jest.fn(),
|
|
79
|
+
validate: jest.fn(),
|
|
80
|
+
register: jest.fn()
|
|
81
|
+
}, ["number", "expiry", "name"]);
|
|
82
|
+
expect(result.card.name).toBe(sampleFormPayload.name);
|
|
83
|
+
expect(result.card.number).toBe(`ev:${sampleFormPayload.number.replaceAll(" ", "")}`);
|
|
84
|
+
expect(result.card.cvc).toBeFalsy();
|
|
85
|
+
expect(result.isValid).toBe(true);
|
|
86
|
+
expect(result.isComplete).toBe(true);
|
|
87
|
+
});
|
|
88
|
+
//# sourceMappingURL=utilities.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_utilities","require","getFutureExpiry","futureExpiry","Date","setFullYear","getFullYear","month","getMonth","year","it","mockEncrypt","jest","fn","expiry","sampleFormPayload","name","cvc","mockImplementation","value","result","changePayload","values","isValid","errors","setValues","setValue","setError","validate","register","expect","card","number","toBeNull","toBe","isComplete","toBeFalsy","replaceAll"],"sourceRoot":"../../../../src","sources":["components/Card/utilities.test.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["validateNumber","validateExpiry","validateCVC","changePayload","encrypt","form","fields","name","number","rawNumber","expiry","cvc","values","replace","brand","localBrands","bin","lastFour","isValid","isValidCardNumber","card","encryptedNumber","formatExpiry","encryptedCVC","isComplete","errors","Object","keys","length","
|
|
1
|
+
{"version":3,"names":["validateNumber","validateExpiry","validateCVC","changePayload","encrypt","form","fields","name","number","rawNumber","expiry","cvc","values","includes","replace","brand","localBrands","bin","lastFour","isValid","isValidCardNumber","card","encryptedNumber","formatExpiry","encryptedCVC","isComplete","errors","Object","keys","length","cardValidation","expiryValidation","cvcValidation","isAcceptedBrand","acceptedBrands","cardNumberValidationResult","isBrandAccepted","isLocalBrandAccepted","some","localBrand","parsedExpiry","month","year","cardNumber"],"sourceRoot":"../../../../src","sources":["components/Card/utilities.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { changePayload } from "./utilities";
|
|
2
|
+
function getFutureExpiry() {
|
|
3
|
+
const futureExpiry = new Date();
|
|
4
|
+
futureExpiry.setFullYear(futureExpiry.getFullYear() + 4);
|
|
5
|
+
const month = futureExpiry.getMonth() + 1;
|
|
6
|
+
const year = futureExpiry.getFullYear() % 100;
|
|
7
|
+
if (month < 10) {
|
|
8
|
+
return `0${month}${year}`;
|
|
9
|
+
}
|
|
10
|
+
return `${month}${year}`;
|
|
11
|
+
}
|
|
12
|
+
it("Ignores the card number if it is not included in the fields", async () => {
|
|
13
|
+
const mockEncrypt = jest.fn();
|
|
14
|
+
const expiry = getFutureExpiry();
|
|
15
|
+
const sampleFormPayload = {
|
|
16
|
+
name: "John Doe",
|
|
17
|
+
expiry,
|
|
18
|
+
cvc: "123"
|
|
19
|
+
};
|
|
20
|
+
mockEncrypt.mockImplementation(value => `ev:${value}`);
|
|
21
|
+
const result = await changePayload(mockEncrypt, {
|
|
22
|
+
values: sampleFormPayload,
|
|
23
|
+
isValid: true,
|
|
24
|
+
errors: {},
|
|
25
|
+
setValues: jest.fn(),
|
|
26
|
+
setValue: jest.fn(),
|
|
27
|
+
setError: jest.fn(),
|
|
28
|
+
validate: jest.fn(),
|
|
29
|
+
register: jest.fn()
|
|
30
|
+
}, ["name", "expiry", "cvc"]);
|
|
31
|
+
expect(result.card.number).toBeNull();
|
|
32
|
+
expect(result.card.cvc).toBe(`ev:${sampleFormPayload.cvc}`);
|
|
33
|
+
expect(result.isValid).toBe(true);
|
|
34
|
+
expect(result.isComplete).toBe(true);
|
|
35
|
+
});
|
|
36
|
+
it("Ignores the name if it is not included in the fields", async () => {
|
|
37
|
+
const mockEncrypt = jest.fn();
|
|
38
|
+
const expiry = getFutureExpiry();
|
|
39
|
+
const sampleFormPayload = {
|
|
40
|
+
number: "4242 4242 4242 4242",
|
|
41
|
+
expiry,
|
|
42
|
+
cvc: "123"
|
|
43
|
+
};
|
|
44
|
+
mockEncrypt.mockImplementation(value => `ev:${value}`);
|
|
45
|
+
const result = await changePayload(mockEncrypt, {
|
|
46
|
+
values: sampleFormPayload,
|
|
47
|
+
isValid: true,
|
|
48
|
+
errors: {},
|
|
49
|
+
setValues: jest.fn(),
|
|
50
|
+
setValue: jest.fn(),
|
|
51
|
+
setError: jest.fn(),
|
|
52
|
+
validate: jest.fn(),
|
|
53
|
+
register: jest.fn()
|
|
54
|
+
}, ["number", "expiry", "cvc"]);
|
|
55
|
+
expect(result.card.name).toBeFalsy();
|
|
56
|
+
expect(result.card.number).toBe(`ev:${sampleFormPayload.number.replaceAll(" ", "")}`);
|
|
57
|
+
expect(result.card.cvc).toBe(`ev:${sampleFormPayload.cvc}`);
|
|
58
|
+
expect(result.isValid).toBe(true);
|
|
59
|
+
expect(result.isComplete).toBe(true);
|
|
60
|
+
});
|
|
61
|
+
it("Ignores the cvc if it is not included in the fields", async () => {
|
|
62
|
+
const mockEncrypt = jest.fn();
|
|
63
|
+
const expiry = getFutureExpiry();
|
|
64
|
+
const sampleFormPayload = {
|
|
65
|
+
number: "4242 4242 4242 4242",
|
|
66
|
+
expiry,
|
|
67
|
+
name: "John Doe"
|
|
68
|
+
};
|
|
69
|
+
mockEncrypt.mockImplementation(value => `ev:${value}`);
|
|
70
|
+
const result = await changePayload(mockEncrypt, {
|
|
71
|
+
values: sampleFormPayload,
|
|
72
|
+
isValid: true,
|
|
73
|
+
errors: {},
|
|
74
|
+
setValues: jest.fn(),
|
|
75
|
+
setValue: jest.fn(),
|
|
76
|
+
setError: jest.fn(),
|
|
77
|
+
validate: jest.fn(),
|
|
78
|
+
register: jest.fn()
|
|
79
|
+
}, ["number", "expiry", "name"]);
|
|
80
|
+
expect(result.card.name).toBe(sampleFormPayload.name);
|
|
81
|
+
expect(result.card.number).toBe(`ev:${sampleFormPayload.number.replaceAll(" ", "")}`);
|
|
82
|
+
expect(result.card.cvc).toBeFalsy();
|
|
83
|
+
expect(result.isValid).toBe(true);
|
|
84
|
+
expect(result.isComplete).toBe(true);
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=utilities.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["changePayload","getFutureExpiry","futureExpiry","Date","setFullYear","getFullYear","month","getMonth","year","it","mockEncrypt","jest","fn","expiry","sampleFormPayload","name","cvc","mockImplementation","value","result","values","isValid","errors","setValues","setValue","setError","validate","register","expect","card","number","toBeNull","toBe","isComplete","toBeFalsy","replaceAll"],"sourceRoot":"../../../../src","sources":["components/Card/utilities.test.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utilities.test.d.ts","sourceRoot":"","sources":["../../../../../src/components/Card/utilities.test.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@evervault/evervault-react-native",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"description": "Evervault react native sdk",
|
|
5
|
+
"private": false,
|
|
5
6
|
"main": "./dist/commonjs/index.js",
|
|
6
7
|
"module": "./dist/module/index.js",
|
|
7
8
|
"types": "./dist/typescript/src/index.d.ts",
|
|
@@ -84,6 +85,7 @@
|
|
|
84
85
|
"build": "bob build",
|
|
85
86
|
"typecheck": "tsc --noEmit",
|
|
86
87
|
"clean": "del-cli android/build dist",
|
|
87
|
-
"format": "prettier --write ."
|
|
88
|
+
"format": "prettier --write .",
|
|
89
|
+
"test": "jest"
|
|
88
90
|
}
|
|
89
91
|
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { CardForm } from "./types";
|
|
2
|
+
import { changePayload } from "./utilities";
|
|
3
|
+
|
|
4
|
+
function getFutureExpiry() {
|
|
5
|
+
const futureExpiry = new Date();
|
|
6
|
+
futureExpiry.setFullYear(futureExpiry.getFullYear() + 4);
|
|
7
|
+
const month = futureExpiry.getMonth() + 1;
|
|
8
|
+
const year = futureExpiry.getFullYear() % 100;
|
|
9
|
+
if (month < 10) {
|
|
10
|
+
return `0${month}${year}`;
|
|
11
|
+
}
|
|
12
|
+
return `${month}${year}`;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
it("Ignores the card number if it is not included in the fields", async () => {
|
|
16
|
+
const mockEncrypt = jest.fn();
|
|
17
|
+
const expiry = getFutureExpiry();
|
|
18
|
+
const sampleFormPayload = {
|
|
19
|
+
name: "John Doe",
|
|
20
|
+
expiry,
|
|
21
|
+
cvc: "123",
|
|
22
|
+
} as CardForm;
|
|
23
|
+
|
|
24
|
+
mockEncrypt.mockImplementation((value: string) => `ev:${value}`);
|
|
25
|
+
const result = await changePayload(
|
|
26
|
+
mockEncrypt,
|
|
27
|
+
{
|
|
28
|
+
values: sampleFormPayload,
|
|
29
|
+
isValid: true,
|
|
30
|
+
errors: {},
|
|
31
|
+
setValues: jest.fn(),
|
|
32
|
+
setValue: jest.fn(),
|
|
33
|
+
setError: jest.fn(),
|
|
34
|
+
validate: jest.fn(),
|
|
35
|
+
register: jest.fn(),
|
|
36
|
+
},
|
|
37
|
+
["name", "expiry", "cvc"]
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
expect(result.card.number).toBeNull();
|
|
41
|
+
expect(result.card.cvc).toBe(`ev:${sampleFormPayload.cvc}`);
|
|
42
|
+
expect(result.isValid).toBe(true);
|
|
43
|
+
expect(result.isComplete).toBe(true);
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it("Ignores the name if it is not included in the fields", async () => {
|
|
47
|
+
const mockEncrypt = jest.fn();
|
|
48
|
+
const expiry = getFutureExpiry();
|
|
49
|
+
const sampleFormPayload = {
|
|
50
|
+
number: "4242 4242 4242 4242",
|
|
51
|
+
expiry,
|
|
52
|
+
cvc: "123",
|
|
53
|
+
} as CardForm;
|
|
54
|
+
|
|
55
|
+
mockEncrypt.mockImplementation((value: string) => `ev:${value}`);
|
|
56
|
+
const result = await changePayload(
|
|
57
|
+
mockEncrypt,
|
|
58
|
+
{
|
|
59
|
+
values: sampleFormPayload,
|
|
60
|
+
isValid: true,
|
|
61
|
+
errors: {},
|
|
62
|
+
setValues: jest.fn(),
|
|
63
|
+
setValue: jest.fn(),
|
|
64
|
+
setError: jest.fn(),
|
|
65
|
+
validate: jest.fn(),
|
|
66
|
+
register: jest.fn(),
|
|
67
|
+
},
|
|
68
|
+
["number", "expiry", "cvc"]
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
expect(result.card.name).toBeFalsy();
|
|
72
|
+
expect(result.card.number).toBe(
|
|
73
|
+
`ev:${sampleFormPayload.number.replaceAll(" ", "")}`
|
|
74
|
+
);
|
|
75
|
+
expect(result.card.cvc).toBe(`ev:${sampleFormPayload.cvc}`);
|
|
76
|
+
expect(result.isValid).toBe(true);
|
|
77
|
+
expect(result.isComplete).toBe(true);
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
it("Ignores the cvc if it is not included in the fields", async () => {
|
|
81
|
+
const mockEncrypt = jest.fn();
|
|
82
|
+
const expiry = getFutureExpiry();
|
|
83
|
+
const sampleFormPayload = {
|
|
84
|
+
number: "4242 4242 4242 4242",
|
|
85
|
+
expiry,
|
|
86
|
+
name: "John Doe",
|
|
87
|
+
} as CardForm;
|
|
88
|
+
|
|
89
|
+
mockEncrypt.mockImplementation((value: string) => `ev:${value}`);
|
|
90
|
+
const result = await changePayload(
|
|
91
|
+
mockEncrypt,
|
|
92
|
+
{
|
|
93
|
+
values: sampleFormPayload,
|
|
94
|
+
isValid: true,
|
|
95
|
+
errors: {},
|
|
96
|
+
setValues: jest.fn(),
|
|
97
|
+
setValue: jest.fn(),
|
|
98
|
+
setError: jest.fn(),
|
|
99
|
+
validate: jest.fn(),
|
|
100
|
+
register: jest.fn(),
|
|
101
|
+
},
|
|
102
|
+
["number", "expiry", "name"]
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
expect(result.card.name).toBe(sampleFormPayload.name);
|
|
106
|
+
expect(result.card.number).toBe(
|
|
107
|
+
`ev:${sampleFormPayload.number.replaceAll(" ", "")}`
|
|
108
|
+
);
|
|
109
|
+
expect(result.card.cvc).toBeFalsy();
|
|
110
|
+
expect(result.isValid).toBe(true);
|
|
111
|
+
expect(result.isComplete).toBe(true);
|
|
112
|
+
});
|
|
@@ -14,7 +14,7 @@ export async function changePayload(
|
|
|
14
14
|
): Promise<CardPayload> {
|
|
15
15
|
const { name, number: rawNumber, expiry, cvc } = form.values;
|
|
16
16
|
|
|
17
|
-
const number = rawNumber.replace(/\s/g, "");
|
|
17
|
+
const number = fields.includes("number") ? rawNumber.replace(/\s/g, "") : "";
|
|
18
18
|
|
|
19
19
|
const {
|
|
20
20
|
brand,
|