Skip to content

Commit 3b629f3

Browse files
committed
fix(pencil): fix custom params structure
1 parent 4218e95 commit 3b629f3

7 files changed

Lines changed: 32 additions & 26 deletions

File tree

src/api-manager.spec.ts

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,9 @@ const sdkEvent: EventOptions = {
3434
'user-agent': 'Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405',
3535
},
3636
},
37-
params: [
38-
{
39-
key: 'CUSTOM_PARAM',
40-
value: 'CUSTOM_PARAM_VALUE',
41-
},
42-
],
37+
params: {
38+
param_1: 'CUSTOM_PARAM_VALUE',
39+
},
4340
timestamp: Date.now(),
4441
};
4542

@@ -77,11 +74,12 @@ describe('ApiManager', () => {
7774
expect(eventPayload.user).to.have.property('name', sdkEvent.user.name);
7875
expect(eventPayload.user).to.have.property('email', sdkEvent.user.email);
7976
//params
80-
const [param] = sdkEvent.params;
77+
8178
expect(eventPayload).to.have.property('params');
82-
expect(eventPayload.params).to.have.lengthOf(sdkEvent.params.length, 'Incorrect number of params');
83-
expect(eventPayload.params.find((p) => p.key == param.key)).to.be.not.null;
84-
expect(eventPayload.params.find((p) => p.key == param.key).value).to.be.equal(param.value, 'Invalid param value');
79+
expect(Object.keys(eventPayload.params)).to.have.lengthOf(Object.keys(sdkEvent.params).length, 'Incorrect number of params');
80+
Object.entries(eventPayload.params).forEach(([key, val]) => {
81+
expect(eventPayload.params).to.have.property(key, val, 'Invalid param value');
82+
});
8583
//request context
8684
expect(eventPayload).to.have.property('request');
8785
expect(eventPayload.request).to.have.property('ip', sdkEvent.context.ip);
@@ -193,11 +191,11 @@ describe('ApiManager', () => {
193191
expect(eventPayload.user).to.have.property('name', sdkEvent.user.name);
194192
expect(eventPayload.user).to.have.property('email', sdkEvent.user.email);
195193
//params
196-
const [param] = sdkEvent.params;
197194
expect(eventPayload).to.have.property('params');
198-
expect(eventPayload.params).to.have.lengthOf(sdkEvent.params.length, 'Incorrect number of params');
199-
expect(eventPayload.params.find((p) => p.key == param.key)).to.be.not.null;
200-
expect(eventPayload.params.find((p) => p.key == param.key).value).to.be.equal(param.value, 'Invalid param value');
195+
expect(Object.keys(eventPayload.params)).to.have.lengthOf(Object.keys(sdkEvent.params).length, 'Incorrect number of params');
196+
Object.entries(eventPayload.params).forEach(([key, val]) => {
197+
expect(eventPayload.params).to.have.property(key, val, 'Invalid param value');
198+
});
201199
//request context
202200
expect(eventPayload).to.have.property('request');
203201
expect(eventPayload.request).to.have.property('ip', sdkEvent.context.ip);
@@ -267,7 +265,7 @@ describe('ApiManager', () => {
267265
expect(eventPayload.user).to.have.property('email', '');
268266
//params
269267
expect(eventPayload).to.have.property('params');
270-
expect(eventPayload.params).to.have.lengthOf(0, 'Incorrect number of params');
268+
expect(Object.keys(eventPayload.params)).to.have.lengthOf(0, 'Incorrect number of params');
271269

272270
//request context
273271
expect(eventPayload).to.have.property('request');

src/api-manager.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export default class ApiManager {
2828

2929
public track(opts: EventOptions) {
3030
Logger.debug('Track event call', opts);
31-
if (opts && opts.params && opts.params.length > MAX_CUSTOM_PARAMS) {
31+
if (opts && opts.params && Object.keys(opts.params).length > MAX_CUSTOM_PARAMS) {
3232
throw new Error(`You can only specify maximum of ${MAX_CUSTOM_PARAMS} params`);
3333
}
3434

src/events/request-event.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import IEvent from './event';
2-
import { KeyValuePair } from '../types/key-value-pair';
32
import { decrypt } from '../utils/utils';
43
import { Logger } from '../logger';
54
import { v4 } from 'uuid';
65
import { SecureNativeOptions } from '../types/securenative-options';
76
import { IncomingHttpHeaders, OutgoingHttpHeaders } from 'http2';
87
import { RequestOptions } from '../types/request-options';
8+
import { CustomParams } from '../types/custom-params';
99

1010
export default class RequestEvent implements IEvent {
1111
public rid: string;
@@ -31,7 +31,7 @@ export default class RequestEvent implements IEvent {
3131
headers: OutgoingHttpHeaders;
3232
};
3333
public ts: number;
34-
public params?: Array<KeyValuePair>;
34+
public params?: CustomParams;
3535

3636
constructor(event: RequestOptions, options: SecureNativeOptions) {
3737
Logger.debug('Building SDK event');
@@ -70,6 +70,6 @@ export default class RequestEvent implements IEvent {
7070
};
7171

7272
this.ts = event.timestamp || Date.now();
73-
this.params = event.params || [];
73+
this.params = event.params || {};
7474
}
7575
}

src/events/sdk-event.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import IEvent from './event';
2-
import { KeyValuePair } from '../types/key-value-pair';
32
import { EventOptions } from '../types/event-options';
43
import { decrypt, mergeRequestContexts, contextFromRequest, contextFromResponse } from '../utils/utils';
54
import { Logger } from '../logger';
65
import { v4 } from 'uuid';
76
import { SecureNativeOptions } from '../types/securenative-options';
87
import SessionManager from '../session-manager';
98
import { IncomingHttpHeaders } from 'http2';
9+
import { CustomParams } from '../types/custom-params';
1010

1111
export default class SDKEvent implements IEvent {
1212
public rid: string;
@@ -28,7 +28,7 @@ export default class SDKEvent implements IEvent {
2828
body: string;
2929
};
3030
public ts: number;
31-
public params?: Array<KeyValuePair>;
31+
public params?: CustomParams;
3232

3333
constructor(event: EventOptions, options: SecureNativeOptions) {
3434
Logger.debug('Building SDK event');
@@ -62,6 +62,6 @@ export default class SDKEvent implements IEvent {
6262
headers: reqCtx.headers || {}
6363
};
6464
this.ts = event.timestamp || Date.now();
65-
this.params = event.params || [];
65+
this.params = event.params || {};
6666
}
6767
}

src/types/custom-params.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
export type CustomParams = {
2+
param_1?: string;
3+
param_2?: string;
4+
param_3?: string;
5+
param_4?: string;
6+
param_5?: string;
7+
param_6?: string;
8+
};

src/types/event-options.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import EventType from '../enums/event-type';
2-
import { KeyValuePair } from './key-value-pair';
32
import { IncomingHttpHeaders } from 'http2';
3+
import { CustomParams } from './custom-params';
44

55
export type Context = {
66
clientToken?: string;
@@ -18,5 +18,5 @@ export type EventOptions = {
1818
};
1919
context?: Context;
2020
timestamp?: number;
21-
params?: Array<KeyValuePair>;
21+
params?: CustomParams;
2222
};

src/types/request-options.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import EventType from '../enums/event-type';
2-
import { KeyValuePair } from './key-value-pair';
32
import { RequestContext, ResponseContext } from './request-context';
3+
import { CustomParams } from './custom-params';
44

55
export type RequestOptions = {
66
eventType: EventType | string;
77
reqContext?: RequestContext;
88
resContext?: ResponseContext;
99
timestamp?: number;
10-
params?: Array<KeyValuePair>;
10+
params?: CustomParams;
1111
};

0 commit comments

Comments
 (0)