Skip to content

Commit d049a17

Browse files
Merge pull request #70 from skyflowapi/release/24.1.2
SK-1441/Release/24.1.2
2 parents dff2131 + f14aae7 commit d049a17

6 files changed

Lines changed: 223 additions & 132 deletions

File tree

__tests__/core-utils/reveal.test.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,13 @@ const getRecordColumn = {
470470
columnValues: ['value1'],
471471
};
472472

473+
const getRecordColumnValues = {
474+
table: 'pii_fields',
475+
redaction: RedactionType.PLAIN_TEXT,
476+
columnName: 'name',
477+
columnValues: ['name', 'value2', 'value3'],
478+
};
479+
473480
const optionsFalse = { tokens: false };
474481
const optionsTrue = { tokens: true };
475482

@@ -632,4 +639,40 @@ describe('fetchRecordGET fn test', () => {
632639
done(err);
633640
});
634641
});
642+
643+
it('should send request with single column name in url for multiple column values', (done) => {
644+
let reqArg;
645+
jest.spyOn(ClientModule, 'default').mockImplementation(() => ({
646+
request: (args) => {
647+
reqArg = args;
648+
return new Promise.resolve(getSuccessResponse);
649+
},
650+
}));
651+
652+
const testSkyflowClient = new Skyflow({
653+
vaultID: '1234',
654+
vaultURL: 'https://url.com',
655+
getBearerToken: () => Promise.resolve('valid_token'),
656+
});
657+
658+
jest
659+
.spyOn(testSkyflowClient, 'getAccessToken')
660+
.mockResolvedValue('valid token');
661+
662+
fetchRecordsGET(
663+
testSkyflowClient,
664+
[getRecordID, getRecordColumnValues],
665+
optionsFalse
666+
)
667+
.then((res) => {
668+
expect(res.errors).toBe(undefined);
669+
expect(res.records.length).toBe(2);
670+
console.log('url', reqArg);
671+
expect(reqArg.url.match(/column_name=name/gi)?.length).toBe(1);
672+
done();
673+
})
674+
.catch((err) => {
675+
done(err);
676+
});
677+
});
635678
});

