@sap_oss/wdio-qmate-service 3.3.0 → 3.3.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/lib/reuse/modules/ui5/date.d.ts +4 -5
- package/lib/reuse/modules/ui5/date.js.map +1 -1
- package/lib/scripts/stats/constants.d.ts +1 -0
- package/lib/scripts/stats/constants.js +5 -0
- package/lib/scripts/stats/constants.js.map +1 -0
- package/lib/scripts/stats/createUsage.js +2 -1
- package/lib/scripts/stats/createUsage.js.map +1 -1
- package/lib/scripts/stats/getUserId.js +60 -28
- package/lib/scripts/stats/getUserId.js.map +1 -1
- package/lib/scripts/stats/updateUsage.js +2 -1
- package/lib/scripts/stats/updateUsage.js.map +1 -1
- package/package.json +19 -16
- package/test/helper/configurations/chrome.headless.conf.js +1 -1
- package/test/reuse/util/browser/executeScript.spec.js +2 -3
- package/test/reuse/util/browser/refresh.spec.js +2 -3
- package/test/unit/stats/getUserId.error.spec.ts +26 -0
- package/test/unit/stats/getUserId.spec.ts +152 -0
- package/test/unit/vitest.config.ts +7 -0
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Ui5Selector } from "./types/ui5.types";
|
|
2
1
|
/**
|
|
3
2
|
* @class date
|
|
4
3
|
* @memberof ui5
|
|
@@ -15,7 +14,7 @@ export declare class DateModule {
|
|
|
15
14
|
* @example const today = await common.date.calculate("today");
|
|
16
15
|
* await ui5.date.pick(selector, today);
|
|
17
16
|
*/
|
|
18
|
-
pick(selector:
|
|
17
|
+
pick(selector: any, date: Date, index?: number): Promise<void>;
|
|
19
18
|
/**
|
|
20
19
|
* @function pickRange
|
|
21
20
|
* @memberOf ui5.date
|
|
@@ -29,7 +28,7 @@ export declare class DateModule {
|
|
|
29
28
|
* const range = [start, end];
|
|
30
29
|
* await ui5.date.pickRange(selector, range);
|
|
31
30
|
*/
|
|
32
|
-
pickRange(selector:
|
|
31
|
+
pickRange(selector: any, range: Date[], index?: number): Promise<void>;
|
|
33
32
|
/**
|
|
34
33
|
* @function pickWithTime
|
|
35
34
|
* @memberOf ui5.date
|
|
@@ -40,7 +39,7 @@ export declare class DateModule {
|
|
|
40
39
|
* @example const tomorrowMorning = await common.date.calculateWithTime("tomorrow", "09:30:45");
|
|
41
40
|
* await ui5.date.pickWithTime(selector, tomorrowMorning);
|
|
42
41
|
*/
|
|
43
|
-
pickWithTime(selector:
|
|
42
|
+
pickWithTime(selector: any, date: Date, index?: number): Promise<void>;
|
|
44
43
|
/**
|
|
45
44
|
* @function fillRange
|
|
46
45
|
* @memberOf ui5.date
|
|
@@ -53,7 +52,7 @@ export declare class DateModule {
|
|
|
53
52
|
* const range = [start, end];
|
|
54
53
|
* await ui5.date.fillRange(selector, range);
|
|
55
54
|
*/
|
|
56
|
-
fillRange(selector:
|
|
55
|
+
fillRange(selector: any, range: Date[], index?: number): Promise<void>;
|
|
57
56
|
private _constructDatePickerSelector;
|
|
58
57
|
private _openDatePicker;
|
|
59
58
|
private _selectDate;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../../../src/reuse/modules/ui5/date.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAEb,8DAAkE;AAClE,+EAAoE;AAKpE,MAAM,wBAAwB;IAA9B;QACE,aAAQ,GAAgB,EAAE,iBAAiB,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,CAAC;QAChF,UAAK,GAAW,CAAC,CAAC;QAClB,aAAQ,GAAmB,kBAAkB,CAAC;IAChD,CAAC;CAAA;AAED;;;GAGG;AACH,MAAa,UAAU;IAAvB;QACU,QAAG,GAAG,IAAI,oCAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAsOxD,CAAC;IApOC,+EAA+E;IAC/E;;;;;;;;;OASG;IACH,KAAK,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../../../src/reuse/modules/ui5/date.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const STATS_SERVER_URL = "https://stats.qmate.proc.only.sap";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/scripts/stats/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,gBAAgB,GAAG,mCAAmC,CAAC"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createUsage = createUsage;
|
|
4
4
|
const undici_1 = require("undici");
|
|
5
|
+
const constants_1 = require("./constants");
|
|
5
6
|
async function createUsage(usageData) {
|
|
6
|
-
const urlUsage =
|
|
7
|
+
const urlUsage = `${constants_1.STATS_SERVER_URL}/api/usage/qmate`;
|
|
7
8
|
try {
|
|
8
9
|
const response = await (0, undici_1.fetch)(urlUsage, {
|
|
9
10
|
method: "POST",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createUsage.js","sourceRoot":"","sources":["../../../src/scripts/stats/createUsage.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"createUsage.js","sourceRoot":"","sources":["../../../src/scripts/stats/createUsage.ts"],"names":[],"mappings":";;AAGA,kCAoCC;AAvCD,mCAAsC;AACtC,2CAA+C;AAExC,KAAK,UAAU,WAAW,CAAC,SAUjC;IACC,MAAM,QAAQ,GAAG,GAAG,4BAAgB,kBAAkB,CAAC;IACvD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAA,cAAK,EAAC,QAAQ,EAAE;YACrC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YAC/B,UAAU,EAAE,IAAI,cAAK,CAAC;gBACpB,OAAO,EAAE;oBACP,kBAAkB,EAAE,KAAK;iBAC1B;aACF,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC9C,OAAO,YAAY,CAAC,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -41,45 +41,77 @@ const os = __importStar(require("os"));
|
|
|
41
41
|
const path_1 = __importDefault(require("path"));
|
|
42
42
|
const node_localstorage_1 = require("node-localstorage");
|
|
43
43
|
const undici_1 = require("undici");
|
|
44
|
-
const
|
|
44
|
+
const constants_1 = require("./constants");
|
|
45
45
|
async function getUserId() {
|
|
46
|
-
|
|
46
|
+
if (!isLocalStorageAvailable()) {
|
|
47
|
+
console.log("Cannot retrieve user ID.");
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
47
50
|
if (isUserIdStored()) {
|
|
48
51
|
return getUserIdFromStore();
|
|
49
52
|
}
|
|
50
53
|
else {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
dispatcher: new undici_1.Agent({
|
|
55
|
-
connect: {
|
|
56
|
-
rejectUnauthorized: false,
|
|
57
|
-
}
|
|
58
|
-
})
|
|
59
|
-
});
|
|
60
|
-
if (!response.ok) {
|
|
61
|
-
console.log(`Failed to create Qmate Stats User: ${response.status} ${response.statusText}`);
|
|
62
|
-
return null;
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
const responseText = await response.text();
|
|
66
|
-
const responseData = JSON.parse(responseText);
|
|
67
|
-
saveUserIdToStore(responseData.id);
|
|
68
|
-
return responseData.id;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
catch (error) {
|
|
72
|
-
return null;
|
|
54
|
+
const userId = await retrieveNewUserIdFromServer();
|
|
55
|
+
if (userId !== null) {
|
|
56
|
+
saveUserIdToStore(userId);
|
|
73
57
|
}
|
|
58
|
+
return userId;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function isLocalStorageAvailable() {
|
|
62
|
+
try {
|
|
63
|
+
getLocalStorage();
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
catch (e) {
|
|
67
|
+
console.log("LocalStorage is not available: ", e.message);
|
|
68
|
+
return false;
|
|
74
69
|
}
|
|
75
70
|
}
|
|
76
71
|
function isUserIdStored() {
|
|
77
|
-
return
|
|
72
|
+
return getLocalStorage().getItem("UserId") !== null;
|
|
73
|
+
}
|
|
74
|
+
function getUserIdFromStore() {
|
|
75
|
+
return getLocalStorage().getItem("UserId");
|
|
76
|
+
}
|
|
77
|
+
async function retrieveNewUserIdFromServer() {
|
|
78
|
+
try {
|
|
79
|
+
return await fetchNewUserIdFromServer();
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
console.log("Error while fetching user ID: ", error.message);
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
78
85
|
}
|
|
79
86
|
function saveUserIdToStore(userId) {
|
|
80
|
-
|
|
87
|
+
getLocalStorage().setItem("UserId", userId);
|
|
81
88
|
}
|
|
82
|
-
|
|
83
|
-
|
|
89
|
+
let localStorageInstance = null;
|
|
90
|
+
function getLocalStorage() {
|
|
91
|
+
localStorageInstance ??= new node_localstorage_1.LocalStorage(path_1.default.join(os.homedir(), '.qmate-userId'));
|
|
92
|
+
return localStorageInstance;
|
|
93
|
+
}
|
|
94
|
+
async function fetchNewUserIdFromServer() {
|
|
95
|
+
const response = await fetchNewUserResponse();
|
|
96
|
+
return await extractUserIdFromResponse(response);
|
|
97
|
+
}
|
|
98
|
+
async function fetchNewUserResponse() {
|
|
99
|
+
return (0, undici_1.fetch)(`${constants_1.STATS_SERVER_URL}/api/user`, {
|
|
100
|
+
method: "POST",
|
|
101
|
+
dispatcher: new undici_1.Agent({
|
|
102
|
+
connect: {
|
|
103
|
+
rejectUnauthorized: false,
|
|
104
|
+
}
|
|
105
|
+
})
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
async function extractUserIdFromResponse(response) {
|
|
109
|
+
if (!response.ok) {
|
|
110
|
+
console.log(`Failed to create Qmate Stats User: ${response.status} ${response.statusText}`);
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
const responseText = await response.text();
|
|
114
|
+
const responseData = JSON.parse(responseText);
|
|
115
|
+
return responseData.id;
|
|
84
116
|
}
|
|
85
117
|
//# sourceMappingURL=getUserId.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getUserId.js","sourceRoot":"","sources":["../../../src/scripts/stats/getUserId.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"getUserId.js","sourceRoot":"","sources":["../../../src/scripts/stats/getUserId.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.updateQmateUsage = updateQmateUsage;
|
|
4
4
|
const undici_1 = require("undici");
|
|
5
|
+
const constants_1 = require("./constants");
|
|
5
6
|
async function updateQmateUsage(id, usageData) {
|
|
6
|
-
const urlUsage =
|
|
7
|
+
const urlUsage = `${constants_1.STATS_SERVER_URL}/api/usage/qmate/${id}`;
|
|
7
8
|
try {
|
|
8
9
|
const response = await (0, undici_1.fetch)(urlUsage, {
|
|
9
10
|
method: "PUT",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateUsage.js","sourceRoot":"","sources":["../../../src/scripts/stats/updateUsage.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"updateUsage.js","sourceRoot":"","sources":["../../../src/scripts/stats/updateUsage.ts"],"names":[],"mappings":";;AAGA,4CAsBC;AAzBD,mCAAsC;AACtC,2CAA+C;AAExC,KAAK,UAAU,gBAAgB,CAAC,EAAU,EAAE,SAA6B;IAC9E,MAAM,QAAQ,GAAG,GAAG,4BAAgB,oBAAoB,EAAE,EAAE,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAA,cAAK,EAAC,QAAQ,EAAE;YACrC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YAC/B,UAAU,EAAE,IAAI,cAAK,CAAC;gBACpB,OAAO,EAAE;oBACP,kBAAkB,EAAE,KAAK;iBAC1B;aACF,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,uBAAuB;QACzB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,uBAAuB;IACzB,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sap_oss/wdio-qmate-service",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.2",
|
|
4
4
|
"author": "SAP SE",
|
|
5
5
|
"types": "./@types/index.d.ts",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -37,6 +37,8 @@
|
|
|
37
37
|
"build": "npm run build:locator && npx tsc",
|
|
38
38
|
"build:dev": "npm run build:locator && npx tsc --watch",
|
|
39
39
|
"build:locator": "node src/scripts/locators/qmateLocatorSrc/build.js",
|
|
40
|
+
"test:unit": "vitest run --config ./test/unit/vitest.config.ts",
|
|
41
|
+
"test:unit:watch": "vitest --config ./test/unit/vitest.config.ts",
|
|
40
42
|
"test:authenticator:staticLogin:custom": "npx wdio ./test/authenticator/staticLogin/configCustom.js",
|
|
41
43
|
"test:authenticator:staticLogin:customViaConfig": "npx wdio ./test/authenticator/staticLogin/configCustomViaConfig.js",
|
|
42
44
|
"test:authenticator:staticLogin:fiori": "npx wdio ./test/authenticator/staticLogin/configFiori.js",
|
|
@@ -112,7 +114,7 @@
|
|
|
112
114
|
"test:reuse:flp:userLocks": "npx wdio ./test/reuse/flp/userLocks/test.userLocks.conf.js",
|
|
113
115
|
"test:reuse": "npm run test:reuse:common && npm run test:reuse:nonUi5 && npm run test:reuse:ui5 && npm run test:reuse:util && npm run test:reuse:service:odata",
|
|
114
116
|
"test:reuse:helper:elementHighlight": "npx wdio ./test/reuse/helper/elementHighlight/test.elementHighlight.conf.js",
|
|
115
|
-
"test": "npm run test:authenticator:staticLogin && npm run test:core && npm run test:reuse"
|
|
117
|
+
"test": "npm run test:authenticator:staticLogin && npm run test:core && npm run test:reuse && npm run test:unit"
|
|
116
118
|
},
|
|
117
119
|
"homepage": "https://github.com/SAP/wdio-qmate-service",
|
|
118
120
|
"repository": {
|
|
@@ -131,18 +133,18 @@
|
|
|
131
133
|
],
|
|
132
134
|
"license": "Apache-2.0",
|
|
133
135
|
"dependencies": {
|
|
134
|
-
"@sap_oss/odata-library": "^2.
|
|
135
|
-
"axios": "^1.
|
|
136
|
+
"@sap_oss/odata-library": "^2.5.0",
|
|
137
|
+
"axios": "^1.11.0",
|
|
136
138
|
"deepmerge": "^4.3.1",
|
|
137
139
|
"fs-extra": "^11.3.0",
|
|
138
140
|
"node-localstorage": "^3.0.5",
|
|
139
141
|
"path": "^0.12.7",
|
|
140
142
|
"pdf-parse": "^1.1.1",
|
|
141
143
|
"qcrypt": "file:packages/qcrypt",
|
|
142
|
-
"query-string": "^9.2.
|
|
143
|
-
"sha.js": "^2.4.
|
|
144
|
-
"supertest": "^7.1.
|
|
145
|
-
"undici": "^7.
|
|
144
|
+
"query-string": "^9.2.2",
|
|
145
|
+
"sha.js": "^2.4.12",
|
|
146
|
+
"supertest": "^7.1.4",
|
|
147
|
+
"undici": "^7.13.0",
|
|
146
148
|
"xlsx": "^0.18.5",
|
|
147
149
|
"xml2js": "^0.6.2",
|
|
148
150
|
"yargs": "^17.1.1"
|
|
@@ -153,15 +155,15 @@
|
|
|
153
155
|
"@types/pdf-parse": "^1.1.5",
|
|
154
156
|
"@types/sha.js": "^2.4.4",
|
|
155
157
|
"@types/xml2js": "^0.4.14",
|
|
156
|
-
"@wdio/appium-service": "^8.
|
|
157
|
-
"@wdio/cli": "^8.
|
|
158
|
-
"@wdio/local-runner": "^8.
|
|
159
|
-
"@wdio/mocha-framework": "^8.
|
|
160
|
-
"@wdio/sauce-service": "^8.
|
|
158
|
+
"@wdio/appium-service": "^8.45.0",
|
|
159
|
+
"@wdio/cli": "^8.45.0",
|
|
160
|
+
"@wdio/local-runner": "^8.45.0",
|
|
161
|
+
"@wdio/mocha-framework": "^8.45.0",
|
|
162
|
+
"@wdio/sauce-service": "^8.45.0",
|
|
161
163
|
"@wdio/spec-reporter": "^8.43.0",
|
|
162
164
|
"@wdio/static-server-service": "^8.41.0",
|
|
163
165
|
"app-root-path": "^3.1.0",
|
|
164
|
-
"appium": "^2.
|
|
166
|
+
"appium": "^2.19.0",
|
|
165
167
|
"appium-uiautomator2-driver": "^3.10.0",
|
|
166
168
|
"appium-xcuitest-driver": "^7.35.1",
|
|
167
169
|
"chai": "^4.5.0",
|
|
@@ -169,7 +171,7 @@
|
|
|
169
171
|
"concurrently": "^7.6.0",
|
|
170
172
|
"doctrine": "^3.0.0",
|
|
171
173
|
"esbuild": "0.25.4",
|
|
172
|
-
"eslint": "^8.57.
|
|
174
|
+
"eslint": "^8.57.1",
|
|
173
175
|
"eslint-plugin-wdio": "^6.6.0",
|
|
174
176
|
"glob": "^8.1.0",
|
|
175
177
|
"glob-promise": "^5.0.1",
|
|
@@ -178,7 +180,8 @@
|
|
|
178
180
|
"prettier": "^2.8.8",
|
|
179
181
|
"rimraf": "^6.0.1",
|
|
180
182
|
"ts-node": "^10.9.2",
|
|
181
|
-
"typescript": "^5.
|
|
183
|
+
"typescript": "^5.9.2",
|
|
184
|
+
"vitest": "^3.2.4",
|
|
182
185
|
"wdio-chromedriver-service": "^8.1.1"
|
|
183
186
|
},
|
|
184
187
|
"overrides": {
|
|
@@ -27,9 +27,8 @@ describe("browser - executeScript", function () {
|
|
|
27
27
|
selector = {
|
|
28
28
|
"elementProperties": {
|
|
29
29
|
"viewName": "sap.ui.documentation.sdk.view.App",
|
|
30
|
-
"metadata": "sap.
|
|
31
|
-
"icon": "sap-icon://hint"
|
|
32
|
-
"id": "*unifiedmenu"
|
|
30
|
+
"metadata": "sap.m.MenuItem",
|
|
31
|
+
"icon": "sap-icon://hint"
|
|
33
32
|
}
|
|
34
33
|
};
|
|
35
34
|
await ui5.userInteraction.click(selector);
|
|
@@ -27,9 +27,8 @@ describe("browser - refresh", function () {
|
|
|
27
27
|
selector = {
|
|
28
28
|
"elementProperties": {
|
|
29
29
|
"viewName": "sap.ui.documentation.sdk.view.App",
|
|
30
|
-
"metadata": "sap.
|
|
31
|
-
"icon": "sap-icon://hint"
|
|
32
|
-
"id": "*unifiedmenu"
|
|
30
|
+
"metadata": "sap.m.MenuItem",
|
|
31
|
+
"icon": "sap-icon://hint"
|
|
33
32
|
}
|
|
34
33
|
};
|
|
35
34
|
await ui5.userInteraction.click(selector);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { describe, it, vi, beforeEach, afterAll, expect } from "vitest";
|
|
2
|
+
import { getUserId } from "../../../src/scripts/stats/getUserId";
|
|
3
|
+
|
|
4
|
+
vi.mock("os", () => {
|
|
5
|
+
return {
|
|
6
|
+
homedir: vi.fn().mockImplementation(() => { throw new Error("Home directory not accessible") })
|
|
7
|
+
};
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
describe("getUserId - error case", () => {
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
vi.clearAllMocks();
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it("should return null if home directory is not accessible", async () => {
|
|
16
|
+
// Act
|
|
17
|
+
const userId = await getUserId();
|
|
18
|
+
|
|
19
|
+
// Verify
|
|
20
|
+
expect(userId).toBeNull();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
afterAll(() => {
|
|
24
|
+
vi.clearAllMocks();
|
|
25
|
+
});
|
|
26
|
+
});
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterAll } from "vitest";
|
|
2
|
+
import { getUserId } from "../../../src/scripts/stats/getUserId";
|
|
3
|
+
import { STATS_SERVER_URL } from "../../../src/scripts/stats/constants";
|
|
4
|
+
|
|
5
|
+
const mockUserId = "test-user-id";
|
|
6
|
+
const fetchedUserId = "fetched-user-id";
|
|
7
|
+
|
|
8
|
+
const { getItemMock } = vi.hoisted(() => {
|
|
9
|
+
return {
|
|
10
|
+
getItemMock: vi.fn()
|
|
11
|
+
}
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
const { setItemMock } = vi.hoisted(() => {
|
|
15
|
+
return {
|
|
16
|
+
setItemMock: vi.fn()
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
vi.mock("node-localstorage", () => {
|
|
21
|
+
return {
|
|
22
|
+
LocalStorage: vi.fn(() => {
|
|
23
|
+
return {
|
|
24
|
+
getItem: getItemMock,
|
|
25
|
+
setItem: setItemMock,
|
|
26
|
+
};
|
|
27
|
+
})
|
|
28
|
+
};
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
const { fetchMock } = vi.hoisted(() => {
|
|
32
|
+
return {
|
|
33
|
+
fetchMock: vi.fn()
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
vi.mock("undici", () => {
|
|
38
|
+
return {
|
|
39
|
+
fetch: fetchMock,
|
|
40
|
+
Agent: vi.fn(),
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
describe("getUserId", () => {
|
|
45
|
+
beforeEach(() => {
|
|
46
|
+
vi.clearAllMocks();
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it("should return the correct user ID if it is stored", async () => {
|
|
50
|
+
// Prepare
|
|
51
|
+
getItemMock.mockReturnValue(mockUserId);
|
|
52
|
+
|
|
53
|
+
// Act
|
|
54
|
+
const userId = await getUserId();
|
|
55
|
+
|
|
56
|
+
// Verify
|
|
57
|
+
expect(userId).toBe(mockUserId);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it("should not call fetch if user ID is stored", async () => {
|
|
61
|
+
// Prepare
|
|
62
|
+
getItemMock.mockReturnValue(mockUserId);
|
|
63
|
+
|
|
64
|
+
// Act
|
|
65
|
+
await getUserId();
|
|
66
|
+
|
|
67
|
+
// Verify
|
|
68
|
+
expect(fetchMock).not.toHaveBeenCalled();
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it("should return fetched user ID if not stored", async () => {
|
|
72
|
+
// Prepare
|
|
73
|
+
getItemMock.mockReturnValue(null);
|
|
74
|
+
fetchMock.mockResolvedValue({
|
|
75
|
+
ok: true,
|
|
76
|
+
text: () => Promise.resolve(JSON.stringify({ id: fetchedUserId })),
|
|
77
|
+
} as Response);
|
|
78
|
+
|
|
79
|
+
// Act
|
|
80
|
+
const userId = await getUserId();
|
|
81
|
+
|
|
82
|
+
// Verify
|
|
83
|
+
expect(userId).toBe(fetchedUserId);
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
it("should fetch user ID from correct URL", async () => {
|
|
87
|
+
// Prepare
|
|
88
|
+
getItemMock.mockReturnValue(null);
|
|
89
|
+
fetchMock.mockResolvedValue({
|
|
90
|
+
ok: true,
|
|
91
|
+
text: () => Promise.resolve(JSON.stringify({ id: fetchedUserId })),
|
|
92
|
+
} as Response);
|
|
93
|
+
|
|
94
|
+
// Act
|
|
95
|
+
await getUserId();
|
|
96
|
+
|
|
97
|
+
// Verify
|
|
98
|
+
expect(fetchMock).toHaveBeenCalledWith(`${STATS_SERVER_URL}/api/user`, {
|
|
99
|
+
method: "POST",
|
|
100
|
+
dispatcher: expect.anything(),
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
it("should return null if fetch fails", async () => {
|
|
105
|
+
// Prepare
|
|
106
|
+
getItemMock.mockReturnValue(null);
|
|
107
|
+
fetchMock.mockResolvedValue({
|
|
108
|
+
ok: false,
|
|
109
|
+
status: 500,
|
|
110
|
+
statusText: "Internal Server Error",
|
|
111
|
+
text: () => Promise.resolve(""),
|
|
112
|
+
} as Response);
|
|
113
|
+
|
|
114
|
+
// Act
|
|
115
|
+
const userId = await getUserId();
|
|
116
|
+
|
|
117
|
+
// Verify
|
|
118
|
+
expect(userId).toBeNull();
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
it("should return null if an error occurs during fetch", async () => {
|
|
122
|
+
// Prepare
|
|
123
|
+
getItemMock.mockReturnValue(null);
|
|
124
|
+
fetchMock.mockRejectedValue(new Error("Network Error"));
|
|
125
|
+
|
|
126
|
+
// Act
|
|
127
|
+
const userId = await getUserId();
|
|
128
|
+
|
|
129
|
+
// Verify
|
|
130
|
+
expect(userId).toBeNull();
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
it("should save user ID to store after fetching", async () => {
|
|
134
|
+
// Prepare
|
|
135
|
+
getItemMock.mockReturnValue(null);
|
|
136
|
+
|
|
137
|
+
fetchMock.mockResolvedValue({
|
|
138
|
+
ok: true,
|
|
139
|
+
text: () => Promise.resolve(JSON.stringify({ id: fetchedUserId })),
|
|
140
|
+
} as Response);
|
|
141
|
+
|
|
142
|
+
// Act
|
|
143
|
+
await getUserId();
|
|
144
|
+
|
|
145
|
+
// Verify
|
|
146
|
+
expect(setItemMock).toHaveBeenCalledWith("UserId", fetchedUserId);
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
afterAll(() => {
|
|
150
|
+
vi.clearAllMocks();
|
|
151
|
+
});
|
|
152
|
+
});
|