@appium/base-driver 8.3.0 → 8.4.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/build/lib/basedriver/capabilities.d.ts +80 -0
- package/build/lib/basedriver/capabilities.d.ts.map +1 -0
- package/build/lib/basedriver/capabilities.js +12 -13
- package/build/lib/basedriver/commands/event.d.ts +9 -0
- package/build/lib/basedriver/commands/event.d.ts.map +1 -0
- package/build/lib/basedriver/commands/event.js +21 -23
- package/build/lib/basedriver/commands/find.d.ts +11 -0
- package/build/lib/basedriver/commands/find.d.ts.map +1 -0
- package/build/lib/basedriver/commands/find.js +42 -37
- package/build/lib/basedriver/commands/index.d.ts +8 -0
- package/build/lib/basedriver/commands/index.d.ts.map +1 -0
- package/build/lib/basedriver/commands/index.js +17 -16
- package/build/lib/basedriver/commands/log.d.ts +12 -0
- package/build/lib/basedriver/commands/log.d.ts.map +1 -0
- package/build/lib/basedriver/commands/log.js +23 -27
- package/build/lib/basedriver/commands/session.d.ts +11 -0
- package/build/lib/basedriver/commands/session.d.ts.map +1 -0
- package/build/lib/basedriver/commands/session.js +21 -149
- package/build/lib/basedriver/commands/settings.d.ts +10 -0
- package/build/lib/basedriver/commands/settings.d.ts.map +1 -0
- package/build/lib/basedriver/commands/settings.js +19 -19
- package/build/lib/basedriver/commands/timeout.d.ts +8 -0
- package/build/lib/basedriver/commands/timeout.d.ts.map +1 -0
- package/build/lib/basedriver/commands/timeout.js +118 -139
- package/build/lib/basedriver/core.d.ts +235 -0
- package/build/lib/basedriver/core.d.ts.map +1 -0
- package/build/lib/basedriver/core.js +283 -0
- package/build/lib/basedriver/desired-caps.d.ts +5 -0
- package/build/lib/basedriver/desired-caps.d.ts.map +1 -0
- package/build/lib/basedriver/desired-caps.js +2 -4
- package/build/lib/basedriver/device-settings.d.ts +32 -0
- package/build/lib/basedriver/device-settings.d.ts.map +1 -0
- package/build/lib/basedriver/device-settings.js +20 -14
- package/build/lib/basedriver/driver.d.ts +83 -0
- package/build/lib/basedriver/driver.d.ts.map +1 -0
- package/build/lib/basedriver/driver.js +101 -256
- package/build/lib/basedriver/helpers.d.ts +132 -0
- package/build/lib/basedriver/helpers.d.ts.map +1 -0
- package/build/lib/basedriver/helpers.js +16 -2
- package/build/lib/basedriver/logger.d.ts +3 -0
- package/build/lib/basedriver/logger.d.ts.map +1 -0
- package/build/lib/basedriver/logger.js +2 -4
- package/build/lib/constants.d.ts +9 -0
- package/build/lib/constants.d.ts.map +1 -0
- package/build/lib/constants.js +2 -4
- package/build/lib/express/crash.d.ts +3 -0
- package/build/lib/express/crash.d.ts.map +1 -0
- package/build/lib/express/crash.js +2 -4
- package/build/lib/express/express-logging.d.ts +3 -0
- package/build/lib/express/express-logging.d.ts.map +1 -0
- package/build/lib/express/express-logging.js +2 -4
- package/build/lib/express/idempotency.d.ts +2 -0
- package/build/lib/express/idempotency.d.ts.map +1 -0
- package/build/lib/express/idempotency.js +2 -4
- package/build/lib/express/logger.d.ts +3 -0
- package/build/lib/express/logger.d.ts.map +1 -0
- package/build/lib/express/logger.js +2 -4
- package/build/lib/express/middleware.d.ts +9 -0
- package/build/lib/express/middleware.d.ts.map +1 -0
- package/build/lib/express/middleware.js +2 -4
- package/build/lib/express/server.d.ts +10 -0
- package/build/lib/express/server.d.ts.map +1 -0
- package/build/lib/express/server.js +2 -4
- package/build/lib/express/static.d.ts +6 -0
- package/build/lib/express/static.d.ts.map +1 -0
- package/build/lib/express/static.js +2 -4
- package/build/lib/express/websocket.d.ts +64 -0
- package/build/lib/express/websocket.d.ts.map +1 -0
- package/build/lib/express/websocket.js +40 -41
- package/build/lib/helpers/capabilities.d.ts +13 -0
- package/build/lib/helpers/capabilities.d.ts.map +1 -0
- package/build/lib/helpers/capabilities.js +40 -2
- package/build/lib/index.d.ts +183 -0
- package/build/lib/index.d.ts.map +1 -0
- package/build/lib/index.js +41 -23
- package/build/lib/jsonwp-proxy/protocol-converter.d.ts +48 -0
- package/build/lib/jsonwp-proxy/protocol-converter.d.ts.map +1 -0
- package/build/lib/jsonwp-proxy/protocol-converter.js +2 -4
- package/build/lib/jsonwp-proxy/proxy.d.ts +41 -0
- package/build/lib/jsonwp-proxy/proxy.d.ts.map +1 -0
- package/build/lib/jsonwp-proxy/proxy.js +25 -9
- package/build/lib/jsonwp-status/status.d.ts +159 -0
- package/build/lib/jsonwp-status/status.d.ts.map +1 -0
- package/build/lib/jsonwp-status/status.js +2 -4
- package/build/lib/protocol/errors.d.ts +310 -0
- package/build/lib/protocol/errors.d.ts.map +1 -0
- package/build/lib/protocol/errors.js +82 -5
- package/build/lib/protocol/helpers.d.ts +22 -0
- package/build/lib/protocol/helpers.d.ts.map +1 -0
- package/build/lib/protocol/helpers.js +2 -4
- package/build/lib/protocol/index.d.ts +16 -0
- package/build/lib/protocol/index.d.ts.map +1 -0
- package/build/lib/protocol/index.js +8 -10
- package/build/lib/protocol/protocol.d.ts +11 -0
- package/build/lib/protocol/protocol.d.ts.map +1 -0
- package/build/lib/protocol/protocol.js +3 -9
- package/build/lib/protocol/routes.d.ts +6 -0
- package/build/lib/protocol/routes.d.ts.map +1 -0
- package/build/lib/protocol/routes.js +18 -4
- package/build/lib/protocol/validators.d.ts +8 -0
- package/build/lib/protocol/validators.d.ts.map +1 -0
- package/build/lib/protocol/validators.js +2 -4
- package/build/test/basedriver/README.md +5 -0
- package/build/test/basedriver/driver-e2e-tests.js +2 -4
- package/build/test/basedriver/driver-tests.js +31 -6
- package/build/test/basedriver/index.js +2 -4
- package/build/test/e2e/basedriver/driver.e2e.spec.js +15 -0
- package/build/test/e2e/basedriver/helpers.e2e.spec.js +192 -0
- package/build/test/e2e/basedriver/websockets.e2e.spec.js +87 -0
- package/build/test/e2e/express/server.e2e.spec.js +159 -0
- package/build/test/e2e/jsonwp-proxy/proxy.e2e.spec.js +59 -0
- package/build/test/e2e/protocol/fake-driver.js +163 -0
- package/build/test/e2e/protocol/helpers.js +25 -0
- package/build/test/e2e/protocol/protocol.e2e.spec.js +1186 -0
- package/build/test/helpers.js +2 -4
- package/build/test/unit/basedriver/capabilities.spec.js +672 -0
- package/build/test/unit/basedriver/capability.spec.js +353 -0
- package/build/test/unit/basedriver/commands/event.spec.js +110 -0
- package/build/test/unit/basedriver/commands/log.spec.js +92 -0
- package/build/test/unit/basedriver/driver.spec.js +15 -0
- package/build/test/unit/basedriver/helpers.spec.js +151 -0
- package/build/test/unit/basedriver/timeout.spec.js +135 -0
- package/build/test/unit/express/server.spec.js +155 -0
- package/build/test/unit/express/static.spec.js +26 -0
- package/build/test/unit/jsonwp-proxy/mock-request.js +91 -0
- package/build/test/unit/jsonwp-proxy/protocol-converter.spec.js +171 -0
- package/build/test/unit/jsonwp-proxy/proxy.spec.js +292 -0
- package/build/test/unit/jsonwp-proxy/url.spec.js +165 -0
- package/build/test/unit/jsonwp-status/status.spec.js +34 -0
- package/build/test/unit/protocol/errors.spec.js +390 -0
- package/build/test/unit/protocol/routes.spec.js +80 -0
- package/build/test/unit/protocol/validator.spec.js +149 -0
- package/build/tsconfig.tsbuildinfo +1 -0
- package/lib/basedriver/capabilities.js +49 -10
- package/lib/basedriver/commands/event.js +49 -31
- package/lib/basedriver/commands/find.js +108 -43
- package/lib/basedriver/commands/index.js +25 -19
- package/lib/basedriver/commands/log.js +60 -33
- package/lib/basedriver/commands/session.js +39 -141
- package/lib/basedriver/commands/settings.js +33 -13
- package/lib/basedriver/commands/timeout.js +153 -153
- package/lib/basedriver/core.js +497 -0
- package/lib/basedriver/desired-caps.js +1 -1
- package/lib/basedriver/device-settings.js +47 -12
- package/lib/basedriver/driver.js +272 -383
- package/lib/basedriver/helpers.js +18 -2
- package/lib/express/websocket.js +35 -32
- package/lib/helpers/capabilities.js +60 -1
- package/lib/index.js +16 -12
- package/lib/jsonwp-proxy/proxy.js +26 -6
- package/lib/protocol/errors.js +42 -42
- package/lib/protocol/index.js +4 -4
- package/lib/protocol/protocol.js +1 -3
- package/lib/protocol/routes.js +9 -0
- package/package.json +22 -14
- package/test/basedriver/README.md +5 -0
- package/test/basedriver/driver-e2e-tests.js +1 -1
- package/test/basedriver/driver-tests.js +31 -2
- package/build/test/basedriver/capabilities-specs.js +0 -674
- package/build/test/basedriver/capability-specs.js +0 -355
- package/build/test/basedriver/commands/event-specs.js +0 -112
- package/build/test/basedriver/commands/log-specs.js +0 -87
- package/build/test/basedriver/driver-e2e-specs.js +0 -17
- package/build/test/basedriver/driver-specs.js +0 -17
- package/build/test/basedriver/helpers-e2e-specs.js +0 -194
- package/build/test/basedriver/helpers-specs.js +0 -153
- package/build/test/basedriver/timeout-specs.js +0 -137
- package/build/test/basedriver/websockets-e2e-specs.js +0 -84
- package/build/test/express/server-e2e-specs.js +0 -161
- package/build/test/express/server-specs.js +0 -157
- package/build/test/express/static-specs.js +0 -28
- package/build/test/jsonwp-proxy/mock-request.js +0 -93
- package/build/test/jsonwp-proxy/protocol-converter-specs.js +0 -173
- package/build/test/jsonwp-proxy/proxy-e2e-specs.js +0 -61
- package/build/test/jsonwp-proxy/proxy-specs.js +0 -294
- package/build/test/jsonwp-proxy/url-specs.js +0 -167
- package/build/test/jsonwp-status/status-specs.js +0 -36
- package/build/test/protocol/errors-specs.js +0 -388
- package/build/test/protocol/fake-driver.js +0 -165
- package/build/test/protocol/helpers.js +0 -27
- package/build/test/protocol/protocol-e2e-specs.js +0 -1188
- package/build/test/protocol/routes-specs.js +0 -82
- package/build/test/protocol/validator-specs.js +0 -151
- package/index.d.ts +0 -386
- package/test/basedriver/capabilities-specs.js +0 -537
- package/test/basedriver/capability-specs.js +0 -383
- package/test/basedriver/commands/event-specs.js +0 -74
- package/test/basedriver/commands/log-specs.js +0 -79
- package/test/basedriver/driver-e2e-specs.js +0 -8
- package/test/basedriver/driver-specs.js +0 -8
- package/test/basedriver/fixtures/BadZippedApp.zip +0 -1
- package/test/basedriver/fixtures/FakeAndroidApp.apk +0 -1
- package/test/basedriver/fixtures/FakeAndroidApp.asd +0 -0
- package/test/basedriver/fixtures/FakeIOSApp.app +0 -1
- package/test/basedriver/fixtures/FakeIOSApp.app.zip +0 -0
- package/test/basedriver/fixtures/FakeIOSApp.ipa +0 -0
- package/test/basedriver/fixtures/custom-element-finder-bad.js +0 -5
- package/test/basedriver/fixtures/custom-element-finder.js +0 -29
- package/test/basedriver/helpers-e2e-specs.js +0 -187
- package/test/basedriver/helpers-specs.js +0 -137
- package/test/basedriver/timeout-specs.js +0 -128
- package/test/basedriver/websockets-e2e-specs.js +0 -75
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
require("source-map-support/register");
|
|
6
|
-
|
|
7
|
-
var _lib = _interopRequireDefault(require("../../lib"));
|
|
8
|
-
|
|
9
|
-
var _driverTests = _interopRequireDefault(require("./driver-tests"));
|
|
10
|
-
|
|
11
|
-
(0, _driverTests.default)(_lib.default, {
|
|
12
|
-
platformName: 'iOS',
|
|
13
|
-
'appium:deviceName': 'Delorean'
|
|
14
|
-
});require('source-map-support').install();
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9kcml2ZXItc3BlY3MuanMiXSwibmFtZXMiOlsiQmFzZURyaXZlciIsInBsYXRmb3JtTmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0EsMEJBQW9CQSxZQUFwQixFQUFnQztBQUM5QkMsRUFBQUEsWUFBWSxFQUFFLEtBRGdCO0FBRTlCLHVCQUFxQjtBQUZTLENBQWhDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHJhbnNwaWxlOm1vY2hhXG5cbmltcG9ydCBCYXNlRHJpdmVyIGZyb20gJy4uLy4uL2xpYic7XG5pbXBvcnQgYmFzZURyaXZlclVuaXRUZXN0cyBmcm9tICcuL2RyaXZlci10ZXN0cyc7XG5iYXNlRHJpdmVyVW5pdFRlc3RzKEJhc2VEcml2ZXIsIHtcbiAgcGxhdGZvcm1OYW1lOiAnaU9TJyxcbiAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0RlbG9yZWFuJ1xufSk7XG4iXSwiZmlsZSI6InRlc3QvYmFzZWRyaXZlci9kcml2ZXItc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
require("source-map-support/register");
|
|
6
|
-
|
|
7
|
-
var _path = _interopRequireDefault(require("path"));
|
|
8
|
-
|
|
9
|
-
var _url = _interopRequireDefault(require("url"));
|
|
10
|
-
|
|
11
|
-
var _support = require("@appium/support");
|
|
12
|
-
|
|
13
|
-
var _helpers = require("../../lib/basedriver/helpers");
|
|
14
|
-
|
|
15
|
-
var _http = _interopRequireDefault(require("http"));
|
|
16
|
-
|
|
17
|
-
var _finalhandler = _interopRequireDefault(require("finalhandler"));
|
|
18
|
-
|
|
19
|
-
var _serveStatic = _interopRequireDefault(require("serve-static"));
|
|
20
|
-
|
|
21
|
-
var _contentDisposition = _interopRequireDefault(require("content-disposition"));
|
|
22
|
-
|
|
23
|
-
var _bluebird = _interopRequireDefault(require("bluebird"));
|
|
24
|
-
|
|
25
|
-
var _helpers2 = require("../helpers");
|
|
26
|
-
|
|
27
|
-
function getFixture(file) {
|
|
28
|
-
return _path.default.resolve(__dirname, '..', '..', '..', 'test', 'basedriver', 'fixtures', file);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
describe('app download and configuration', function () {
|
|
32
|
-
describe('configureApp', function () {
|
|
33
|
-
it('should get the path for a local .app', async function () {
|
|
34
|
-
let newAppPath = await (0, _helpers.configureApp)(getFixture('FakeIOSApp.app'), '.app');
|
|
35
|
-
newAppPath.should.contain('FakeIOSApp.app');
|
|
36
|
-
let contents = await _support.fs.readFile(newAppPath, 'utf8');
|
|
37
|
-
contents.should.eql('this is not really an app\n');
|
|
38
|
-
});
|
|
39
|
-
it('should get the path for a local .apk', async function () {
|
|
40
|
-
let newAppPath = await (0, _helpers.configureApp)(getFixture('FakeAndroidApp.apk'), '.apk');
|
|
41
|
-
newAppPath.should.contain('FakeAndroidApp.apk');
|
|
42
|
-
let contents = await _support.fs.readFile(newAppPath, 'utf8');
|
|
43
|
-
contents.should.eql('this is not really an apk\n');
|
|
44
|
-
});
|
|
45
|
-
it('should unzip and get the path for a local .app.zip', async function () {
|
|
46
|
-
let newAppPath = await (0, _helpers.configureApp)(getFixture('FakeIOSApp.app.zip'), '.app');
|
|
47
|
-
newAppPath.should.contain('FakeIOSApp.app');
|
|
48
|
-
let contents = await _support.fs.readFile(newAppPath, 'utf8');
|
|
49
|
-
contents.should.eql('this is not really an app\n');
|
|
50
|
-
});
|
|
51
|
-
it('should unzip and get the path for a local .ipa', async function () {
|
|
52
|
-
let newAppPath = await (0, _helpers.configureApp)(getFixture('FakeIOSApp.ipa'), '.app');
|
|
53
|
-
newAppPath.should.contain('FakeIOSApp.app');
|
|
54
|
-
let contents = await _support.fs.readFile(newAppPath, 'utf8');
|
|
55
|
-
contents.should.eql('this is not really an app\n');
|
|
56
|
-
});
|
|
57
|
-
it('should fail for a bad zip file', async function () {
|
|
58
|
-
await (0, _helpers.configureApp)(getFixture('BadZippedApp.zip'), '.app').should.be.rejectedWith(/PK/);
|
|
59
|
-
});
|
|
60
|
-
it('should fail if extensions do not match', async function () {
|
|
61
|
-
await (0, _helpers.configureApp)(getFixture('FakeIOSApp.app'), '.wrong').should.be.rejectedWith(/did not have extension/);
|
|
62
|
-
});
|
|
63
|
-
it('should fail if zip file does not contain an app whose extension matches', async function () {
|
|
64
|
-
await (0, _helpers.configureApp)(getFixture('FakeIOSApp.app.zip'), '.wrong').should.be.rejectedWith(/did not have extension/);
|
|
65
|
-
});
|
|
66
|
-
describe('should download an app from the web', function () {
|
|
67
|
-
let port;
|
|
68
|
-
let serverUrl;
|
|
69
|
-
before(async function () {
|
|
70
|
-
port = await (0, _helpers2.getTestPort)(true);
|
|
71
|
-
serverUrl = `http://${_helpers2.TEST_HOST}:${port}`;
|
|
72
|
-
});
|
|
73
|
-
describe('server not available', function () {
|
|
74
|
-
it('should handle server not available', async function () {
|
|
75
|
-
await (0, _helpers.configureApp)(`${serverUrl}/FakeIOSApp.app.zip`, '.app').should.eventually.be.rejectedWith(/ECONNREFUSED/);
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
describe('server available', function () {
|
|
79
|
-
let server;
|
|
80
|
-
before(function () {
|
|
81
|
-
const dir = _path.default.resolve(__dirname, '..', '..', '..', 'test', 'basedriver', 'fixtures');
|
|
82
|
-
|
|
83
|
-
const serve = (0, _serveStatic.default)(dir, {
|
|
84
|
-
index: false,
|
|
85
|
-
setHeaders: (res, path) => {
|
|
86
|
-
res.setHeader('Content-Disposition', (0, _contentDisposition.default)(path));
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
server = _http.default.createServer(function (req, res) {
|
|
90
|
-
if (req.url.indexOf('missing') !== -1) {
|
|
91
|
-
res.writeHead(404);
|
|
92
|
-
res.end();
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
const contentType = new URLSearchParams(_url.default.parse(req.url).search).get('content-type');
|
|
97
|
-
|
|
98
|
-
if (contentType !== null) {
|
|
99
|
-
res.setHeader('content-type', contentType);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
serve(req, res, (0, _finalhandler.default)(req, res));
|
|
103
|
-
});
|
|
104
|
-
const close = server.close.bind(server);
|
|
105
|
-
|
|
106
|
-
server.close = async function () {
|
|
107
|
-
await _bluebird.default.delay(1000);
|
|
108
|
-
return await new _bluebird.default((resolve, reject) => {
|
|
109
|
-
server.on('close', resolve);
|
|
110
|
-
close(err => {
|
|
111
|
-
if (err) reject(err);
|
|
112
|
-
});
|
|
113
|
-
});
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
server.listen(port);
|
|
117
|
-
});
|
|
118
|
-
after(async function () {
|
|
119
|
-
await server.close();
|
|
120
|
-
});
|
|
121
|
-
it('should download zip file', async function () {
|
|
122
|
-
let newAppPath = await (0, _helpers.configureApp)(`${serverUrl}/FakeIOSApp.app.zip`, '.app');
|
|
123
|
-
newAppPath.should.contain('FakeIOSApp.app');
|
|
124
|
-
let contents = await _support.fs.readFile(newAppPath, 'utf8');
|
|
125
|
-
contents.should.eql('this is not really an app\n');
|
|
126
|
-
});
|
|
127
|
-
it('should download zip file with query string', async function () {
|
|
128
|
-
let newAppPath = await (0, _helpers.configureApp)(`${serverUrl}/FakeIOSApp.app.zip?sv=abc&sr=def`, '.app');
|
|
129
|
-
newAppPath.should.contain('.app');
|
|
130
|
-
let contents = await _support.fs.readFile(newAppPath, 'utf8');
|
|
131
|
-
contents.should.eql('this is not really an app\n');
|
|
132
|
-
});
|
|
133
|
-
it('should download an app file', async function () {
|
|
134
|
-
let newAppPath = await (0, _helpers.configureApp)(`${serverUrl}/FakeIOSApp.app`, '.app');
|
|
135
|
-
newAppPath.should.contain('.app');
|
|
136
|
-
let contents = await _support.fs.readFile(newAppPath, 'utf8');
|
|
137
|
-
contents.should.eql('this is not really an app\n');
|
|
138
|
-
});
|
|
139
|
-
it('should accept multiple extensions', async function () {
|
|
140
|
-
let newAppPath = await (0, _helpers.configureApp)(`${serverUrl}/FakeIOSApp.app.zip`, ['.app', '.aab']);
|
|
141
|
-
newAppPath.should.contain('FakeIOSApp.app');
|
|
142
|
-
let contents = await _support.fs.readFile(newAppPath, 'utf8');
|
|
143
|
-
contents.should.eql('this is not really an app\n');
|
|
144
|
-
});
|
|
145
|
-
it('should download an apk file', async function () {
|
|
146
|
-
let newAppPath = await (0, _helpers.configureApp)(`${serverUrl}/FakeAndroidApp.apk`, '.apk');
|
|
147
|
-
newAppPath.should.contain('.apk');
|
|
148
|
-
let contents = await _support.fs.readFile(newAppPath, 'utf8');
|
|
149
|
-
contents.should.eql('this is not really an apk\n');
|
|
150
|
-
});
|
|
151
|
-
it('should handle zip file that cannot be downloaded', async function () {
|
|
152
|
-
await (0, _helpers.configureApp)(`${serverUrl}/missing/FakeIOSApp.app.zip`, '.app').should.eventually.be.rejected;
|
|
153
|
-
});
|
|
154
|
-
it('should handle invalid protocol', async function () {
|
|
155
|
-
await (0, _helpers.configureApp)('file://C:/missing/FakeIOSApp.app.zip', '.app').should.eventually.be.rejectedWith(/is not supported/);
|
|
156
|
-
await (0, _helpers.configureApp)(`ftp://${_helpers2.TEST_HOST}:${port}/missing/FakeIOSApp.app.zip`, '.app').should.eventually.be.rejectedWith(/is not supported/);
|
|
157
|
-
});
|
|
158
|
-
it('should handle missing file in Windows path format', async function () {
|
|
159
|
-
await (0, _helpers.configureApp)('C:\\missing\\FakeIOSApp.app.zip', '.app').should.eventually.be.rejectedWith(/does not exist or is not accessible/);
|
|
160
|
-
});
|
|
161
|
-
it('should recognize zip mime types and unzip the downloaded file', async function () {
|
|
162
|
-
let newAppPath = await (0, _helpers.configureApp)(`${serverUrl}/FakeAndroidApp.asd?content-type=${encodeURIComponent('application/zip')}`, '.apk');
|
|
163
|
-
newAppPath.should.contain('FakeAndroidApp.apk');
|
|
164
|
-
newAppPath.should.not.contain('.asd');
|
|
165
|
-
let contents = await _support.fs.readFile(newAppPath, 'utf8');
|
|
166
|
-
contents.should.eql('this is not really an apk\n');
|
|
167
|
-
});
|
|
168
|
-
it('should recognize zip mime types with parameter and unzip the downloaded file', async function () {
|
|
169
|
-
let newAppPath = await (0, _helpers.configureApp)(`${serverUrl}/FakeAndroidApp.asd?content-type=${encodeURIComponent('application/zip; parameter=value')}`, '.apk');
|
|
170
|
-
newAppPath.should.contain('FakeAndroidApp.apk');
|
|
171
|
-
newAppPath.should.not.contain('.asd');
|
|
172
|
-
let contents = await _support.fs.readFile(newAppPath, 'utf8');
|
|
173
|
-
contents.should.eql('this is not really an apk\n');
|
|
174
|
-
});
|
|
175
|
-
it('should recognize zip mime types and unzip the downloaded file with query string', async function () {
|
|
176
|
-
let newAppPath = await (0, _helpers.configureApp)(`${serverUrl}/FakeAndroidApp.asd?content-type=${encodeURIComponent('application/zip')}&sv=abc&sr=def`, '.apk');
|
|
177
|
-
newAppPath.should.contain('FakeAndroidApp.apk');
|
|
178
|
-
newAppPath.should.not.contain('.asd');
|
|
179
|
-
let contents = await _support.fs.readFile(newAppPath, 'utf8');
|
|
180
|
-
contents.should.eql('this is not really an apk\n');
|
|
181
|
-
});
|
|
182
|
-
it('should treat an unknown mime type as an app', async function () {
|
|
183
|
-
let newAppPath = await (0, _helpers.configureApp)(`${serverUrl}/FakeAndroidApp.apk?content-type=${encodeURIComponent('application/bip')}`, '.apk');
|
|
184
|
-
newAppPath.should.contain('.apk');
|
|
185
|
-
let contents = await _support.fs.readFile(newAppPath, 'utf8');
|
|
186
|
-
contents.should.eql('this is not really an apk\n');
|
|
187
|
-
});
|
|
188
|
-
});
|
|
189
|
-
});
|
|
190
|
-
});
|
|
191
|
-
});require('source-map-support').install();
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9oZWxwZXJzLWUyZS1zcGVjcy5qcyJdLCJuYW1lcyI6WyJnZXRGaXh0dXJlIiwiZmlsZSIsInBhdGgiLCJyZXNvbHZlIiwiX19kaXJuYW1lIiwiZGVzY3JpYmUiLCJpdCIsIm5ld0FwcFBhdGgiLCJzaG91bGQiLCJjb250YWluIiwiY29udGVudHMiLCJmcyIsInJlYWRGaWxlIiwiZXFsIiwiYmUiLCJyZWplY3RlZFdpdGgiLCJwb3J0Iiwic2VydmVyVXJsIiwiYmVmb3JlIiwiVEVTVF9IT1NUIiwiZXZlbnR1YWxseSIsInNlcnZlciIsImRpciIsInNlcnZlIiwiaW5kZXgiLCJzZXRIZWFkZXJzIiwicmVzIiwic2V0SGVhZGVyIiwiaHR0cCIsImNyZWF0ZVNlcnZlciIsInJlcSIsInVybCIsImluZGV4T2YiLCJ3cml0ZUhlYWQiLCJlbmQiLCJjb250ZW50VHlwZSIsIlVSTFNlYXJjaFBhcmFtcyIsInBhcnNlIiwic2VhcmNoIiwiZ2V0IiwiY2xvc2UiLCJiaW5kIiwiQiIsImRlbGF5IiwicmVqZWN0Iiwib24iLCJlcnIiLCJsaXN0ZW4iLCJhZnRlciIsInJlamVjdGVkIiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwibm90Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxTQUFTQSxVQUFULENBQXFCQyxJQUFyQixFQUEyQjtBQUV6QixTQUFPQyxjQUFLQyxPQUFMLENBQWFDLFNBQWIsRUFBd0IsSUFBeEIsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsTUFBMUMsRUFBa0QsWUFBbEQsRUFBZ0UsVUFBaEUsRUFBNEVILElBQTVFLENBQVA7QUFDRDs7QUFFREksUUFBUSxDQUFDLGdDQUFELEVBQW1DLFlBQVk7QUFDckRBLEVBQUFBLFFBQVEsQ0FBQyxjQUFELEVBQWlCLFlBQVk7QUFDbkNDLElBQUFBLEVBQUUsQ0FBQyxzQ0FB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QUFwQjtBQUNELFNBTEMsQ0FBRjtBQU1ELE9BakhPLENBQVI7QUFrSEQsS0FqSU8sQ0FBUjtBQWtJRCxHQXZLTyxDQUFSO0FBd0tELENBektPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB1cmwgZnJvbSAndXJsJztcbmltcG9ydCB7IGZzIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGNvbmZpZ3VyZUFwcCB9IGZyb20gJy4uLy4uL2xpYi9iYXNlZHJpdmVyL2hlbHBlcnMnO1xuaW1wb3J0IGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgZmluYWxoYW5kbGVyIGZyb20gJ2ZpbmFsaGFuZGxlcic7XG5pbXBvcnQgc2VydmVTdGF0aWMgZnJvbSAnc2VydmUtc3RhdGljJztcbmltcG9ydCBjb250ZW50RGlzcG9zaXRpb24gZnJvbSAnY29udGVudC1kaXNwb3NpdGlvbic7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQge1RFU1RfSE9TVCwgZ2V0VGVzdFBvcnR9IGZyb20gJy4uL2hlbHBlcnMnO1xuXG5cbmZ1bmN0aW9uIGdldEZpeHR1cmUgKGZpbGUpIHtcbiAgLy8gWFhYOiBfX2Rpcm5hbWUgZGlzYWxsb3dlZCBpbiBuYXRpdmUgRVNNXG4gIHJldHVybiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnLi4nLCAndGVzdCcsICdiYXNlZHJpdmVyJywgJ2ZpeHR1cmVzJywgZmlsZSk7XG59XG5cbmRlc2NyaWJlKCdhcHAgZG93bmxvYWQgYW5kIGNvbmZpZ3VyYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gIGRlc2NyaWJlKCdjb25maWd1cmVBcHAnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBnZXQgdGhlIHBhdGggZm9yIGEgbG9jYWwgLmFwcCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBuZXdBcHBQYXRoID0gYXdhaXQgY29uZmlndXJlQXBwKGdldEZpeHR1cmUoJ0Zha2VJT1NBcHAuYXBwJyksICcuYXBwJyk7XG4gICAgICBuZXdBcHBQYXRoLnNob3VsZC5jb250YWluKCdGYWtlSU9TQXBwLmFwcCcpO1xuICAgICAgbGV0IGNvbnRlbnRzID0gYXdhaXQgZnMucmVhZEZpbGUobmV3QXBwUGF0aCwgJ3V0ZjgnKTtcbiAgICAgIGNvbnRlbnRzLnNob3VsZC5lcWwoJ3RoaXMgaXMgbm90IHJlYWxseSBhbiBhcHBcXG4nKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGdldCB0aGUgcGF0aCBmb3IgYSBsb2NhbCAuYXBrJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IG5ld0FwcFBhdGggPSBhd2FpdCBjb25maWd1cmVBcHAoZ2V0Rml4dHVyZSgnRmFrZUFuZHJvaWRBcHAuYXBrJyksICcuYXBrJyk7XG4gICAgICBuZXdBcHBQYXRoLnNob3VsZC5jb250YWluKCdGYWtlQW5kcm9pZEFwcC5hcGsnKTtcbiAgICAgIGxldCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKG5ld0FwcFBhdGgsICd1dGY4Jyk7XG4gICAgICBjb250ZW50cy5zaG91bGQuZXFsKCd0aGlzIGlzIG5vdCByZWFsbHkgYW4gYXBrXFxuJyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCB1bnppcCBhbmQgZ2V0IHRoZSBwYXRoIGZvciBhIGxvY2FsIC5hcHAuemlwJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IG5ld0FwcFBhdGggPSBhd2FpdCBjb25maWd1cmVBcHAoZ2V0Rml4dHVyZSgnRmFrZUlPU0FwcC5hcHAuemlwJyksICcuYXBwJyk7XG4gICAgICBuZXdBcHBQYXRoLnNob3VsZC5jb250YWluKCdGYWtlSU9TQXBwLmFwcCcpO1xuICAgICAgbGV0IGNvbnRlbnRzID0gYXdhaXQgZnMucmVhZEZpbGUobmV3QXBwUGF0aCwgJ3V0ZjgnKTtcbiAgICAgIGNvbnRlbnRzLnNob3VsZC5lcWwoJ3RoaXMgaXMgbm90IHJlYWxseSBhbiBhcHBcXG4nKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHVuemlwIGFuZCBnZXQgdGhlIHBhdGggZm9yIGEgbG9jYWwgLmlwYScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBuZXdBcHBQYXRoID0gYXdhaXQgY29uZmlndXJlQXBwKGdldEZpeHR1cmUoJ0Zha2VJT1NBcHAuaXBhJyksICcuYXBwJyk7XG4gICAgICBuZXdBcHBQYXRoLnNob3VsZC5jb250YWluKCdGYWtlSU9TQXBwLmFwcCcpO1xuICAgICAgbGV0IGNvbnRlbnRzID0gYXdhaXQgZnMucmVhZEZpbGUobmV3QXBwUGF0aCwgJ3V0ZjgnKTtcbiAgICAgIGNvbnRlbnRzLnNob3VsZC5lcWwoJ3RoaXMgaXMgbm90IHJlYWxseSBhbiBhcHBcXG4nKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGZhaWwgZm9yIGEgYmFkIHppcCBmaWxlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgY29uZmlndXJlQXBwKGdldEZpeHR1cmUoJ0JhZFppcHBlZEFwcC56aXAnKSwgJy5hcHAnKVxuICAgICAgICAuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvUEsvKTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGZhaWwgaWYgZXh0ZW5zaW9ucyBkbyBub3QgbWF0Y2gnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBjb25maWd1cmVBcHAoZ2V0Rml4dHVyZSgnRmFrZUlPU0FwcC5hcHAnKSwgJy53cm9uZycpXG4gICAgICAgIC5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9kaWQgbm90IGhhdmUgZXh0ZW5zaW9uLyk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBmYWlsIGlmIHppcCBmaWxlIGRvZXMgbm90IGNvbnRhaW4gYW4gYXBwIHdob3NlIGV4dGVuc2lvbiBtYXRjaGVzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgY29uZmlndXJlQXBwKGdldEZpeHR1cmUoJ0Zha2VJT1NBcHAuYXBwLnppcCcpLCAnLndyb25nJylcbiAgICAgICAgLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL2RpZCBub3QgaGF2ZSBleHRlbnNpb24vKTtcbiAgICB9KTtcbiAgICBkZXNjcmliZSgnc2hvdWxkIGRvd25sb2FkIGFuIGFwcCBmcm9tIHRoZSB3ZWInLCBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgcG9ydDtcbiAgICAgIGxldCBzZXJ2ZXJVcmw7XG5cbiAgICAgIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHBvcnQgPSBhd2FpdCBnZXRUZXN0UG9ydCh0cnVlKTtcbiAgICAgICAgc2VydmVyVXJsID0gYGh0dHA6Ly8ke1RFU1RfSE9TVH06JHtwb3J0fWA7XG4gICAgICB9KTtcblxuICAgICAgZGVzY3JpYmUoJ3NlcnZlciBub3QgYXZhaWxhYmxlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIGhhbmRsZSBzZXJ2ZXIgbm90IGF2YWlsYWJsZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBhd2FpdCBjb25maWd1cmVBcHAoYCR7c2VydmVyVXJsfS9GYWtlSU9TQXBwLmFwcC56aXBgLCAnLmFwcCcpXG4gICAgICAgICAgICAuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKC9FQ09OTlJFRlVTRUQvKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGRlc2NyaWJlKCdzZXJ2ZXIgYXZhaWxhYmxlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyB1c2UgYSBsb2NhbCBzZXJ2ZXIgc28gdGhlcmUgaXMgbm8gZGVwZW5kZW5jeSBvbiB0aGUgaW50ZXJuZXRcbiAgICAgICAgbGV0IHNlcnZlcjtcbiAgICAgICAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBkaXIgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnLi4nLCAndGVzdCcsICdiYXNlZHJpdmVyJywgJ2ZpeHR1cmVzJyk7XG4gICAgICAgICAgY29uc3Qgc2VydmUgPSBzZXJ2ZVN0YXRpYyhkaXIsIHtcbiAgICAgICAgICAgIGluZGV4OiBmYWxzZSxcbiAgICAgICAgICAgIHNldEhlYWRlcnM6IChyZXMsIHBhdGgpID0+IHtcbiAgICAgICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsIGNvbnRlbnREaXNwb3NpdGlvbihwYXRoKSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgc2VydmVyID0gaHR0cC5jcmVhdGVTZXJ2ZXIoZnVuY3Rpb24gKHJlcSwgcmVzKSB7XG4gICAgICAgICAgICBpZiAocmVxLnVybC5pbmRleE9mKCdtaXNzaW5nJykgIT09IC0xKSB7XG4gICAgICAgICAgICAgIHJlcy53cml0ZUhlYWQoNDA0KTtcbiAgICAgICAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBmb3IgdGVzdGluZyB6aXAgZmlsZSBjb250ZW50IHR5cGVzXG4gICAgICAgICAgICBjb25zdCBjb250ZW50VHlwZSA9IG5ldyBVUkxTZWFyY2hQYXJhbXModXJsLnBhcnNlKHJlcS51cmwpLnNlYXJjaCkuZ2V0KCdjb250ZW50LXR5cGUnKTtcbiAgICAgICAgICAgIGlmIChjb250ZW50VHlwZSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdjb250ZW50LXR5cGUnLCBjb250ZW50VHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXJ2ZShyZXEsIHJlcywgZmluYWxoYW5kbGVyKHJlcSwgcmVzKSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgY29uc3QgY2xvc2UgPSBzZXJ2ZXIuY2xvc2UuYmluZChzZXJ2ZXIpO1xuICAgICAgICAgIHNlcnZlci5jbG9zZSA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vIHBhdXNlIGEgbW9tZW50IG9yIHdlIGdldCBFQ09OUkVTRVQgZXJyb3JzXG4gICAgICAgICAgICBhd2FpdCBCLmRlbGF5KDEwMDApO1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgc2VydmVyLm9uKCdjbG9zZScsIHJlc29sdmUpO1xuICAgICAgICAgICAgICBjbG9zZSgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikgcmVqZWN0KGVycik7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY3VybHlcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIHNlcnZlci5saXN0ZW4ocG9ydCk7XG4gICAgICAgIH0pO1xuICAgICAgICBhZnRlcihhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXdhaXQgc2VydmVyLmNsb3NlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgZG93bmxvYWQgemlwIGZpbGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbGV0IG5ld0FwcFBhdGggPSBhd2FpdCBjb25maWd1cmVBcHAoYCR7c2VydmVyVXJsfS9GYWtlSU9TQXBwLmFwcC56aXBgLCAnLmFwcCcpO1xuICAgICAgICAgIG5ld0FwcFBhdGguc2hvdWxkLmNvbnRhaW4oJ0Zha2VJT1NBcHAuYXBwJyk7XG4gICAgICAgICAgbGV0IGNvbnRlbnRzID0gYXdhaXQgZnMucmVhZEZpbGUobmV3QXBwUGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgICBjb250ZW50cy5zaG91bGQuZXFsKCd0aGlzIGlzIG5vdCByZWFsbHkgYW4gYXBwXFxuJyk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIGRvd25sb2FkIHppcCBmaWxlIHdpdGggcXVlcnkgc3RyaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxldCBuZXdBcHBQYXRoID0gYXdhaXQgY29uZmlndXJlQXBwKGAke3NlcnZlclVybH0vRmFrZUlPU0FwcC5hcHAuemlwP3N2PWFiYyZzcj1kZWZgLCAnLmFwcCcpO1xuICAgICAgICAgIG5ld0FwcFBhdGguc2hvdWxkLmNvbnRhaW4oJy5hcHAnKTtcbiAgICAgICAgICBsZXQgY29udGVudHMgPSBhd2FpdCBmcy5yZWFkRmlsZShuZXdBcHBQYXRoLCAndXRmOCcpO1xuICAgICAgICAgIGNvbnRlbnRzLnNob3VsZC5lcWwoJ3RoaXMgaXMgbm90IHJlYWxseSBhbiBhcHBcXG4nKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgZG93bmxvYWQgYW4gYXBwIGZpbGUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbGV0IG5ld0FwcFBhdGggPSBhd2FpdCBjb25maWd1cmVBcHAoYCR7c2VydmVyVXJsfS9GYWtlSU9TQXBwLmFwcGAsICcuYXBwJyk7XG4gICAgICAgICAgbmV3QXBwUGF0aC5zaG91bGQuY29udGFpbignLmFwcCcpO1xuICAgICAgICAgIGxldCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKG5ld0FwcFBhdGgsICd1dGY4Jyk7XG4gICAgICAgICAgY29udGVudHMuc2hvdWxkLmVxbCgndGhpcyBpcyBub3QgcmVhbGx5IGFuIGFwcFxcbicpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBhY2NlcHQgbXVsdGlwbGUgZXh0ZW5zaW9ucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsZXQgbmV3QXBwUGF0aCA9IGF3YWl0IGNvbmZpZ3VyZUFwcChgJHtzZXJ2ZXJVcmx9L0Zha2VJT1NBcHAuYXBwLnppcGAsIFsnLmFwcCcsICcuYWFiJ10pO1xuICAgICAgICAgIG5ld0FwcFBhdGguc2hvdWxkLmNvbnRhaW4oJ0Zha2VJT1NBcHAuYXBwJyk7XG4gICAgICAgICAgbGV0IGNvbnRlbnRzID0gYXdhaXQgZnMucmVhZEZpbGUobmV3QXBwUGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgICBjb250ZW50cy5zaG91bGQuZXFsKCd0aGlzIGlzIG5vdCByZWFsbHkgYW4gYXBwXFxuJyk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIGRvd25sb2FkIGFuIGFwayBmaWxlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxldCBuZXdBcHBQYXRoID0gYXdhaXQgY29uZmlndXJlQXBwKGAke3NlcnZlclVybH0vRmFrZUFuZHJvaWRBcHAuYXBrYCwgJy5hcGsnKTtcbiAgICAgICAgICBuZXdBcHBQYXRoLnNob3VsZC5jb250YWluKCcuYXBrJyk7XG4gICAgICAgICAgbGV0IGNvbnRlbnRzID0gYXdhaXQgZnMucmVhZEZpbGUobmV3QXBwUGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgICBjb250ZW50cy5zaG91bGQuZXFsKCd0aGlzIGlzIG5vdCByZWFsbHkgYW4gYXBrXFxuJyk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIGhhbmRsZSB6aXAgZmlsZSB0aGF0IGNhbm5vdCBiZSBkb3dubG9hZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGF3YWl0IGNvbmZpZ3VyZUFwcChgJHtzZXJ2ZXJVcmx9L21pc3NpbmcvRmFrZUlPU0FwcC5hcHAuemlwYCwgJy5hcHAnKVxuICAgICAgICAgICAgLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBoYW5kbGUgaW52YWxpZCBwcm90b2NvbCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBhd2FpdCBjb25maWd1cmVBcHAoJ2ZpbGU6Ly9DOi9taXNzaW5nL0Zha2VJT1NBcHAuYXBwLnppcCcsICcuYXBwJylcbiAgICAgICAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL2lzIG5vdCBzdXBwb3J0ZWQvKTtcbiAgICAgICAgICBhd2FpdCBjb25maWd1cmVBcHAoYGZ0cDovLyR7VEVTVF9IT1NUfToke3BvcnR9L21pc3NpbmcvRmFrZUlPU0FwcC5hcHAuemlwYCwgJy5hcHAnKVxuICAgICAgICAgICAgLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgvaXMgbm90IHN1cHBvcnRlZC8pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBoYW5kbGUgbWlzc2luZyBmaWxlIGluIFdpbmRvd3MgcGF0aCBmb3JtYXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXdhaXQgY29uZmlndXJlQXBwKCdDOlxcXFxtaXNzaW5nXFxcXEZha2VJT1NBcHAuYXBwLnppcCcsICcuYXBwJylcbiAgICAgICAgICAgIC5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoL2RvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhY2Nlc3NpYmxlLyk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJlY29nbml6ZSB6aXAgbWltZSB0eXBlcyBhbmQgdW56aXAgdGhlIGRvd25sb2FkZWQgZmlsZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsZXQgbmV3QXBwUGF0aCA9IGF3YWl0IGNvbmZpZ3VyZUFwcChgJHtzZXJ2ZXJVcmx9L0Zha2VBbmRyb2lkQXBwLmFzZD9jb250ZW50LXR5cGU9JHtlbmNvZGVVUklDb21wb25lbnQoJ2FwcGxpY2F0aW9uL3ppcCcpfWAsICcuYXBrJyk7XG4gICAgICAgICAgbmV3QXBwUGF0aC5zaG91bGQuY29udGFpbignRmFrZUFuZHJvaWRBcHAuYXBrJyk7XG4gICAgICAgICAgbmV3QXBwUGF0aC5zaG91bGQubm90LmNvbnRhaW4oJy5hc2QnKTtcbiAgICAgICAgICBsZXQgY29udGVudHMgPSBhd2FpdCBmcy5yZWFkRmlsZShuZXdBcHBQYXRoLCAndXRmOCcpO1xuICAgICAgICAgIGNvbnRlbnRzLnNob3VsZC5lcWwoJ3RoaXMgaXMgbm90IHJlYWxseSBhbiBhcGtcXG4nKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgcmVjb2duaXplIHppcCBtaW1lIHR5cGVzIHdpdGggcGFyYW1ldGVyIGFuZCB1bnppcCB0aGUgZG93bmxvYWRlZCBmaWxlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxldCBuZXdBcHBQYXRoID0gYXdhaXQgY29uZmlndXJlQXBwKGAke3NlcnZlclVybH0vRmFrZUFuZHJvaWRBcHAuYXNkP2NvbnRlbnQtdHlwZT0ke2VuY29kZVVSSUNvbXBvbmVudCgnYXBwbGljYXRpb24vemlwOyBwYXJhbWV0ZXI9dmFsdWUnKX1gLCAnLmFwaycpO1xuICAgICAgICAgIG5ld0FwcFBhdGguc2hvdWxkLmNvbnRhaW4oJ0Zha2VBbmRyb2lkQXBwLmFwaycpO1xuICAgICAgICAgIG5ld0FwcFBhdGguc2hvdWxkLm5vdC5jb250YWluKCcuYXNkJyk7XG4gICAgICAgICAgbGV0IGNvbnRlbnRzID0gYXdhaXQgZnMucmVhZEZpbGUobmV3QXBwUGF0aCwgJ3V0ZjgnKTtcbiAgICAgICAgICBjb250ZW50cy5zaG91bGQuZXFsKCd0aGlzIGlzIG5vdCByZWFsbHkgYW4gYXBrXFxuJyk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJlY29nbml6ZSB6aXAgbWltZSB0eXBlcyBhbmQgdW56aXAgdGhlIGRvd25sb2FkZWQgZmlsZSB3aXRoIHF1ZXJ5IHN0cmluZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsZXQgbmV3QXBwUGF0aCA9IGF3YWl0IGNvbmZpZ3VyZUFwcChgJHtzZXJ2ZXJVcmx9L0Zha2VBbmRyb2lkQXBwLmFzZD9jb250ZW50LXR5cGU9JHtlbmNvZGVVUklDb21wb25lbnQoJ2FwcGxpY2F0aW9uL3ppcCcpfSZzdj1hYmMmc3I9ZGVmYCwgJy5hcGsnKTtcbiAgICAgICAgICBuZXdBcHBQYXRoLnNob3VsZC5jb250YWluKCdGYWtlQW5kcm9pZEFwcC5hcGsnKTtcbiAgICAgICAgICBuZXdBcHBQYXRoLnNob3VsZC5ub3QuY29udGFpbignLmFzZCcpO1xuICAgICAgICAgIGxldCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKG5ld0FwcFBhdGgsICd1dGY4Jyk7XG4gICAgICAgICAgY29udGVudHMuc2hvdWxkLmVxbCgndGhpcyBpcyBub3QgcmVhbGx5IGFuIGFwa1xcbicpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCB0cmVhdCBhbiB1bmtub3duIG1pbWUgdHlwZSBhcyBhbiBhcHAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbGV0IG5ld0FwcFBhdGggPSBhd2FpdCBjb25maWd1cmVBcHAoYCR7c2VydmVyVXJsfS9GYWtlQW5kcm9pZEFwcC5hcGs/Y29udGVudC10eXBlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KCdhcHBsaWNhdGlvbi9iaXAnKX1gLCAnLmFwaycpO1xuICAgICAgICAgIG5ld0FwcFBhdGguc2hvdWxkLmNvbnRhaW4oJy5hcGsnKTtcbiAgICAgICAgICBsZXQgY29udGVudHMgPSBhd2FpdCBmcy5yZWFkRmlsZShuZXdBcHBQYXRoLCAndXRmOCcpO1xuICAgICAgICAgIGNvbnRlbnRzLnNob3VsZC5lcWwoJ3RoaXMgaXMgbm90IHJlYWxseSBhbiBhcGtcXG4nKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJmaWxlIjoidGVzdC9iYXNlZHJpdmVyL2hlbHBlcnMtZTJlLXNwZWNzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
require("source-map-support/register");
|
|
6
|
-
|
|
7
|
-
var _support = require("@appium/support");
|
|
8
|
-
|
|
9
|
-
var _helpers = require("../../lib/basedriver/helpers");
|
|
10
|
-
|
|
11
|
-
var _sinon = _interopRequireDefault(require("sinon"));
|
|
12
|
-
|
|
13
|
-
describe('helpers', function () {
|
|
14
|
-
describe('#isPackageOrBundle', function () {
|
|
15
|
-
it('should accept packages and bundles', function () {
|
|
16
|
-
(0, _helpers.isPackageOrBundle)('io.appium.testapp').should.be.true;
|
|
17
|
-
});
|
|
18
|
-
it('should not accept non-packages or non-bundles', function () {
|
|
19
|
-
(0, _helpers.isPackageOrBundle)('foo').should.be.false;
|
|
20
|
-
(0, _helpers.isPackageOrBundle)('/path/to/an.app').should.be.false;
|
|
21
|
-
(0, _helpers.isPackageOrBundle)('/path/to/an.apk').should.be.false;
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
describe('#duplicateKeys', function () {
|
|
25
|
-
it('should translate key in an object', function () {
|
|
26
|
-
(0, _helpers.duplicateKeys)({
|
|
27
|
-
'foo': 'hello world'
|
|
28
|
-
}, 'foo', 'bar').should.eql({
|
|
29
|
-
'foo': 'hello world',
|
|
30
|
-
'bar': 'hello world'
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
it('should translate key in an object within an object', function () {
|
|
34
|
-
(0, _helpers.duplicateKeys)({
|
|
35
|
-
'key': {
|
|
36
|
-
'foo': 'hello world'
|
|
37
|
-
}
|
|
38
|
-
}, 'foo', 'bar').should.eql({
|
|
39
|
-
'key': {
|
|
40
|
-
'foo': 'hello world',
|
|
41
|
-
'bar': 'hello world'
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
it('should translate key in an object with an array', function () {
|
|
46
|
-
(0, _helpers.duplicateKeys)([{
|
|
47
|
-
'key': {
|
|
48
|
-
'foo': 'hello world'
|
|
49
|
-
}
|
|
50
|
-
}, {
|
|
51
|
-
'foo': 'HELLO WORLD'
|
|
52
|
-
}], 'foo', 'bar').should.eql([{
|
|
53
|
-
'key': {
|
|
54
|
-
'foo': 'hello world',
|
|
55
|
-
'bar': 'hello world'
|
|
56
|
-
}
|
|
57
|
-
}, {
|
|
58
|
-
'foo': 'HELLO WORLD',
|
|
59
|
-
'bar': 'HELLO WORLD'
|
|
60
|
-
}]);
|
|
61
|
-
});
|
|
62
|
-
it('should duplicate both keys', function () {
|
|
63
|
-
(0, _helpers.duplicateKeys)({
|
|
64
|
-
'keyOne': {
|
|
65
|
-
'foo': 'hello world'
|
|
66
|
-
},
|
|
67
|
-
'keyTwo': {
|
|
68
|
-
'bar': 'HELLO WORLD'
|
|
69
|
-
}
|
|
70
|
-
}, 'foo', 'bar').should.eql({
|
|
71
|
-
'keyOne': {
|
|
72
|
-
'foo': 'hello world',
|
|
73
|
-
'bar': 'hello world'
|
|
74
|
-
},
|
|
75
|
-
'keyTwo': {
|
|
76
|
-
'bar': 'HELLO WORLD',
|
|
77
|
-
'foo': 'HELLO WORLD'
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
it('should not do anything to primitives', function () {
|
|
82
|
-
[0, 1, -1, true, false, null, undefined, '', 'Hello World'].forEach(item => {
|
|
83
|
-
should.equal((0, _helpers.duplicateKeys)(item), item);
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
it('should rename keys on big complex objects', function () {
|
|
87
|
-
const input = [{
|
|
88
|
-
'foo': 'bar'
|
|
89
|
-
}, {
|
|
90
|
-
hello: {
|
|
91
|
-
world: {
|
|
92
|
-
'foo': 'BAR'
|
|
93
|
-
}
|
|
94
|
-
},
|
|
95
|
-
foo: 'bahr'
|
|
96
|
-
}, 'foo', null, 0];
|
|
97
|
-
const expectedOutput = [{
|
|
98
|
-
'foo': 'bar',
|
|
99
|
-
'FOO': 'bar'
|
|
100
|
-
}, {
|
|
101
|
-
hello: {
|
|
102
|
-
world: {
|
|
103
|
-
'foo': 'BAR',
|
|
104
|
-
'FOO': 'BAR'
|
|
105
|
-
}
|
|
106
|
-
},
|
|
107
|
-
foo: 'bahr',
|
|
108
|
-
FOO: 'bahr'
|
|
109
|
-
}, 'foo', null, 0];
|
|
110
|
-
(0, _helpers.duplicateKeys)(input, 'foo', 'FOO').should.deep.equal(expectedOutput);
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
describe('#configureApp', function () {
|
|
114
|
-
let sandbox;
|
|
115
|
-
beforeEach(function () {
|
|
116
|
-
sandbox = _sinon.default.createSandbox();
|
|
117
|
-
sandbox.stub(_support.zip, 'extractAllTo').resolves();
|
|
118
|
-
sandbox.stub(_support.zip, 'assertValidZip').resolves();
|
|
119
|
-
sandbox.stub(_support.fs, 'mv').resolves();
|
|
120
|
-
sandbox.stub(_support.fs, 'stat').resolves({
|
|
121
|
-
isFile: () => true,
|
|
122
|
-
isDirectory: () => false
|
|
123
|
-
});
|
|
124
|
-
sandbox.stub(_support.fs, 'exists').resolves(true);
|
|
125
|
-
sandbox.stub(_support.fs, 'hash').resolves('0xDEADBEEF');
|
|
126
|
-
sandbox.stub(_support.fs, 'glob').resolves(['/path/to/an.apk']);
|
|
127
|
-
sandbox.stub(_support.fs, 'rimraf').resolves();
|
|
128
|
-
sandbox.stub(_support.tempDir, 'openDir').resolves('/some/dir');
|
|
129
|
-
});
|
|
130
|
-
afterEach(function () {
|
|
131
|
-
sandbox.restore();
|
|
132
|
-
});
|
|
133
|
-
it('should pass "useSystemUnzip" flag through to @appium/support', async function () {
|
|
134
|
-
await (0, _helpers.configureApp)('/path/to/an.apk.zip', '.apk');
|
|
135
|
-
_support.zip.extractAllTo.getCall(0).lastArg.useSystemUnzip.should.be.true;
|
|
136
|
-
});
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
describe('parseCapsArray', function () {
|
|
140
|
-
it('should parse string into array', function () {
|
|
141
|
-
(0, _helpers.parseCapsArray)('/tmp/my/app.zip').should.eql(['/tmp/my/app.zip']);
|
|
142
|
-
});
|
|
143
|
-
it('should parse array as string into array', function () {
|
|
144
|
-
(0, _helpers.parseCapsArray)('["/tmp/my/app.zip"]').should.eql(['/tmp/my/app.zip']);
|
|
145
|
-
(0, _helpers.parseCapsArray)('["/tmp/my/app.zip","/tmp/my/app2.zip"]').should.eql(['/tmp/my/app.zip', '/tmp/my/app2.zip']);
|
|
146
|
-
});
|
|
147
|
-
it('should return an array without change', function () {
|
|
148
|
-
(0, _helpers.parseCapsArray)(['a', 'b']).should.eql(['a', 'b']);
|
|
149
|
-
});
|
|
150
|
-
});require('source-map-support').install();
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9oZWxwZXJzLXNwZWNzLmpzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiaXQiLCJzaG91bGQiLCJiZSIsInRydWUiLCJmYWxzZSIsImVxbCIsInVuZGVmaW5lZCIsImZvckVhY2giLCJpdGVtIiwiZXF1YWwiLCJpbnB1dCIsImhlbGxvIiwid29ybGQiLCJmb28iLCJleHBlY3RlZE91dHB1dCIsIkZPTyIsImRlZXAiLCJzYW5kYm94IiwiYmVmb3JlRWFjaCIsInNpbm9uIiwiY3JlYXRlU2FuZGJveCIsInN0dWIiLCJ6aXAiLCJyZXNvbHZlcyIsImZzIiwiaXNGaWxlIiwiaXNEaXJlY3RvcnkiLCJ0ZW1wRGlyIiwiYWZ0ZXJFYWNoIiwicmVzdG9yZSIsImV4dHJhY3RBbGxUbyIsImdldENhbGwiLCJsYXN0QXJnIiwidXNlU3lzdGVtVW56aXAiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUdBQSxRQUFRLENBQUMsU0FBRCxFQUFZLFlBQVk7QUFDOUJBLEVBQUFBLFFBQVEsQ0FBQyxvQkFBRCxFQUF1QixZQUFZO0FBQ3pDQyxJQUFBQSxFQUFFLENBQUMsb0NBQUQsRUFBdUMsWUFBWTtBQUNuRCxzQ0FBa0IsbUJBQWxCLEVBQXVDQyxNQUF2QyxDQUE4Q0MsRUFBOUMsQ0FBaURDLElBQWpEO0FBQ0QsS0FGQyxDQUFGO0FBR0FILElBQUFBLEVBQUUsQ0FBQywrQ0FBRCxFQUFrRCxZQUFZO0FBQzlELHNDQUFrQixLQUFsQixFQUF5QkMsTUFBekIsQ0FBZ0NDLEVBQWhDLENBQW1DRSxLQUFuQztBQUNBLHNDQUFrQixpQkFBbEIsRUFBcUNILE1BQXJDLENBQTRDQyxFQUE1QyxDQUErQ0UsS0FBL0M7QUFDQSxzQ0FBa0IsaUJBQWxCLEVBQXFDSCxNQUFyQyxDQUE0Q0MsRUFBNUMsQ0FBK0NFLEtBQS9DO0FBQ0QsS0FKQyxDQUFGO0FBS0QsR0FUTyxDQUFSO0FBV0FMLEVBQUFBLFFBQVEsQ0FBQyxnQkFBRCxFQUFtQixZ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ZnMsIHRlbXBEaXIgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgY29uZmlndXJlQXBwLCBpc1BhY2thZ2VPckJ1bmRsZSwgZHVwbGljYXRlS2V5cywgcGFyc2VDYXBzQXJyYXkgfSBmcm9tICcuLi8uLi9saWIvYmFzZWRyaXZlci9oZWxwZXJzJztcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5cblxuZGVzY3JpYmUoJ2hlbHBlcnMnLCBmdW5jdGlvbiAoKSB7XG4gIGRlc2NyaWJlKCcjaXNQYWNrYWdlT3JCdW5kbGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBhY2NlcHQgcGFja2FnZXMgYW5kIGJ1bmRsZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpc1BhY2thZ2VPckJ1bmRsZSgnaW8uYXBwaXVtLnRlc3RhcHAnKS5zaG91bGQuYmUudHJ1ZTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIG5vdCBhY2NlcHQgbm9uLXBhY2thZ2VzIG9yIG5vbi1idW5kbGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXNQYWNrYWdlT3JCdW5kbGUoJ2ZvbycpLnNob3VsZC5iZS5mYWxzZTtcbiAgICAgIGlzUGFja2FnZU9yQnVuZGxlKCcvcGF0aC90by9hbi5hcHAnKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgICBpc1BhY2thZ2VPckJ1bmRsZSgnL3BhdGgvdG8vYW4uYXBrJykuc2hvdWxkLmJlLmZhbHNlO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnI2R1cGxpY2F0ZUtleXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCB0cmFuc2xhdGUga2V5IGluIGFuIG9iamVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGR1cGxpY2F0ZUtleXMoeydmb28nOiAnaGVsbG8gd29ybGQnfSwgJ2ZvbycsICdiYXInKS5zaG91bGQuZXFsKHsnZm9vJzogJ2hlbGxvIHdvcmxkJywgJ2Jhcic6ICdoZWxsbyB3b3JsZCd9KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHRyYW5zbGF0ZSBrZXkgaW4gYW4gb2JqZWN0IHdpdGhpbiBhbiBvYmplY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkdXBsaWNhdGVLZXlzKHsna2V5Jzogeydmb28nOiAnaGVsbG8gd29ybGQnfX0sICdmb28nLCAnYmFyJykuc2hvdWxkLmVxbCh7J2tleSc6IHsnZm9vJzogJ2hlbGxvIHdvcmxkJywgJ2Jhcic6ICdoZWxsbyB3b3JsZCd9fSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCB0cmFuc2xhdGUga2V5IGluIGFuIG9iamVjdCB3aXRoIGFuIGFycmF5JywgZnVuY3Rpb24gKCkge1xuICAgICAgZHVwbGljYXRlS2V5cyhbXG4gICAgICAgIHsna2V5Jzogeydmb28nOiAnaGVsbG8gd29ybGQnfX0sXG4gICAgICAgIHsnZm9vJzogJ0hFTExPIFdPUkxEJ31cbiAgICAgIF0sICdmb28nLCAnYmFyJykuc2hvdWxkLmVxbChbXG4gICAgICAgIHsna2V5Jzogeydmb28nOiAnaGVsbG8gd29ybGQnLCAnYmFyJzogJ2hlbGxvIHdvcmxkJ319LFxuICAgICAgICB7J2Zvbyc6ICdIRUxMTyBXT1JMRCcsICdiYXInOiAnSEVMTE8gV09STEQnfVxuICAgICAgXSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBkdXBsaWNhdGUgYm90aCBrZXlzJywgZnVuY3Rpb24gKCkge1xuICAgICAgZHVwbGljYXRlS2V5cyh7XG4gICAgICAgICdrZXlPbmUnOiB7XG4gICAgICAgICAgJ2Zvbyc6ICdoZWxsbyB3b3JsZCcsXG4gICAgICAgIH0sXG4gICAgICAgICdrZXlUd28nOiB7XG4gICAgICAgICAgJ2Jhcic6ICdIRUxMTyBXT1JMRCcsXG4gICAgICAgIH0sXG4gICAgICB9LCAnZm9vJywgJ2JhcicpLnNob3VsZC5lcWwoe1xuICAgICAgICAna2V5T25lJzoge1xuICAgICAgICAgICdmb28nOiAnaGVsbG8gd29ybGQnLFxuICAgICAgICAgICdiYXInOiAnaGVsbG8gd29ybGQnLFxuICAgICAgICB9LFxuICAgICAgICAna2V5VHdvJzoge1xuICAgICAgICAgICdiYXInOiAnSEVMTE8gV09STEQnLFxuICAgICAgICAgICdmb28nOiAnSEVMTE8gV09STEQnLFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIG5vdCBkbyBhbnl0aGluZyB0byBwcmltaXRpdmVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgWzAsIDEsIC0xLCB0cnVlLCBmYWxzZSwgbnVsbCwgdW5kZWZpbmVkLCAnJywgJ0hlbGxvIFdvcmxkJ10uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBzaG91bGQuZXF1YWwoZHVwbGljYXRlS2V5cyhpdGVtKSwgaXRlbSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHJlbmFtZSBrZXlzIG9uIGJpZyBjb21wbGV4IG9iamVjdHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpbnB1dCA9IFtcbiAgICAgICAgeydmb28nOiAnYmFyJ30sXG4gICAgICAgIHtcbiAgICAgICAgICBoZWxsbzoge1xuICAgICAgICAgICAgd29ybGQ6IHtcbiAgICAgICAgICAgICAgJ2Zvbyc6ICdCQVInLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZm9vOiAnYmFocidcbiAgICAgICAgfSxcbiAgICAgICAgJ2ZvbycsXG4gICAgICAgIG51bGwsXG4gICAgICAgIDBcbiAgICAgIF07XG4gICAgICBjb25zdCBleHBlY3RlZE91dHB1dCA9IFtcbiAgICAgICAgeydmb28nOiAnYmFyJywgJ0ZPTyc6ICdiYXInfSxcbiAgICAgICAge1xuICAgICAgICAgIGhlbGxvOiB7XG4gICAgICAgICAgICB3b3JsZDoge1xuICAgICAgICAgICAgICAnZm9vJzogJ0JBUicsXG4gICAgICAgICAgICAgICdGT08nOiAnQkFSJyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGZvbzogJ2JhaHInLFxuICAgICAgICAgIEZPTzogJ2JhaHInXG4gICAgICAgIH0sXG4gICAgICAgICdmb28nLFxuICAgICAgICBudWxsLFxuICAgICAgICAwXG4gICAgICBdO1xuICAgICAgZHVwbGljYXRlS2V5cyhpbnB1dCwgJ2ZvbycsICdGT08nKS5zaG91bGQuZGVlcC5lcXVhbChleHBlY3RlZE91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCcjY29uZmlndXJlQXBwJywgZnVuY3Rpb24gKCkge1xuICAgIGxldCBzYW5kYm94O1xuXG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBzYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgICAgc2FuZGJveC5zdHViKHppcCwgJ2V4dHJhY3RBbGxUbycpLnJlc29sdmVzKCk7XG4gICAgICBzYW5kYm94LnN0dWIoemlwLCAnYXNzZXJ0VmFsaWRaaXAnKS5yZXNvbHZlcygpO1xuICAgICAgc2FuZGJveC5zdHViKGZzLCAnbXYnKS5yZXNvbHZlcygpO1xuICAgICAgc2FuZGJveC5zdHViKGZzLCAnc3RhdCcpLnJlc29sdmVzKHtcbiAgICAgICAgaXNGaWxlOiAoKSA9PiB0cnVlLFxuICAgICAgICBpc0RpcmVjdG9yeTogKCkgPT4gZmFsc2UsXG4gICAgICB9KTtcbiAgICAgIHNhbmRib3guc3R1YihmcywgJ2V4aXN0cycpLnJlc29sdmVzKHRydWUpO1xuICAgICAgc2FuZGJveC5zdHViKGZzLCAnaGFzaCcpLnJlc29sdmVzKCcweERFQURCRUVGJyk7XG4gICAgICBzYW5kYm94LnN0dWIoZnMsICdnbG9iJykucmVzb2x2ZXMoWycvcGF0aC90by9hbi5hcGsnXSk7XG4gICAgICBzYW5kYm94LnN0dWIoZnMsICdyaW1yYWYnKS5yZXNvbHZlcygpO1xuICAgICAgc2FuZGJveC5zdHViKHRlbXBEaXIsICdvcGVuRGlyJykucmVzb2x2ZXMoJy9zb21lL2RpcicpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHNhbmRib3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXNzIFwidXNlU3lzdGVtVW56aXBcIiBmbGFnIHRocm91Z2ggdG8gQGFwcGl1bS9zdXBwb3J0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgY29uZmlndXJlQXBwKCcvcGF0aC90by9hbi5hcGsuemlwJywgJy5hcGsnKTtcbiAgICAgIHppcC5leHRyYWN0QWxsVG8uZ2V0Q2FsbCgwKS5sYXN0QXJnLnVzZVN5c3RlbVVuemlwLnNob3VsZC5iZS50cnVlO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgncGFyc2VDYXBzQXJyYXknLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdzaG91bGQgcGFyc2Ugc3RyaW5nIGludG8gYXJyYXknLCBmdW5jdGlvbiAoKSB7XG4gICAgcGFyc2VDYXBzQXJyYXkoJy90bXAvbXkvYXBwLnppcCcpLnNob3VsZC5lcWwoWycvdG1wL215L2FwcC56aXAnXSk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHBhcnNlIGFycmF5IGFzIHN0cmluZyBpbnRvIGFycmF5JywgZnVuY3Rpb24gKCkge1xuICAgIHBhcnNlQ2Fwc0FycmF5KCdbXCIvdG1wL215L2FwcC56aXBcIl0nKS5zaG91bGQuZXFsKFsnL3RtcC9teS9hcHAuemlwJ10pO1xuICAgIHBhcnNlQ2Fwc0FycmF5KCdbXCIvdG1wL215L2FwcC56aXBcIixcIi90bXAvbXkvYXBwMi56aXBcIl0nKS5zaG91bGQuZXFsKFtcbiAgICAgICcvdG1wL215L2FwcC56aXAnLFxuICAgICAgJy90bXAvbXkvYXBwMi56aXAnXG4gICAgXSk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHJldHVybiBhbiBhcnJheSB3aXRob3V0IGNoYW5nZScsIGZ1bmN0aW9uICgpIHtcbiAgICBwYXJzZUNhcHNBcnJheShbJ2EnLCAnYiddKS5zaG91bGQuZXFsKFsnYScsICdiJ10pO1xuICB9KTtcbn0pOyJdLCJmaWxlIjoidGVzdC9iYXNlZHJpdmVyL2hlbHBlcnMtc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
require("source-map-support/register");
|
|
6
|
-
|
|
7
|
-
var _lib = _interopRequireDefault(require("../../lib"));
|
|
8
|
-
|
|
9
|
-
var _sinon = require("sinon");
|
|
10
|
-
|
|
11
|
-
describe('timeout', function () {
|
|
12
|
-
let driver = new _lib.default();
|
|
13
|
-
let implicitWaitSpy;
|
|
14
|
-
let sandbox;
|
|
15
|
-
beforeEach(function () {
|
|
16
|
-
sandbox = (0, _sinon.createSandbox)();
|
|
17
|
-
driver.implicitWaitMs = 0;
|
|
18
|
-
implicitWaitSpy = sandbox.spy(driver, 'setImplicitWait');
|
|
19
|
-
});
|
|
20
|
-
afterEach(function () {
|
|
21
|
-
sandbox.restore();
|
|
22
|
-
});
|
|
23
|
-
describe('timeouts', function () {
|
|
24
|
-
describe('errors', function () {
|
|
25
|
-
it('should throw an error if something random is sent', async function () {
|
|
26
|
-
await driver.timeouts('random timeout', 'howdy').should.eventually.be.rejected;
|
|
27
|
-
});
|
|
28
|
-
it('should throw an error if timeout is negative', async function () {
|
|
29
|
-
await driver.timeouts('random timeout', -42).should.eventually.be.rejected;
|
|
30
|
-
});
|
|
31
|
-
it('should throw an errors if timeout type is unknown', async function () {
|
|
32
|
-
await driver.timeouts('random timeout', 42).should.eventually.be.rejected;
|
|
33
|
-
});
|
|
34
|
-
it('should throw an error if something random is sent to scriptDuration', async function () {
|
|
35
|
-
await driver.timeouts(undefined, undefined, 123, undefined, undefined).should.eventually.be.rejected;
|
|
36
|
-
});
|
|
37
|
-
it('should throw an error if something random is sent to pageLoadDuration', async function () {
|
|
38
|
-
await driver.timeouts(undefined, undefined, undefined, 123, undefined).should.eventually.be.rejected;
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
describe('implicit wait', function () {
|
|
42
|
-
it('should call setImplicitWait when given an integer', async function () {
|
|
43
|
-
await driver.timeouts('implicit', 42);
|
|
44
|
-
implicitWaitSpy.calledOnce.should.be.true;
|
|
45
|
-
implicitWaitSpy.firstCall.args[0].should.equal(42);
|
|
46
|
-
driver.implicitWaitMs.should.eql(42);
|
|
47
|
-
});
|
|
48
|
-
it('should call setImplicitWait when given a string', async function () {
|
|
49
|
-
await driver.timeouts('implicit', '42');
|
|
50
|
-
implicitWaitSpy.calledOnce.should.be.true;
|
|
51
|
-
implicitWaitSpy.firstCall.args[0].should.equal(42);
|
|
52
|
-
driver.implicitWaitMs.should.eql(42);
|
|
53
|
-
});
|
|
54
|
-
it('should call setImplicitWait when given an integer to implicitDuration', async function () {
|
|
55
|
-
await driver.timeouts(undefined, undefined, undefined, undefined, 42);
|
|
56
|
-
implicitWaitSpy.calledOnce.should.be.true;
|
|
57
|
-
implicitWaitSpy.firstCall.args[0].should.equal(42);
|
|
58
|
-
driver.implicitWaitMs.should.eql(42);
|
|
59
|
-
});
|
|
60
|
-
it('should call setImplicitWait when given a string to implicitDuration', async function () {
|
|
61
|
-
await driver.timeouts(undefined, undefined, undefined, undefined, '42');
|
|
62
|
-
implicitWaitSpy.calledOnce.should.be.true;
|
|
63
|
-
implicitWaitSpy.firstCall.args[0].should.equal(42);
|
|
64
|
-
driver.implicitWaitMs.should.eql(42);
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
});
|
|
68
|
-
describe('implicitWait', function () {
|
|
69
|
-
it('should call setImplicitWait when given an integer', async function () {
|
|
70
|
-
await driver.implicitWait(42);
|
|
71
|
-
implicitWaitSpy.calledOnce.should.be.true;
|
|
72
|
-
implicitWaitSpy.firstCall.args[0].should.equal(42);
|
|
73
|
-
driver.implicitWaitMs.should.eql(42);
|
|
74
|
-
});
|
|
75
|
-
it('should call setImplicitWait when given a string', async function () {
|
|
76
|
-
await driver.implicitWait('42');
|
|
77
|
-
implicitWaitSpy.calledOnce.should.be.true;
|
|
78
|
-
implicitWaitSpy.firstCall.args[0].should.equal(42);
|
|
79
|
-
driver.implicitWaitMs.should.eql(42);
|
|
80
|
-
});
|
|
81
|
-
it('should throw an error if something random is sent', async function () {
|
|
82
|
-
await driver.implicitWait('howdy').should.eventually.be.rejected;
|
|
83
|
-
});
|
|
84
|
-
it('should throw an error if timeout is negative', async function () {
|
|
85
|
-
await driver.implicitWait(-42).should.eventually.be.rejected;
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
describe('set implicit wait', function () {
|
|
89
|
-
it('should set the implicit wait with an integer', function () {
|
|
90
|
-
driver.setImplicitWait(42);
|
|
91
|
-
driver.implicitWaitMs.should.eql(42);
|
|
92
|
-
});
|
|
93
|
-
describe('with managed driver', function () {
|
|
94
|
-
let managedDriver1 = new _lib.default();
|
|
95
|
-
let managedDriver2 = new _lib.default();
|
|
96
|
-
before(function () {
|
|
97
|
-
driver.addManagedDriver(managedDriver1);
|
|
98
|
-
driver.addManagedDriver(managedDriver2);
|
|
99
|
-
});
|
|
100
|
-
after(function () {
|
|
101
|
-
driver.managedDrivers = [];
|
|
102
|
-
});
|
|
103
|
-
it('should set the implicit wait on managed drivers', function () {
|
|
104
|
-
driver.setImplicitWait(42);
|
|
105
|
-
driver.implicitWaitMs.should.eql(42);
|
|
106
|
-
managedDriver1.implicitWaitMs.should.eql(42);
|
|
107
|
-
managedDriver2.implicitWaitMs.should.eql(42);
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
});
|
|
111
|
-
describe('set new command timeout', function () {
|
|
112
|
-
it('should set the new command timeout with an integer', function () {
|
|
113
|
-
driver.setNewCommandTimeout(42);
|
|
114
|
-
driver.newCommandTimeoutMs.should.eql(42);
|
|
115
|
-
});
|
|
116
|
-
describe('with managed driver', function () {
|
|
117
|
-
let managedDriver1 = new _lib.default();
|
|
118
|
-
let managedDriver2 = new _lib.default();
|
|
119
|
-
before(function () {
|
|
120
|
-
driver.addManagedDriver(managedDriver1);
|
|
121
|
-
driver.addManagedDriver(managedDriver2);
|
|
122
|
-
});
|
|
123
|
-
after(function () {
|
|
124
|
-
driver.managedDrivers = [];
|
|
125
|
-
});
|
|
126
|
-
it('should set the new command timeout on managed drivers', function () {
|
|
127
|
-
driver.setNewCommandTimeout(42);
|
|
128
|
-
driver.newCommandTimeoutMs.should.eql(42);
|
|
129
|
-
managedDriver1.newCommandTimeoutMs.should.eql(42);
|
|
130
|
-
managedDriver2.newCommandTimeoutMs.should.eql(42);
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
});
|
|
134
|
-
});require('source-map-support').install();
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci90aW1lb3V0LXNwZWNzLmpzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiZHJpdmVyIiwiQmFzZURyaXZlciIsImltcGxpY2l0V2FpdFNweSIsInNhbmRib3giLCJiZWZvcmVFYWNoIiwiaW1wbGljaXRXYWl0TXMiLCJzcHkiLCJhZnRlckVhY2giLCJyZXN0b3JlIiwiaXQiLCJ0aW1lb3V0cyIsInNob3VsZCIsImV2ZW50dWFsbHkiLCJiZSIsInJlamVjdGVkIiwidW5kZWZpbmVkIiwiY2FsbGVkT25jZSIsInRydWUiLCJmaXJzdENhbGwiLCJhcmdzIiwiZXF1YWwiLCJlcWwiLCJpbXBsaWNpdFdhaXQiLCJzZXRJbXBsaWNpdFdhaXQiLCJtYW5hZ2VkRHJpdmVyMSIsIm1hbmFnZWREcml2ZXIyIiwiYmVmb3JlIiwiYWRkTWFuYWdlZERyaXZlciIsImFmdGVyIiwibWFuYWdlZERyaXZlcnMiLCJzZXROZXdDb21tYW5kVGltZW91dCIsIm5ld0NvbW1hbmRUaW1lb3V0TXMiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUVBQSxRQUFRLENBQUMsU0FBRCxFQUFZLFlBQVk7QUFDOUIsTUFBSUMsTUFBTSxHQUFHLElBQUlDLFlBQUosRUFBYjtBQUNBLE1BQUlDLGVBQUo7QUFDQSxNQUFJQyxPQUFKO0FBQ0FDLEVBQUFBLFVBQVUsQ0FBQyxZQUFZO0FBQ3JCRCxJQUFBQSxPQUFPLEdBQUcsMkJBQVY7QUFDQUgsSUFBQUEsTUFBTSxDQUFDSyxjQUFQLEdBQXdCLENBQXhCO0FBQ0FILElBQUFBLGVBQWUsR0FBR0MsT0FBTyxDQUFDRyxHQUFSLENBQVlOLE1BQVosRUFBb0IsaUJBQXBCLENBQWxCO0FBQ0QsR0FKUyxDQUFWO0FBS0FPLEVBQUFBLFNBQVMsQ0FBQyxZQUFZO0FBQ3BCSixJQUFBQSxPQUFPLENBQUNLLE9BQVI7QUFDRCxHQUZRLENBQVQ7QUFHQVQsRUFBQUEsUUFBUSxDQUFDLFVBQUQsRUFBYSxZQUFZO0FBQy9CQSxJ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UCxDQUEyQnBCLE1BQTNCLENBQWtDVSxHQUFsQyxDQUFzQyxFQUF0QztBQUNELEtBSEMsQ0FBRjtBQUlBdEIsSUFBQUEsUUFBUSxDQUFDLHFCQUFELEVBQXdCLFlBQVk7QUFDMUMsVUFBSXlCLGNBQWMsR0FBRyxJQUFJdkIsWUFBSixFQUFyQjtBQUNBLFVBQUl3QixjQUFjLEdBQUcsSUFBSXhCLFlBQUosRUFBckI7QUFDQXlCLE1BQUFBLE1BQU0sQ0FBQyxZQUFZO0FBQ2pCMUIsUUFBQUEsTUFBTSxDQUFDMkIsZ0JBQVAsQ0FBd0JILGNBQXhCO0FBQ0F4QixRQUFBQSxNQUFNLENBQUMyQixnQkFBUCxDQUF3QkYsY0FBeEI7QUFDRCxPQUhLLENBQU47QUFJQUcsTUFBQUEsS0FBSyxDQUFDLFlBQVk7QUFDaEI1QixRQUFBQSxNQUFNLENBQUM2QixjQUFQLEdBQXdCLEVBQXhCO0FBQ0QsT0FGSSxDQUFMO0FBR0FwQixNQUFBQSxFQUFFLENBQUMsdURBQUQsRUFBMEQsWUFBWTtBQUN0RVQsUUFBQUEsTUFBTSxDQUFDOEIsb0JBQVAsQ0FBNEIsRUFBNUI7QUFDQTlCLFFBQUFBLE1BQU0sQ0FBQytCLG1CQUFQLENBQTJCcEIsTUFBM0IsQ0FBa0NVLEdBQWxDLENBQXNDLEVBQXRDO0FBQ0FHLFFBQUFBLGNBQWMsQ0FBQ08sbUJBQWYsQ0FBbUNwQixNQUFuQyxDQUEwQ1UsR0FBMUMsQ0FBOEMsRUFBOUM7QUFDQUksUUFBQUEsY0FBYyxDQUFDTSxtQkFBZixDQUFtQ3BCLE1BQW5DLENBQTBDVSxHQUExQyxDQUE4QyxFQUE5QztBQUNELE9BTEMsQ0FBRjtBQU1ELEtBaEJPLENBQVI7QUFpQkQsR0F0Qk8sQ0FBUjtBQXVCRCxDQTVITyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VEcml2ZXIgZnJvbSAnLi4vLi4vbGliJztcbmltcG9ydCB7IGNyZWF0ZVNhbmRib3ggfSBmcm9tICdzaW5vbic7XG5cbmRlc2NyaWJlKCd0aW1lb3V0JywgZnVuY3Rpb24gKCkge1xuICBsZXQgZHJpdmVyID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgbGV0IGltcGxpY2l0V2FpdFNweTtcbiAgbGV0IHNhbmRib3g7XG4gIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgIHNhbmRib3ggPSBjcmVhdGVTYW5kYm94KCk7XG4gICAgZHJpdmVyLmltcGxpY2l0V2FpdE1zID0gMDtcbiAgICBpbXBsaWNpdFdhaXRTcHkgPSBzYW5kYm94LnNweShkcml2ZXIsICdzZXRJbXBsaWNpdFdhaXQnKTtcbiAgfSk7XG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgc2FuZGJveC5yZXN0b3JlKCk7XG4gIH0pO1xuICBkZXNjcmliZSgndGltZW91dHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgZGVzY3JpYmUoJ2Vycm9ycycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgaWYgc29tZXRoaW5nIHJhbmRvbSBpcyBzZW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkcml2ZXIudGltZW91dHMoJ3JhbmRvbSB0aW1lb3V0JywgJ2hvd2R5Jykuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWQ7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgaWYgdGltZW91dCBpcyBuZWdhdGl2ZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZHJpdmVyLnRpbWVvdXRzKCdyYW5kb20gdGltZW91dCcsIC00Mikuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWQ7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3JzIGlmIHRpbWVvdXQgdHlwZSBpcyB1bmtub3duJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkcml2ZXIudGltZW91dHMoJ3JhbmRvbSB0aW1lb3V0JywgNDIpLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIGlmIHNvbWV0aGluZyByYW5kb20gaXMgc2VudCB0byBzY3JpcHREdXJhdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZHJpdmVyLnRpbWVvdXRzKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAxMjMsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZDtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciBpZiBzb21ldGhpbmcgcmFuZG9tIGlzIHNlbnQgdG8gcGFnZUxvYWREdXJhdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZHJpdmVyLnRpbWVvdXRzKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIDEyMywgdW5kZWZpbmVkKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGRlc2NyaWJlKCdpbXBsaWNpdCB3YWl0JywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBjYWxsIHNldEltcGxpY2l0V2FpdCB3aGVuIGdpdmVuIGFuIGludGVnZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGRyaXZlci50aW1lb3V0cygnaW1wbGljaXQnLCA0Mik7XG4gICAgICAgIGltcGxpY2l0V2FpdFNweS5jYWxsZWRPbmNlLnNob3VsZC5iZS50cnVlO1xuICAgICAgICBpbXBsaWNpdFdhaXRTcHkuZmlyc3RDYWxsLmFyZ3NbMF0uc2hvdWxkLmVxdWFsKDQyKTtcbiAgICAgICAgZHJpdmVyLmltcGxpY2l0V2FpdE1zLnNob3VsZC5lcWwoNDIpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGNhbGwgc2V0SW1wbGljaXRXYWl0IHdoZW4gZ2l2ZW4gYSBzdHJpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGRyaXZlci50aW1lb3V0cygnaW1wbGljaXQnLCAnNDInKTtcbiAgICAgICAgaW1wbGljaXRXYWl0U3B5LmNhbGxlZE9uY2Uuc2hvdWxkLmJlLnRydWU7XG4gICAgICAgIGltcGxpY2l0V2FpdFNweS5maXJzdENhbGwuYXJnc1swXS5zaG91bGQuZXF1YWwoNDIpO1xuICAgICAgICBkcml2ZXIuaW1wbGljaXRXYWl0TXMuc2hvdWxkLmVxbCg0Mik7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgY2FsbCBzZXRJbXBsaWNpdFdhaXQgd2hlbiBnaXZlbiBhbiBpbnRlZ2VyIHRvIGltcGxpY2l0RHVyYXRpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGRyaXZlci50aW1lb3V0cyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIDQyKTtcbiAgICAgICAgaW1wbGljaXRXYWl0U3B5LmNhbGxlZE9uY2Uuc2hvdWxkLmJlLnRydWU7XG4gICAgICAgIGltcGxpY2l0V2FpdFNweS5maXJzdENhbGwuYXJnc1swXS5zaG91bGQuZXF1YWwoNDIpO1xuICAgICAgICBkcml2ZXIuaW1wbGljaXRXYWl0TXMuc2hvdWxkLmVxbCg0Mik7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgY2FsbCBzZXRJbXBsaWNpdFdhaXQgd2hlbiBnaXZlbiBhIHN0cmluZyB0byBpbXBsaWNpdER1cmF0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkcml2ZXIudGltZW91dHModW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAnNDInKTtcbiAgICAgICAgaW1wbGljaXRXYWl0U3B5LmNhbGxlZE9uY2Uuc2hvdWxkLmJlLnRydWU7XG4gICAgICAgIGltcGxpY2l0V2FpdFNweS5maXJzdENhbGwuYXJnc1swXS5zaG91bGQuZXF1YWwoNDIpO1xuICAgICAgICBkcml2ZXIuaW1wbGljaXRXYWl0TXMuc2hvdWxkLmVxbCg0Mik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG4gIGRlc2NyaWJlKCdpbXBsaWNpdFdhaXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBjYWxsIHNldEltcGxpY2l0V2FpdCB3aGVuIGdpdmVuIGFuIGludGVnZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkcml2ZXIuaW1wbGljaXRXYWl0KDQyKTtcbiAgICAgIGltcGxpY2l0V2FpdFNweS5jYWxsZWRPbmNlLnNob3VsZC5iZS50cnVlO1xuICAgICAgaW1wbGljaXRXYWl0U3B5LmZpcnN0Q2FsbC5hcmdzWzBdLnNob3VsZC5lcXVhbCg0Mik7XG4gICAgICBkcml2ZXIuaW1wbGljaXRXYWl0TXMuc2hvdWxkLmVxbCg0Mik7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBjYWxsIHNldEltcGxpY2l0V2FpdCB3aGVuIGdpdmVuIGEgc3RyaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZHJpdmVyLmltcGxpY2l0V2FpdCgnNDInKTtcbiAgICAgIGltcGxpY2l0V2FpdFNweS5jYWxsZWRPbmNlLnNob3VsZC5iZS50cnVlO1xuICAgICAgaW1wbGljaXRXYWl0U3B5LmZpcnN0Q2FsbC5hcmdzWzBdLnNob3VsZC5lcXVhbCg0Mik7XG4gICAgICBkcml2ZXIuaW1wbGljaXRXYWl0TXMuc2hvdWxkLmVxbCg0Mik7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciBpZiBzb21ldGhpbmcgcmFuZG9tIGlzIHNlbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkcml2ZXIuaW1wbGljaXRXYWl0KCdob3dkeScpLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgaWYgdGltZW91dCBpcyBuZWdhdGl2ZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGRyaXZlci5pbXBsaWNpdFdhaXQoLTQyKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZDtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NldCBpbXBsaWNpdCB3YWl0JywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgc2V0IHRoZSBpbXBsaWNpdCB3YWl0IHdpdGggYW4gaW50ZWdlcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGRyaXZlci5zZXRJbXBsaWNpdFdhaXQoNDIpO1xuICAgICAgZHJpdmVyLmltcGxpY2l0V2FpdE1zLnNob3VsZC5lcWwoNDIpO1xuICAgIH0pO1xuICAgIGRlc2NyaWJlKCd3aXRoIG1hbmFnZWQgZHJpdmVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IG1hbmFnZWREcml2ZXIxID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICAgIGxldCBtYW5hZ2VkRHJpdmVyMiA9IG5ldyBCYXNlRHJpdmVyKCk7XG4gICAgICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgICAgICBkcml2ZXIuYWRkTWFuYWdlZERyaXZlcihtYW5hZ2VkRHJpdmVyMSk7XG4gICAgICAgIGRyaXZlci5hZGRNYW5hZ2VkRHJpdmVyKG1hbmFnZWREcml2ZXIyKTtcbiAgICAgIH0pO1xuICAgICAgYWZ0ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICBkcml2ZXIubWFuYWdlZERyaXZlcnMgPSBbXTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBzZXQgdGhlIGltcGxpY2l0IHdhaXQgb24gbWFuYWdlZCBkcml2ZXJzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBkcml2ZXIuc2V0SW1wbGljaXRXYWl0KDQyKTtcbiAgICAgICAgZHJpdmVyLmltcGxpY2l0V2FpdE1zLnNob3VsZC5lcWwoNDIpO1xuICAgICAgICBtYW5hZ2VkRHJpdmVyMS5pbXBsaWNpdFdhaXRNcy5zaG91bGQuZXFsKDQyKTtcbiAgICAgICAgbWFuYWdlZERyaXZlcjIuaW1wbGljaXRXYWl0TXMuc2hvdWxkLmVxbCg0Mik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG4gIGRlc2NyaWJlKCdzZXQgbmV3IGNvbW1hbmQgdGltZW91dCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHNldCB0aGUgbmV3IGNvbW1hbmQgdGltZW91dCB3aXRoIGFuIGludGVnZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkcml2ZXIuc2V0TmV3Q29tbWFuZFRpbWVvdXQoNDIpO1xuICAgICAgZHJpdmVyLm5ld0NvbW1hbmRUaW1lb3V0TXMuc2hvdWxkLmVxbCg0Mik7XG4gICAgfSk7XG4gICAgZGVzY3JpYmUoJ3dpdGggbWFuYWdlZCBkcml2ZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgbWFuYWdlZERyaXZlcjEgPSBuZXcgQmFzZURyaXZlcigpO1xuICAgICAgbGV0IG1hbmFnZWREcml2ZXIyID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICAgIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGRyaXZlci5hZGRNYW5hZ2VkRHJpdmVyKG1hbmFnZWREcml2ZXIxKTtcbiAgICAgICAgZHJpdmVyLmFkZE1hbmFnZWREcml2ZXIobWFuYWdlZERyaXZlcjIpO1xuICAgICAgfSk7XG4gICAgICBhZnRlcihmdW5jdGlvbiAoKSB7XG4gICAgICAgIGRyaXZlci5tYW5hZ2VkRHJpdmVycyA9IFtdO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHNldCB0aGUgbmV3IGNvbW1hbmQgdGltZW91dCBvbiBtYW5hZ2VkIGRyaXZlcnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGRyaXZlci5zZXROZXdDb21tYW5kVGltZW91dCg0Mik7XG4gICAgICAgIGRyaXZlci5uZXdDb21tYW5kVGltZW91dE1zLnNob3VsZC5lcWwoNDIpO1xuICAgICAgICBtYW5hZ2VkRHJpdmVyMS5uZXdDb21tYW5kVGltZW91dE1zLnNob3VsZC5lcWwoNDIpO1xuICAgICAgICBtYW5hZ2VkRHJpdmVyMi5uZXdDb21tYW5kVGltZW91dE1zLnNob3VsZC5lcWwoNDIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwiZmlsZSI6InRlc3QvYmFzZWRyaXZlci90aW1lb3V0LXNwZWNzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|