@muritavo/testing-toolkit 0.1.0 → 0.1.1
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/client/emulator.js +11 -7
- package/dist/client/emulator.js.map +1 -1
- package/dist/native/blockchain.d.ts +15 -0
- package/dist/native/blockchain.js +148 -0
- package/dist/native/blockchain.js.map +1 -0
- package/dist/native/consts.d.ts +5 -0
- package/dist/native/consts.js +9 -0
- package/dist/native/consts.js.map +1 -0
- package/dist/native/emulator.d.ts +16 -1
- package/dist/native/emulator.js +66 -12
- package/dist/native/emulator.js.map +1 -1
- package/package.json +6 -2
package/dist/client/emulator.js
CHANGED
|
@@ -35,10 +35,14 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
35
35
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
38
41
|
exports.__esModule = true;
|
|
39
42
|
exports.clearFirestore = exports.setEmulatorConfig = exports.clearAuth = exports.addAuthUser = exports.setupEmulator = exports.deleteCollection = void 0;
|
|
40
|
-
var node_fetch_1 = require("node-fetch");
|
|
43
|
+
var node_fetch_1 = __importDefault(require("node-fetch"));
|
|
41
44
|
var rules_unit_testing_1 = require("@firebase/rules-unit-testing");
|
|
45
|
+
var consts_1 = require("../native/consts");
|
|
42
46
|
var emulatorConfig;
|
|
43
47
|
/**
|
|
44
48
|
* Deletes a collection from firebase
|
|
@@ -48,7 +52,7 @@ var emulatorConfig;
|
|
|
48
52
|
var deleteCollection = function (projectId, collectionPath) { return __awaiter(void 0, void 0, void 0, function () {
|
|
49
53
|
return __generator(this, function (_a) {
|
|
50
54
|
switch (_a.label) {
|
|
51
|
-
case 0: return [4 /*yield*/, (0, node_fetch_1["default"])("http://
|
|
55
|
+
case 0: return [4 /*yield*/, (0, node_fetch_1["default"])("http://".concat(consts_1.LOCALHOST_DOMAIN, ":").concat(_getPort("firestore"), "/emulator/v1/projects/").concat(projectId, "/databases/(default)/documents").concat(collectionPath), {
|
|
52
56
|
method: "delete"
|
|
53
57
|
})];
|
|
54
58
|
case 1:
|
|
@@ -70,11 +74,11 @@ var setupEmulator = function (projectId, cb, storageBucket) { return __awaiter(v
|
|
|
70
74
|
case 0: return [4 /*yield*/, (0, rules_unit_testing_1.initializeTestEnvironment)({
|
|
71
75
|
projectId: projectId,
|
|
72
76
|
firestore: {
|
|
73
|
-
host:
|
|
77
|
+
host: consts_1.LOCALHOST_DOMAIN,
|
|
74
78
|
port: _getPort("firestore")
|
|
75
79
|
},
|
|
76
80
|
storage: {
|
|
77
|
-
host:
|
|
81
|
+
host: consts_1.LOCALHOST_DOMAIN,
|
|
78
82
|
port: _getPort("storage")
|
|
79
83
|
}
|
|
80
84
|
})];
|
|
@@ -113,7 +117,7 @@ var addAuthUser = function (projectId, email, password, localId) {
|
|
|
113
117
|
var result;
|
|
114
118
|
return __generator(this, function (_a) {
|
|
115
119
|
switch (_a.label) {
|
|
116
|
-
case 0: return [4 /*yield*/, (0, node_fetch_1["default"])("http://
|
|
120
|
+
case 0: return [4 /*yield*/, (0, node_fetch_1["default"])("http://".concat(consts_1.LOCALHOST_DOMAIN, ":").concat(_getPort("auth"), "/identitytoolkit.googleapis.com/v1/projects/").concat(projectId, "/accounts"), {
|
|
117
121
|
body: JSON.stringify({
|
|
118
122
|
email: email,
|
|
119
123
|
password: password,
|
|
@@ -144,7 +148,7 @@ var clearAuth = function (projectId) { return __awaiter(void 0, void 0, void 0,
|
|
|
144
148
|
var result;
|
|
145
149
|
return __generator(this, function (_a) {
|
|
146
150
|
switch (_a.label) {
|
|
147
|
-
case 0: return [4 /*yield*/, (0, node_fetch_1["default"])("http://
|
|
151
|
+
case 0: return [4 /*yield*/, (0, node_fetch_1["default"])("http://".concat(consts_1.LOCALHOST_DOMAIN, ":").concat(_getPort("auth"), "/emulator/v1/projects/").concat(projectId, "/accounts"), {
|
|
148
152
|
method: "delete"
|
|
149
153
|
})];
|
|
150
154
|
case 1:
|
|
@@ -175,7 +179,7 @@ var clearFirestore = function (projectId) { return __awaiter(void 0, void 0, voi
|
|
|
175
179
|
case 0: return [4 /*yield*/, (0, rules_unit_testing_1.initializeTestEnvironment)({
|
|
176
180
|
projectId: projectId,
|
|
177
181
|
firestore: {
|
|
178
|
-
host:
|
|
182
|
+
host: consts_1.LOCALHOST_DOMAIN,
|
|
179
183
|
port: _getPort("firestore")
|
|
180
184
|
}
|
|
181
185
|
})];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emulator.js","sourceRoot":"","sources":["../../src/client/emulator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"emulator.js","sourceRoot":"","sources":["../../src/client/emulator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
declare type Addresses = {
|
|
2
|
+
[address: string]: {
|
|
3
|
+
balance: number;
|
|
4
|
+
unlocked: number;
|
|
5
|
+
secretKey: string;
|
|
6
|
+
};
|
|
7
|
+
};
|
|
8
|
+
export declare function startBlockchainNode(nftContractsProjectFolder: string): Promise<Addresses>;
|
|
9
|
+
export declare function deployContract(contractName: string, ...initializationArgs: any[]): Promise<{
|
|
10
|
+
address: string;
|
|
11
|
+
} | {
|
|
12
|
+
address: any;
|
|
13
|
+
owner: any;
|
|
14
|
+
}>;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
+
function step(op) {
|
|
27
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
+
while (_) try {
|
|
29
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
+
switch (op[0]) {
|
|
32
|
+
case 0: case 1: t = op; break;
|
|
33
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
+
default:
|
|
37
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
+
if (t[2]) _.ops.pop();
|
|
42
|
+
_.trys.pop(); continue;
|
|
43
|
+
}
|
|
44
|
+
op = body.call(thisArg, _);
|
|
45
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
exports.__esModule = true;
|
|
50
|
+
exports.deployContract = exports.startBlockchainNode = void 0;
|
|
51
|
+
var ganache_1 = require("ganache");
|
|
52
|
+
var logger = require("debug")("cypress-toolkit/blockchain");
|
|
53
|
+
var instance;
|
|
54
|
+
function startBlockchainNode(nftContractsProjectFolder) {
|
|
55
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
56
|
+
var serverInstance, accounts;
|
|
57
|
+
return __generator(this, function (_a) {
|
|
58
|
+
switch (_a.label) {
|
|
59
|
+
case 0:
|
|
60
|
+
if (instance) {
|
|
61
|
+
return [2 /*return*/, instance.addresses];
|
|
62
|
+
}
|
|
63
|
+
logger("Starting blockchain server at \"".concat(nftContractsProjectFolder, "\""));
|
|
64
|
+
serverInstance = (0, ganache_1.server)({
|
|
65
|
+
miner: {
|
|
66
|
+
defaultTransactionGasLimit: 99000000000000,
|
|
67
|
+
callGasLimit: 99000000000000,
|
|
68
|
+
blockGasLimit: 99000000000000
|
|
69
|
+
},
|
|
70
|
+
wallet: {
|
|
71
|
+
deterministic: true
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
return [4 /*yield*/, serverInstance.listen(15000).then(function () {
|
|
75
|
+
return Object.entries(serverInstance.provider.getInitialAccounts()).reduce(function (r, _a) {
|
|
76
|
+
var _b;
|
|
77
|
+
var k = _a[0], v = _a[1];
|
|
78
|
+
return (__assign(__assign({}, r), (_b = {}, _b[k] = __assign(__assign({}, v), { balance: Number(v.balance), unlocked: Number(v.unlocked) }), _b)));
|
|
79
|
+
}, {});
|
|
80
|
+
})];
|
|
81
|
+
case 1:
|
|
82
|
+
accounts = _a.sent();
|
|
83
|
+
instance = {
|
|
84
|
+
process: serverInstance,
|
|
85
|
+
rootFolder: nftContractsProjectFolder,
|
|
86
|
+
contracts: {},
|
|
87
|
+
addresses: accounts
|
|
88
|
+
};
|
|
89
|
+
return [2 /*return*/, accounts];
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
exports.startBlockchainNode = startBlockchainNode;
|
|
95
|
+
function deployContract(contractName) {
|
|
96
|
+
var initializationArgs = [];
|
|
97
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
98
|
+
initializationArgs[_i - 1] = arguments[_i];
|
|
99
|
+
}
|
|
100
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
101
|
+
var startingDir, hardhat, ethers, owner, Factory, lock, connection, initializationKey;
|
|
102
|
+
return __generator(this, function (_a) {
|
|
103
|
+
switch (_a.label) {
|
|
104
|
+
case 0:
|
|
105
|
+
if (!instance.contracts[contractName]) return [3 /*break*/, 1];
|
|
106
|
+
return [2 /*return*/, instance.contracts[contractName]];
|
|
107
|
+
case 1:
|
|
108
|
+
logger("Deploying contract ".concat(contractName, " with parameters ").concat(initializationArgs));
|
|
109
|
+
startingDir = process.cwd();
|
|
110
|
+
process.chdir(instance.rootFolder);
|
|
111
|
+
hardhat = require("hardhat");
|
|
112
|
+
hardhat.network.provider = instance.process.provider;
|
|
113
|
+
process.chdir(startingDir);
|
|
114
|
+
ethers = hardhat.ethers;
|
|
115
|
+
return [4 /*yield*/, ethers.getSigners()];
|
|
116
|
+
case 2:
|
|
117
|
+
owner = (_a.sent())[0];
|
|
118
|
+
return [4 /*yield*/, ethers.getContractFactory(contractName)];
|
|
119
|
+
case 3:
|
|
120
|
+
Factory = _a.sent();
|
|
121
|
+
return [4 /*yield*/, Factory.deploy()];
|
|
122
|
+
case 4:
|
|
123
|
+
lock = _a.sent();
|
|
124
|
+
return [4 /*yield*/, lock.deployed()];
|
|
125
|
+
case 5:
|
|
126
|
+
_a.sent();
|
|
127
|
+
if (!(initializationArgs.length > 0)) return [3 /*break*/, 7];
|
|
128
|
+
logger("Initializing contract with owner ".concat(owner, " and args ").concat(initializationArgs));
|
|
129
|
+
connection = lock.connect(owner);
|
|
130
|
+
initializationKey = Object.keys(connection.functions).find(function (a) {
|
|
131
|
+
return a.split(",", initializationArgs.length) &&
|
|
132
|
+
a.startsWith("initialize(");
|
|
133
|
+
}) || "initialize";
|
|
134
|
+
if (!connection[initializationKey]) return [3 /*break*/, 7];
|
|
135
|
+
return [4 /*yield*/, connection[initializationKey].apply(connection, initializationArgs)];
|
|
136
|
+
case 6:
|
|
137
|
+
_a.sent();
|
|
138
|
+
_a.label = 7;
|
|
139
|
+
case 7: return [2 /*return*/, {
|
|
140
|
+
address: lock.address,
|
|
141
|
+
owner: owner.address
|
|
142
|
+
}];
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
exports.deployContract = deployContract;
|
|
148
|
+
//# sourceMappingURL=blockchain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blockchain.js","sourceRoot":"","sources":["../../src/native/blockchain.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAiC;AACjC,IAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,4BAA4B,CAAC,CAAC;AAU9D,IAAI,QASI,CAAC;AAET,SAAsB,mBAAmB,CAAC,yBAAiC;;;;;;oBACzE,IAAI,QAAQ,EAAE;wBACZ,sBAAO,QAAQ,CAAC,SAAS,EAAC;qBAC3B;oBACD,MAAM,CAAC,0CAAkC,yBAAyB,OAAG,CAAC,CAAC;oBAIjE,cAAc,GAAG,IAAA,gBAAM,EAAC;wBAC5B,KAAK,EAAE;4BACL,0BAA0B,EAAE,cAAc;4BAC1C,YAAY,EAAE,cAAc;4BAC5B,aAAa,EAAE,cAAc;yBAC9B;wBACD,MAAM,EAAE;4BACN,aAAa,EAAE,IAAI;yBACpB;qBACF,CAAC,CAAC;oBACc,qBAAM,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;4BACvD,OAAO,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,CACxE,UAAC,CAAC,EAAE,EAAM;;oCAAL,CAAC,QAAA,EAAE,CAAC,QAAA;gCAAM,OAAA,uBACV,CAAC,gBACH,CAAC,0BACG,CAAC,KACJ,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAC1B,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,UAE9B;4BAPa,CAOb,EACF,EAAe,CAChB,CAAC;wBACJ,CAAC,CAAC,EAAA;;oBAZI,QAAQ,GAAG,SAYf;oBACF,QAAQ,GAAG;wBACT,OAAO,EAAE,cAAc;wBACvB,UAAU,EAAE,yBAAyB;wBACrC,SAAS,EAAE,EAAE;wBACb,SAAS,EAAE,QAAQ;qBACpB,CAAC;oBACF,sBAAO,QAAQ,EAAC;;;;CACjB;AAtCD,kDAsCC;AAED,SAAsB,cAAc,CAClC,YAAoB;IACpB,4BAA4B;SAA5B,UAA4B,EAA5B,qBAA4B,EAA5B,IAA4B;QAA5B,2CAA4B;;;;;;;yBAExB,QAAS,CAAC,SAAS,CAAC,YAAY,CAAC,EAAjC,wBAAiC;oBACnC,sBAAO,QAAS,CAAC,SAAS,CAAC,YAAY,CAAC,EAAC;;oBAEzC,MAAM,CACJ,6BAAsB,YAAY,8BAAoB,kBAAkB,CAAE,CAC3E,CAAC;oBACI,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;oBAClC,OAAO,CAAC,KAAK,CAAC,QAAS,CAAC,UAAU,CAAC,CAAC;oBAC9B,OAAO,GAAG,OAAO,CAAC,SAAS,CAA6B,CAAC;oBAC/D,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG,QAAS,CAAC,OAAO,CAAC,QAAe,CAAC;oBAC7D,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACnB,MAAM,GAAK,OAAc,OAAnB,CAAoB;oBAClB,qBAAM,MAAM,CAAC,UAAU,EAAE,EAAA;;oBAAlC,KAAK,GAAI,CAAA,SAAyB,CAAA,GAA7B;oBACI,qBAAM,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAA;;oBAAvD,OAAO,GAAG,SAA6C;oBAChD,qBAAM,OAAO,CAAC,MAAM,EAAE,EAAA;;oBAA7B,IAAI,GAAG,SAAsB;oBACnC,qBAAM,IAAI,CAAC,QAAQ,EAAE,EAAA;;oBAArB,SAAqB,CAAC;yBAElB,CAAA,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAA,EAA7B,wBAA6B;oBAC/B,MAAM,CACJ,2CAAoC,KAAK,uBAAa,kBAAkB,CAAE,CAC3E,CAAC;oBACI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBACjC,iBAAiB,GACrB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CACpC,UAAC,CAAC;wBACA,OAAA,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,kBAAkB,CAAC,MAAM,CAAC;4BACvC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC;oBAD3B,CAC2B,CAC9B,IAAI,YAAY,CAAC;yBAChB,UAAU,CAAC,iBAAiB,CAAC,EAA7B,wBAA6B;oBAC/B,qBAAM,UAAU,CAAC,iBAAiB,CAAC,OAA7B,UAAU,EAAuB,kBAAkB,GAAC;;oBAA1D,SAA0D,CAAC;;wBAE/D,sBAAO;wBACL,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,KAAK,EAAE,KAAK,CAAC,OAAO;qBACrB,EAAC;;;;CAEL;AAxCD,wCAwCC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.LOCALHOST_DOMAIN = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* For some reason, on node 18 "node-fetch" fails when connecting to "localhost" domain
|
|
6
|
+
* So I needed to change to 127.0.0.1
|
|
7
|
+
*/
|
|
8
|
+
exports.LOCALHOST_DOMAIN = "127.0.0.1";
|
|
9
|
+
//# sourceMappingURL=consts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../src/native/consts.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACU,QAAA,gBAAgB,GAAG,WAAW,CAAA"}
|
|
@@ -18,4 +18,19 @@ export declare function startEmulator(args: {
|
|
|
18
18
|
UIPort: number;
|
|
19
19
|
/** An optional flag to indicate when a new emulator instance should be created */
|
|
20
20
|
suiteId?: string;
|
|
21
|
-
|
|
21
|
+
ports: number[];
|
|
22
|
+
shouldSaveData: boolean;
|
|
23
|
+
only: ("functions" | "hosting" | "firestore" | "storage" | "auth")[] | string[];
|
|
24
|
+
}, isRetry?: boolean): Promise<null>;
|
|
25
|
+
declare type Admin = ReturnType<typeof _getAuthAdminInstance>;
|
|
26
|
+
declare type KeysWithValsOfType<T, V> = keyof {
|
|
27
|
+
[P in keyof T as T[P] extends V ? P : never]: P;
|
|
28
|
+
};
|
|
29
|
+
export declare function invokeAuthAdmin<F extends KeysWithValsOfType<Admin, (...params: any[]) => any>>({ projectId, port, functionName, params, }: {
|
|
30
|
+
projectId: string;
|
|
31
|
+
port: string;
|
|
32
|
+
functionName: F;
|
|
33
|
+
params: Parameters<Admin[F]>;
|
|
34
|
+
}): Promise<any>;
|
|
35
|
+
declare function _getAuthAdminInstance(projectId: string, authPort: string): Promise<any>;
|
|
36
|
+
export {};
|
package/dist/native/emulator.js
CHANGED
|
@@ -35,10 +35,15 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
35
35
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
38
41
|
exports.__esModule = true;
|
|
39
|
-
exports.startEmulator = exports.killEmulator = void 0;
|
|
40
|
-
var node_fetch_1 = require("node-fetch");
|
|
42
|
+
exports.invokeAuthAdmin = exports.startEmulator = exports.killEmulator = void 0;
|
|
43
|
+
var node_fetch_1 = __importDefault(require("node-fetch"));
|
|
41
44
|
var child_process_1 = require("child_process");
|
|
45
|
+
var kill_port_1 = __importDefault(require("kill-port"));
|
|
46
|
+
var consts_1 = require("./consts");
|
|
42
47
|
var log = require("debug")("@muritavo/testing-toolkit/emulator");
|
|
43
48
|
var spawnResult;
|
|
44
49
|
function WaitTimeout(ml) {
|
|
@@ -64,7 +69,7 @@ function killEmulator() {
|
|
|
64
69
|
var t_1 = setTimeout(function () {
|
|
65
70
|
spawnResult = undefined;
|
|
66
71
|
rej(new Error("Couldn't kill emulator"));
|
|
67
|
-
},
|
|
72
|
+
}, 20000);
|
|
68
73
|
spawnResult.process.on("close", function () {
|
|
69
74
|
clearTimeout(t_1);
|
|
70
75
|
r(null);
|
|
@@ -85,7 +90,8 @@ exports.killEmulator = killEmulator;
|
|
|
85
90
|
* @param args Check property typings for details
|
|
86
91
|
* @returns A promise that resolves when the emulator is ready or fails if the emulator couldn't start or be reached
|
|
87
92
|
*/
|
|
88
|
-
function startEmulator(args) {
|
|
93
|
+
function startEmulator(args, isRetry) {
|
|
94
|
+
if (isRetry === void 0) { isRetry = false; }
|
|
89
95
|
return __awaiter(this, void 0, void 0, function () {
|
|
90
96
|
var suiteId;
|
|
91
97
|
var _this = this;
|
|
@@ -106,7 +112,7 @@ function startEmulator(args) {
|
|
|
106
112
|
id: suiteId,
|
|
107
113
|
project: args.projectId,
|
|
108
114
|
database: args.databaseToImport,
|
|
109
|
-
process: (0, child_process_1.spawn)("firebase emulators:start -P ".concat(args.projectId, " ").concat(args.databaseToImport ? "--import ".concat(args.databaseToImport) : ""), {
|
|
115
|
+
process: (0, child_process_1.spawn)("firebase emulators:start -P ".concat(args.projectId, " ").concat(args.databaseToImport ? "--import ".concat(args.databaseToImport) : "", " ").concat(args.shouldSaveData ? "--export-on-exit" : "", " ").concat(args.only.length ? "--only=".concat(args.only.join(",")) : ""), {
|
|
110
116
|
cwd: undefined,
|
|
111
117
|
env: process.env,
|
|
112
118
|
shell: true
|
|
@@ -139,17 +145,32 @@ function startEmulator(args) {
|
|
|
139
145
|
spawnResult.process.on("message", function (e) {
|
|
140
146
|
log("Emulator start sent message", e.toString());
|
|
141
147
|
});
|
|
142
|
-
spawnResult.process.on("close", function (e) {
|
|
143
|
-
clearTimeout(timeout);
|
|
144
|
-
log("Emulator closed with", e, "and data", scriptOutput);
|
|
145
|
-
rej(new Error("Emulator closed with code ".concat(e, ". Check the firebase-debug.log for more details")));
|
|
146
|
-
spawnResult = undefined;
|
|
147
|
-
});
|
|
148
148
|
scriptOutput = "";
|
|
149
149
|
spawnResult.process.stdout.on("data", function (data) {
|
|
150
150
|
data = data.toString();
|
|
151
151
|
scriptOutput += data;
|
|
152
152
|
});
|
|
153
|
+
spawnResult.process.on("close", function (e) {
|
|
154
|
+
clearTimeout(timeout);
|
|
155
|
+
log("Emulator closed with", e);
|
|
156
|
+
var unavailablePorts = args.ports.filter(function (p) {
|
|
157
|
+
return scriptOutput.includes(String(p));
|
|
158
|
+
});
|
|
159
|
+
var failedWithUnavailablePort = unavailablePorts.length;
|
|
160
|
+
if (failedWithUnavailablePort) {
|
|
161
|
+
log("Killing ports", unavailablePorts, "detected from text", scriptOutput);
|
|
162
|
+
Promise.all(unavailablePorts.map(function (p) { return (0, kill_port_1["default"])(p)["catch"](function () { }); })).then(function () {
|
|
163
|
+
if (isRetry === false)
|
|
164
|
+
return startEmulator(args, true);
|
|
165
|
+
else
|
|
166
|
+
rej(new Error("Some ports were unavailable (".concat(unavailablePorts.join(", "), "). They were killed, please try running the emulator again")));
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
rej(new Error("Emulator closed with code ".concat(e, ". Check the firebse-debug.log for more details")));
|
|
171
|
+
}
|
|
172
|
+
spawnResult = undefined;
|
|
173
|
+
});
|
|
153
174
|
_a.label = 1;
|
|
154
175
|
case 1:
|
|
155
176
|
if (!!breakLoop) return [3 /*break*/, 7];
|
|
@@ -157,7 +178,7 @@ function startEmulator(args) {
|
|
|
157
178
|
case 2:
|
|
158
179
|
_a.trys.push([2, 4, , 5]);
|
|
159
180
|
log("Checking if emulator is up");
|
|
160
|
-
return [4 /*yield*/, (0, node_fetch_1["default"])("http://
|
|
181
|
+
return [4 /*yield*/, (0, node_fetch_1["default"])("http://".concat(consts_1.LOCALHOST_DOMAIN, ":").concat(args.UIPort))];
|
|
161
182
|
case 3:
|
|
162
183
|
_a.sent();
|
|
163
184
|
log("Emulator is up and ready");
|
|
@@ -167,6 +188,7 @@ function startEmulator(args) {
|
|
|
167
188
|
return [3 /*break*/, 5];
|
|
168
189
|
case 4:
|
|
169
190
|
e_1 = _a.sent();
|
|
191
|
+
log(e_1);
|
|
170
192
|
log("Process is killed: ", spawnResult === null || spawnResult === void 0 ? void 0 : spawnResult.process.killed);
|
|
171
193
|
log("Emulator is not ready yet, retrying in 1 sec");
|
|
172
194
|
return [3 /*break*/, 5];
|
|
@@ -183,4 +205,36 @@ function startEmulator(args) {
|
|
|
183
205
|
});
|
|
184
206
|
}
|
|
185
207
|
exports.startEmulator = startEmulator;
|
|
208
|
+
function invokeAuthAdmin(_a) {
|
|
209
|
+
var projectId = _a.projectId, port = _a.port, functionName = _a.functionName, params = _a.params;
|
|
210
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
211
|
+
var app, func;
|
|
212
|
+
return __generator(this, function (_b) {
|
|
213
|
+
switch (_b.label) {
|
|
214
|
+
case 0:
|
|
215
|
+
app = _getAuthAdminInstance(projectId, port);
|
|
216
|
+
func = app[functionName];
|
|
217
|
+
return [4 /*yield*/, func.bind(app).apply(void 0, params)];
|
|
218
|
+
case 1:
|
|
219
|
+
_b.sent();
|
|
220
|
+
return [2 /*return*/, null];
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
exports.invokeAuthAdmin = invokeAuthAdmin;
|
|
226
|
+
var adminApp = {};
|
|
227
|
+
function _getAuthAdminInstance(projectId, authPort) {
|
|
228
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
229
|
+
var initializeApp, getAuth;
|
|
230
|
+
return __generator(this, function (_a) {
|
|
231
|
+
initializeApp = require("firebase-admin/app").initializeApp;
|
|
232
|
+
getAuth = require("firebase-admin/auth").getAuth;
|
|
233
|
+
process.env.FIREBASE_AUTH_EMULATOR_HOST = "".concat(consts_1.LOCALHOST_DOMAIN, ":").concat(authPort);
|
|
234
|
+
adminApp[projectId] =
|
|
235
|
+
adminApp[projectId] || initializeApp({ projectId: projectId }, projectId);
|
|
236
|
+
return [2 /*return*/, getAuth(adminApp[projectId])];
|
|
237
|
+
});
|
|
238
|
+
});
|
|
239
|
+
}
|
|
186
240
|
//# sourceMappingURL=emulator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emulator.js","sourceRoot":"","sources":["../../src/native/emulator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"emulator.js","sourceRoot":"","sources":["../../src/native/emulator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@muritavo/testing-toolkit",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "A series of functions to help with testing",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"files": [
|
|
@@ -24,11 +24,15 @@
|
|
|
24
24
|
"firebase": "^9.10.0",
|
|
25
25
|
"firebase-admin": "^11.5.0",
|
|
26
26
|
"text2png": "^2.3.0",
|
|
27
|
-
"web3": "^1.8.0"
|
|
27
|
+
"web3": "^1.8.0",
|
|
28
|
+
"ganache": "^7.8.0",
|
|
29
|
+
"hardhat": "^2.14.1"
|
|
28
30
|
},
|
|
29
31
|
"dependencies": {
|
|
30
32
|
"@firebase/rules-unit-testing": "^2.0.4",
|
|
33
|
+
"@types/kill-port": "^2.0.3",
|
|
31
34
|
"@types/node-fetch": "^2.6.2",
|
|
35
|
+
"kill-port": "^2.0.1",
|
|
32
36
|
"node-fetch": "^1",
|
|
33
37
|
"typescript": "^4.8.4"
|
|
34
38
|
}
|