@contrail/flexplm 1.7.7-alpha.62e4b18 → 1.7.7-alpha.64e9563
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.
|
@@ -6,10 +6,6 @@ export interface FCConfig {
|
|
|
6
6
|
eventObjectClassParam?: string;
|
|
7
7
|
eventFlexTypePathParam?: string;
|
|
8
8
|
flexplmConnect?: any;
|
|
9
|
-
'flexplmConnect.sessionReuse.enabled'?: boolean | string;
|
|
10
|
-
'flexplmConnect.sessionReuse.ttlSeconds'?: number | string;
|
|
11
|
-
'flexplmConnect.sessionReuse.cookieName'?: string;
|
|
12
|
-
'flexplmConnect.sessionReuse.retryStatuses'?: number | number[] | string;
|
|
13
9
|
taskId?: string;
|
|
14
10
|
apiHost: string;
|
|
15
11
|
userName(): string;
|
|
@@ -71,28 +71,14 @@ class FlexPLMConnect {
|
|
|
71
71
|
/////////////////////////////////////////////////////////////////////////////
|
|
72
72
|
///////// ET-390 - Session reuse: start
|
|
73
73
|
/////////////////////////////////////////////////////////////////////////////
|
|
74
|
-
/*
|
|
75
|
-
private get sessionOptions() {
|
|
76
|
-
const sessReuseBool = this.config?.flexplmConnect?.sessionReuse;
|
|
77
|
-
console.info('sessReuseBool value is --> ' + sessReuseBool);
|
|
78
|
-
console.info('enabled value is --> ' + sessReuseBool?.enabled);
|
|
79
|
-
return {
|
|
80
|
-
enabled: sessReuseBool?.enabled === true || String(sessReuseBool?.enabled).toLowerCase() === 'true',
|
|
81
|
-
ttlMs: (sessReuseBool?.ttlSeconds ?? 900) * 1000,
|
|
82
|
-
cookieName: sessReuseBool?.cookieName ?? 'JSESSIONID',
|
|
83
|
-
retryStatuses: (sessReuseBool?.retryStatuses ?? [401, 403]) as number[],
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
*/
|
|
87
74
|
get sessionOptions() {
|
|
88
|
-
const
|
|
89
|
-
const
|
|
90
|
-
const enabled = sessReuseEntries('enabled');
|
|
75
|
+
const sessReuse = this.config?.flexplmConnect?.sessionReuse;
|
|
76
|
+
const enabled = sessReuse?.enabled;
|
|
91
77
|
return {
|
|
92
78
|
enabled: enabled === true || String(enabled).toLowerCase() === 'true',
|
|
93
|
-
ttlMs: parseTtlSeconds(
|
|
94
|
-
cookieName: parseCookieName(
|
|
95
|
-
retryStatuses: parseRetryStatuses(
|
|
79
|
+
ttlMs: parseTtlSeconds(sessReuse?.ttlSeconds) * 1000,
|
|
80
|
+
cookieName: parseCookieName(sessReuse?.cookieName),
|
|
81
|
+
retryStatuses: parseRetryStatuses(sessReuse?.retryStatuses),
|
|
96
82
|
};
|
|
97
83
|
}
|
|
98
84
|
/**
|
|
@@ -214,6 +200,7 @@ class FlexPLMConnect {
|
|
|
214
200
|
}
|
|
215
201
|
// Added for Session reuse - ET-390 - Starts
|
|
216
202
|
const cookie = this.cookieHeader(sessionCookie);
|
|
203
|
+
console.info('cookie is --> : ' + cookie);
|
|
217
204
|
if (cookie) {
|
|
218
205
|
csrfOptions.headers['Cookie'] = cookie;
|
|
219
206
|
}
|
|
@@ -243,7 +230,7 @@ class FlexPLMConnect {
|
|
|
243
230
|
await wait;
|
|
244
231
|
if (getNewSession) {
|
|
245
232
|
const current = this.getCachedSession();
|
|
246
|
-
if (!current || current === rejectedCookie)
|
|
233
|
+
if (rejectedCookie === undefined || !current || current === rejectedCookie)
|
|
247
234
|
this.clearSession();
|
|
248
235
|
}
|
|
249
236
|
const cached = this.getCachedSession();
|
|
@@ -268,6 +255,7 @@ class FlexPLMConnect {
|
|
|
268
255
|
const csrfEndpoint = this.config.csrfEndpoint;
|
|
269
256
|
const csrfURL = this.config.apiHost + urlContext + csrfEndpoint;
|
|
270
257
|
console.info('csrfURL: ' + csrfURL);
|
|
258
|
+
console.info('sentCookie is -->: ' + sentCookie);
|
|
271
259
|
// getRequestOptions will be called with additional sentCookie parameter
|
|
272
260
|
const csrfOptions = this.getRequestOptions('GET', sentCookie);
|
|
273
261
|
const response = await fetch(csrfURL, csrfOptions);
|
|
@@ -39,12 +39,8 @@ const resp = (status, setCookie = [], json = csrfBody) => ({
|
|
|
39
39
|
});
|
|
40
40
|
let userCounter = 0;
|
|
41
41
|
const uniqueUser = () => 'sess-user-' + (++userCounter);
|
|
42
|
-
// The connector config
|
|
43
|
-
const sessionConfig = (user, sessionReuse = { enabled: true }) => {
|
|
44
|
-
const flat = {};
|
|
45
|
-
Object.entries(sessionReuse).forEach(([k, v]) => { flat[`flexplmConnect.sessionReuse.${k}`] = v; });
|
|
46
|
-
return createConfig({ userName: () => user, ...flat });
|
|
47
|
-
};
|
|
42
|
+
// The connector config nests the entries: { flexplmConnect: { sessionReuse: { enabled: true, ... } } }
|
|
43
|
+
const sessionConfig = (user, sessionReuse = { enabled: true }) => createConfig({ userName: () => user, flexplmConnect: { sessionReuse } });
|
|
48
44
|
const fetchMock = () => global.fetch;
|
|
49
45
|
const callHeaders = (i) => fetchMock().mock.calls[i][1].headers;
|
|
50
46
|
const callMethod = (i) => fetchMock().mock.calls[i][1].method;
|
|
@@ -610,6 +606,15 @@ describe('FlexPLMConnect session reuse - feature disabled (default)', () => {
|
|
|
610
606
|
await new flexplm_connect_1.FlexPLMConnect(sessionConfig(u, { enabled: false })).sendToFlexPLM(payload);
|
|
611
607
|
expect(callHeaders(1).Cookie).toBeUndefined();
|
|
612
608
|
});
|
|
609
|
+
it('should ignore the legacy flat key form', async () => {
|
|
610
|
+
const u = uniqueUser();
|
|
611
|
+
fetchMock()
|
|
612
|
+
.mockResolvedValueOnce(resp(200, ['JSESSIONID=abc.tomcat1'])) // Set-Cookie present but must be ignored
|
|
613
|
+
.mockResolvedValueOnce(resp(200, [], {}));
|
|
614
|
+
const cfg = createConfig({ userName: () => u, 'flexplmConnect.sessionReuse.enabled': true });
|
|
615
|
+
await new flexplm_connect_1.FlexPLMConnect(cfg).sendToFlexPLM(payload);
|
|
616
|
+
expect(callHeaders(1).Cookie).toBeUndefined();
|
|
617
|
+
});
|
|
613
618
|
});
|
|
614
619
|
describe('FlexPLMConnect.getRequest session reuse', () => {
|
|
615
620
|
it('should send the cached cookie on image/GET requests', async () => {
|