__tests__/core/Get.test.js

Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
import * as revealUtils from '../../src/core-utils/reveal';
2+
import Skyflow from '../../src/core/Skyflow';
3+
import SkyflowContainer from '../../src/core/SkyflowContainer';
4+
import { RedactionType } from '../../src/utils/constants';
5+
import { parameterizedString } from '../../src/utils/logs-helper';
6+
import SKYFLOW_ERROR_CODE from '../../src/utils/skyflow-error-code';
7+
8+
const testSkyflowClient = new Skyflow({
9+
vaultID: '1234',
10+
vaultURL: 'https://validurl.com',
11+
getBearerToken: () => Promise.resolve('valid_auth_token'),
12+
});
13+
14+
const getRequestIDs = {
15+
records: [
16+
{
17+
ids: ['id1'],
18+
table: 'pii_fields',
19+
redaction: RedactionType.PLAIN_TEXT,
20+
},
21+
],
22+
};
23+
24+
const getRequestCVs = {
25+
records: [
26+
{
27+
table: 'pii_fields',
28+
redaction: RedactionType.PLAIN_TEXT,
29+
columnName: 'name',
30+
columnValues: ['name', 'anotherName'],
31+
},
32+
],
33+
};
34+
35+
const invalidGetRequest = {
36+
records: [
37+
{
38+
ids: ['id1'],
39+
table: 'pii_fields',
40+
},
41+
],
42+
};
43+
44+
const getSuccessRecord = {
45+
fields: {
46+
cvv: 123,
47+
id: 'id1',
48+
name: 'name',
49+
},
50+
table: 'pii_fields',
51+
};
52+
53+
const getSuccessRecord1 = {
54+
fields: {
55+
cvv: 321,
56+
id: 'id2',
57+
name: 'anotherName',
58+
},
59+
table: 'pii_fields',
60+
};
61+
62+
const getErrorRecord = {
63+
error: {
64+
code: 404,
65+
description: 'No records found requestId - 3wq45w8-2fni-33fd-vt62-3rdsbe45',
66+
},
67+
ids: ['id1'],
68+
};
69+
70+
describe('test get method of SkyflowContainer class', () => {
71+
let skyflowContainer;
72+
beforeEach(() => {
73+
skyflowContainer = new SkyflowContainer(testSkyflowClient);
74+
});
75+
76+
it('should throw error in case of invalid input', (done) => {
77+
jest
78+
.spyOn(revealUtils, 'fetchRecordsGET')
79+
.mockResolvedValue({ records: [getSuccessRecord] });
80+
81+
skyflowContainer.get(invalidGetRequest).catch((err) => {
82+
expect(err?.errors[0]?.description).toEqual(
83+
parameterizedString(
84+
SKYFLOW_ERROR_CODE.MISSING_REDACTION_IN_GET.description,
85+
0
86+
)
87+
);
88+
done();
89+
});
90+
});
91+
92+
it('should return response with records in case of success by skyflow ids', (done) => {
93+
jest
94+
.spyOn(revealUtils, 'fetchRecordsGET')
95+
.mockResolvedValue({ records: [getSuccessRecord] });
96+
97+
skyflowContainer
98+
.get(getRequestIDs)
99+
.then((res) => {
100+
expect(res.records.length).toBe(1);
101+
expect(res.errors).toBe(undefined);
102+
expect(res.records[0]).toEqual(getSuccessRecord);
103+
done();
104+
})
105+
.catch((err) => {
106+
done(err);
107+
});
108+
});
109+
110+
it('should return response with records in case of success by column values', (done) => {
111+
jest
112+
.spyOn(revealUtils, 'fetchRecordsGET')
113+
.mockResolvedValue({ records: [getSuccessRecord, getSuccessRecord1] });
114+
115+
skyflowContainer
116+
.get(getRequestCVs)
117+
.then((res) => {
118+
expect(res.records.length).toBe(2);
119+
expect(res.errors).toBe(undefined);
120+
expect(res.records[0]).toEqual(getSuccessRecord);
121+
expect(res.records[1]).toEqual(getSuccessRecord1);
122+
done();
123+
})
124+
.catch((err) => {
125+
done(err);
126+
});
127+
});
128+
129+
it('should return response with records and errors in case of partial success', (done) => {
130+
jest.spyOn(revealUtils, 'fetchRecordsGET').mockRejectedValue({
131+
records: [getSuccessRecord],
132+
errors: [getErrorRecord],
133+
});
134+
135+
skyflowContainer
136+
.get(getRequestIDs)
137+
.then(
138+
(res) => {},
139+
(err) => {
140+
expect(err.records.length).toBe(1);
141+
expect(err.errors.length).toBe(1);
142+
expect(err.records[0]).toEqual(getSuccessRecord);
143+
expect(err.errors[0]).toEqual(getErrorRecord);
144+
done();
145+
}
146+
)
147+
.catch((err) => {
148+
done(err);
149+
});
150+
});
151+
152+
it('should return response with errors in case of failure', (done) => {
153+
jest
154+
.spyOn(revealUtils, 'fetchRecordsGET')
155+
.mockRejectedValue({ errors: [getErrorRecord] });
156+
157+
skyflowContainer
158+
.get(getRequestIDs)
159+
.then(
160+
(res) => {},
161+
(err) => {
162+
expect(err.records).toBe(undefined);
163+
expect(err.errors.length).toBe(1);
164+
expect(err.errors[0]).toEqual(getErrorRecord);
165+
done();
166+
}
167+
)
168+
.catch((err) => {
169+
done(err);
170+
});
171+
});
172+
});
Lines changed: 0 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
1-
import * as revealUtils from '../../src/core-utils/reveal';
21
import Skyflow from '../../src/core/Skyflow';
32
import SkyflowContainer from '../../src/core/SkyflowContainer';
4-
import { RedactionType } from '../../src/utils/constants';
5-
import { parameterizedString } from '../../src/utils/logs-helper';
6-
import SKYFLOW_ERROR_CODE from '../../src/utils/skyflow-error-code';
73

84
const testSkyflowClient = new Skyflow({
95
vaultID: '1234',
@@ -21,124 +17,3 @@ describe('test SkyflowContiner class', () => {
2117
expect(skyflowContainer).toBeInstanceOf(SkyflowContainer);
2218
});
2319
});
24-
25-
const getRequestIDs = {
26-
records: [
27-
{
28-
ids: ['id1'],
29-
table: 'pii_fields',
30-
redaction: RedactionType.PLAIN_TEXT,
31-
},
32-
],
33-
};
34-
35-
const invalidGetRequest = {
36-
records: [
37-
{
38-
ids: ['id1'],
39-
table: 'pii_fields',
40-
},
41-
],
42-
};
43-
44-
const getSuccessRecord = {
45-
fields: {
46-
cvv: 123,
47-
id: 'id1',
48-
name: 'name',
49-
},
50-
table: 'pii_fields',
51-
};
52-
53-
const getErrorRecord = {
54-
error: {
55-
code: 404,
56-
description: 'No records found requestId - 3wq45w8-2fni-33fd-vt62-3rdsbe45',
57-
},
58-
ids: ['id1'],
59-
};
60-
61-
describe('test get method of SkyflowContainer class', () => {
62-
let skyflowContainer;
63-
beforeEach(() => {
64-
skyflowContainer = new SkyflowContainer(testSkyflowClient);
65-
});
66-
67-
it('should throw error in case of invalid input', (done) => {
68-
jest
69-
.spyOn(revealUtils, 'fetchRecordsGET')
70-
.mockResolvedValue({ records: [getSuccessRecord] });
71-
72-
skyflowContainer.get(invalidGetRequest).catch((err) => {
73-
expect(err?.errors[0]?.description).toEqual(
74-
parameterizedString(
75-
SKYFLOW_ERROR_CODE.MISSING_REDACTION_IN_GET.description,
76-
0
77-
)
78-
);
79-
done();
80-
});
81-
});
82-
83-
it('should return response with records in case of success', (done) => {
84-
jest
85-
.spyOn(revealUtils, 'fetchRecordsGET')
86-
.mockResolvedValue({ records: [getSuccessRecord] });
87-
88-
skyflowContainer
89-
.get(getRequestIDs)
90-
.then((res) => {
91-
expect(res.records.length).toBe(1);
92-
expect(res.errors).toBe(undefined);
93-
expect(res.records[0]).toEqual(getSuccessRecord);
94-
done();
95-
})
96-
.catch((err) => {
97-
done(err);
98-
});
99-
});
100-
101-
it('should return response with records and errors in case of partial success', (done) => {
102-
jest.spyOn(revealUtils, 'fetchRecordsGET').mockRejectedValue({
103-
records: [getSuccessRecord],
104-
errors: [getErrorRecord],
105-
});
106-
107-
skyflowContainer
108-
.get(getRequestIDs)
109-
.then(
110-
(res) => {},
111-
(err) => {
112-
expect(err.records.length).toBe(1);
113-
expect(err.errors.length).toBe(1);
114-
expect(err.records[0]).toEqual(getSuccessRecord);
115-
expect(err.errors[0]).toEqual(getErrorRecord);
116-
done();
117-
}
118-
)
119-
.catch((err) => {
120-
done(err);
121-
});
122-
});
123-
124-
it('should return response with errors in case of failure', (done) => {
125-
jest
126-
.spyOn(revealUtils, 'fetchRecordsGET')
127-
.mockRejectedValue({ errors: [getErrorRecord] });
128-
129-
skyflowContainer
130-
.get(getRequestIDs)
131-
.then(
132-
(res) => {},
133-
(err) => {
134-
expect(err.records).toBe(undefined);
135-
expect(err.errors.length).toBe(1);
136-
expect(err.errors[0]).toEqual(getErrorRecord);
137-
done();
138-
}
139-
)
140-
.catch((err) => {
141-
done(err);
142-
});
143-
});
144-
});

__tests__/core/collectElement.test.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -161,15 +161,15 @@ describe('test Collect Element class', () => {
161161
);
162162
expect(collectElement.getCardType()).toBe(undefined);
163163
const currentDate = new Date();
164-
const validExipryDate = `${
165-
currentDate.getFullYear() + 1
166-
}/${currentDate.getMonth()}`;
164+
const validExipryDate = `${currentDate.getFullYear() + 1}/${
165+
currentDate.getMonth() + 1
166+
}`;
167167
collectElement.onChangeElement(validExipryDate);
168168
expect(collectElement.getInternalState().isValid).toBe(true);
169169
const elementValue = collectElement.getInternalState().value;
170170
const [year, month] = elementValue.split('/');
171171
expect(Number(year)).toBe(currentDate.getFullYear() + 1);
172-
expect(Number(month)).toBe(currentDate.getMonth());
172+
expect(Number(month)).toBe(currentDate.getMonth() + 1);
173173
expect(onChangeMock).toBeCalledWith({
174174
elementType: ElementType.EXPIRATION_DATE,
175175
isFocused: false,

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "skyflow-react-native",
3-
"version": "1.6.0",
3+
"version": "1.6.0-dev.bdb9a04",
44
"description": "Skyflow React Native SDK",
55
"main": "lib/commonjs/index",
66
"module": "lib/module/index",

0 commit comments

Comments
 (0)