appium-ios-simulator
Version:
iOS Simulator interface for Appium.
206 lines (165 loc) • 12.4 kB
JavaScript
;
var _createClass = require('babel-runtime/helpers/create-class')['default'];
var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];
var _regeneratorRuntime = require('babel-runtime/regenerator')['default'];
var _interopRequireDefault = require('babel-runtime/helpers/interop-require-default')['default'];
Object.defineProperty(exports, '__esModule', {
value: true
});
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _appiumSupport = require('appium-support');
var _utils = require('./utils');
var Calendar = (function () {
function Calendar(sharedResourcesDir) {
_classCallCheck(this, Calendar);
this.sharedResourcesDir = sharedResourcesDir;
}
_createClass(Calendar, [{
key: 'getDB',
value: function getDB() {
var tccPath;
return _regeneratorRuntime.async(function getDB$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
if (!this.db) {
context$2$0.next = 2;
break;
}
return context$2$0.abrupt('return', this.db);
case 2:
tccPath = _path2['default'].resolve(this.sharedResourcesDir, 'Library', 'TCC');
context$2$0.next = 5;
return _regeneratorRuntime.awrap(_appiumSupport.fs.exists(tccPath));
case 5:
if (context$2$0.sent) {
context$2$0.next = 8;
break;
}
context$2$0.next = 8;
return _regeneratorRuntime.awrap((0, _appiumSupport.mkdirp)(tccPath));
case 8:
this.db = _path2['default'].resolve(tccPath, 'TCC.db');
context$2$0.next = 11;
return _regeneratorRuntime.awrap((0, _utils.execSQLiteQuery)(this.db, 'CREATE TABLE IF NOT EXISTS access (\n service TEXT NOT NULL DEFAULT \'\',\n client TEXT NOT NULL DEFAULT \'\',\n client_type INTEGER,\n allowed INTEGER,\n prompt_count INTEGER,\n csreq BLOB NOT NULL DEFAULT \'\',\n policy_ID INTEGER,\n PRIMARY KEY(service, client, client_type)\n );'.replace(/\n/g, '')));
case 11:
return context$2$0.abrupt('return', this.db);
case 12:
case 'end':
return context$2$0.stop();
}
}, null, this);
}
}, {
key: 'getCalendarRowCount',
value: function getCalendarRowCount(bundleID) {
var db, count;
return _regeneratorRuntime.async(function getCalendarRowCount$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
context$2$0.next = 2;
return _regeneratorRuntime.awrap(this.getDB());
case 2:
db = context$2$0.sent;
context$2$0.next = 5;
return _regeneratorRuntime.awrap((0, _utils.execSQLiteQuery)(db, 'SELECT count(*) FROM access WHERE client=\'?\' AND service=\'kTCCServiceCalendar\';', bundleID));
case 5:
count = context$2$0.sent;
return context$2$0.abrupt('return', parseInt(count.stdout.split('=')[1], 10));
case 7:
case 'end':
return context$2$0.stop();
}
}, null, this);
}
}, {
key: 'hasCalendarAccess',
value: function hasCalendarAccess(bundleID) {
var count;
return _regeneratorRuntime.async(function hasCalendarAccess$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
context$2$0.t0 = _regeneratorRuntime;
context$2$0.next = 3;
return _regeneratorRuntime.awrap(this.getDB());
case 3:
context$2$0.t1 = context$2$0.sent;
context$2$0.t2 = bundleID;
context$2$0.t3 = (0, _utils.execSQLiteQuery)(context$2$0.t1, 'SELECT count(*) FROM access WHERE client=\'?\' AND allowed=1 AND service=\'kTCCServiceCalendar\';', context$2$0.t2);
context$2$0.next = 8;
return context$2$0.t0.awrap.call(context$2$0.t0, context$2$0.t3);
case 8:
count = context$2$0.sent;
return context$2$0.abrupt('return', parseInt(count.stdout.split('=')[1], 10) > 0);
case 10:
case 'end':
return context$2$0.stop();
}
}, null, this);
}
}, {
key: 'enableCalendarAccess',
value: function enableCalendarAccess(bundleID) {
var db;
return _regeneratorRuntime.async(function enableCalendarAccess$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
context$2$0.next = 2;
return _regeneratorRuntime.awrap(this.getDB());
case 2:
db = context$2$0.sent;
context$2$0.next = 5;
return _regeneratorRuntime.awrap(this.getCalendarRowCount(bundleID));
case 5:
context$2$0.t0 = context$2$0.sent;
if (!(context$2$0.t0 > 0)) {
context$2$0.next = 11;
break;
}
context$2$0.next = 9;
return _regeneratorRuntime.awrap((0, _utils.execSQLiteQuery)(db, 'UPDATE \'access\' SET\n service=\'kTCCServiceCalendar\',\n client_type=0,\n allowed=1,\n prompt_count=1,\n csreq=0\n WHERE client=\'?\' AND service=\'kTCCServiceCalendar\''.replace(/\n/g, ' '), bundleID));
case 9:
context$2$0.next = 13;
break;
case 11:
context$2$0.next = 13;
return _regeneratorRuntime.awrap((0, _utils.execSQLiteQuery)(db, 'INSERT INTO \'access\' VALUES (\'kTCCServiceCalendar\', \'?\', 0, 1, 1, 0, 0);', bundleID));
case 13:
case 'end':
return context$2$0.stop();
}
}, null, this);
}
}, {
key: 'disableCalendarAccess',
value: function disableCalendarAccess(bundleID) {
var db;
return _regeneratorRuntime.async(function disableCalendarAccess$(context$2$0) {
while (1) switch (context$2$0.prev = context$2$0.next) {
case 0:
context$2$0.next = 2;
return _regeneratorRuntime.awrap(this.getDB());
case 2:
db = context$2$0.sent;
context$2$0.next = 5;
return _regeneratorRuntime.awrap(this.getCalendarRowCount(bundleID));
case 5:
context$2$0.t0 = context$2$0.sent;
if (!(context$2$0.t0 > 0)) {
context$2$0.next = 9;
break;
}
context$2$0.next = 9;
return _regeneratorRuntime.awrap((0, _utils.execSQLiteQuery)(db, 'DELETE FROM \'access\' WHERE client=\'?\' AND service=\'kTCCServiceCalendar\''.replace(/\n/g, ' '), bundleID));
case 9:
case 'end':
return context$2$0.stop();
}
}, null, this);
}
}]);
return Calendar;
})();
exports['default'] = Calendar;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jYWxlbmRhci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztvQkFBaUIsTUFBTTs7Ozs2QkFDSSxnQkFBZ0I7O3FCQUNYLFNBQVM7O0lBRXBCLFFBQVE7QUFFZixXQUZPLFFBQVEsQ0FFZCxrQkFBa0IsRUFBRTswQkFGZCxRQUFROztBQUd6QixRQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7R0FDOUM7O2VBSmtCLFFBQVE7O1dBTWY7VUFLTixPQUFPOzs7O2lCQUpQLElBQUksQ0FBQyxFQUFFOzs7OztnREFDRixJQUFJLENBQUMsRUFBRTs7O0FBR1osbUJBQU8sR0FBRyxrQkFBSyxPQUFPLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUM7OzZDQUN6RCxrQkFBRyxNQUFNLENBQUMsT0FBTyxDQUFDOzs7Ozs7Ozs7NkNBQ3RCLDJCQUFPLE9BQU8sQ0FBQzs7OztBQUd2QixnQkFBSSxDQUFDLEVBQUUsR0FBRyxrQkFBSyxPQUFPLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDOzs2Q0FDcEMsNEJBQWdCLElBQUksQ0FBQyxFQUFFLEVBQUUsd1VBUzNCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7OztnREFFaEIsSUFBSSxDQUFDLEVBQUU7Ozs7Ozs7S0FDZjs7O1dBRXlCLDZCQUFDLFFBQVE7VUFDN0IsRUFBRSxFQUNGLEtBQUs7Ozs7OzZDQURNLElBQUksQ0FBQyxLQUFLLEVBQUU7OztBQUF2QixjQUFFOzs2Q0FDWSw0QkFBZ0IsRUFBRSx5RkFBcUYsUUFBUSxDQUFDOzs7QUFBOUgsaUJBQUs7Z0RBQ0YsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQzs7Ozs7OztLQUNoRDs7O1dBRXVCLDJCQUFDLFFBQVE7VUFDM0IsS0FBSzs7Ozs7OzZDQUErQixJQUFJLENBQUMsS0FBSyxFQUFFOzs7OzZCQUFtRyxRQUFROzs7Ozs7QUFBM0osaUJBQUs7Z0RBQ0YsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUM7Ozs7Ozs7S0FDcEQ7OztXQUUwQiw4QkFBQyxRQUFRO1VBQzlCLEVBQUU7Ozs7OzZDQUFTLElBQUksQ0FBQyxLQUFLLEVBQUU7OztBQUF2QixjQUFFOzs2Q0FFSyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDOzs7OzttQ0FBSSxDQUFDOzs7Ozs7NkNBQzFDLDRCQUFnQixFQUFFLEVBQUUsc05BTTBCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsUUFBUSxDQUFDOzs7Ozs7Ozs2Q0FFNUUsNEJBQWdCLEVBQUUsb0ZBQThFLFFBQVEsQ0FBQzs7Ozs7OztLQUVsSDs7O1dBRTJCLCtCQUFDLFFBQVE7VUFDL0IsRUFBRTs7Ozs7NkNBQVMsSUFBSSxDQUFDLEtBQUssRUFBRTs7O0FBQXZCLGNBQUU7OzZDQUVLLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUM7Ozs7O21DQUFJLENBQUM7Ozs7Ozs2Q0FDMUMsNEJBQWdCLEVBQUUsRUFBRSxnRkFBMEUsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxRQUFRLENBQUM7Ozs7Ozs7S0FFckk7OztTQWhFa0IsUUFBUTs7O3FCQUFSLFFBQVEiLCJmaWxlIjoibGliL2NhbGVuZGFyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBmcywgbWtkaXJwIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IHsgZXhlY1NRTGl0ZVF1ZXJ5IH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENhbGVuZGFyIHtcblxuICBjb25zdHJ1Y3RvciAoc2hhcmVkUmVzb3VyY2VzRGlyKSB7XG4gICAgdGhpcy5zaGFyZWRSZXNvdXJjZXNEaXIgPSBzaGFyZWRSZXNvdXJjZXNEaXI7XG4gIH1cblxuICBhc3luYyBnZXREQiAoKSB7XG4gICAgaWYgKHRoaXMuZGIpIHtcbiAgICAgIHJldHVybiB0aGlzLmRiO1xuICAgIH1cblxuICAgIGxldCB0Y2NQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMuc2hhcmVkUmVzb3VyY2VzRGlyLCAnTGlicmFyeScsICdUQ0MnKTtcbiAgICBpZiAoIShhd2FpdCBmcy5leGlzdHModGNjUGF0aCkpKSB7XG4gICAgICBhd2FpdCBta2RpcnAodGNjUGF0aCk7XG4gICAgfVxuXG4gICAgdGhpcy5kYiA9IHBhdGgucmVzb2x2ZSh0Y2NQYXRoLCAnVENDLmRiJyk7XG4gICAgYXdhaXQgZXhlY1NRTGl0ZVF1ZXJ5KHRoaXMuZGIsIGBDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBhY2Nlc3MgKFxuICAgICAgc2VydmljZSBURVhUIE5PVCBOVUxMIERFRkFVTFQgJycsXG4gICAgICBjbGllbnQgVEVYVCBOT1QgTlVMTCBERUZBVUxUICcnLFxuICAgICAgY2xpZW50X3R5cGUgSU5URUdFUixcbiAgICAgIGFsbG93ZWQgSU5URUdFUixcbiAgICAgIHByb21wdF9jb3VudCBJTlRFR0VSLFxuICAgICAgY3NyZXEgQkxPQiBOT1QgTlVMTCBERUZBVUxUICcnLFxuICAgICAgcG9saWN5X0lEIElOVEVHRVIsXG4gICAgICBQUklNQVJZIEtFWShzZXJ2aWNlLCBjbGllbnQsIGNsaWVudF90eXBlKVxuICAgICk7YC5yZXBsYWNlKC9cXG4vZywgJycpKTtcblxuICAgIHJldHVybiB0aGlzLmRiO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q2FsZW5kYXJSb3dDb3VudCAoYnVuZGxlSUQpIHtcbiAgICBsZXQgZGIgPSBhd2FpdCB0aGlzLmdldERCKCk7XG4gICAgbGV0IGNvdW50ID0gYXdhaXQgZXhlY1NRTGl0ZVF1ZXJ5KGRiLCBgU0VMRUNUIGNvdW50KCopIEZST00gYWNjZXNzIFdIRVJFIGNsaWVudD0nPycgQU5EIHNlcnZpY2U9J2tUQ0NTZXJ2aWNlQ2FsZW5kYXInO2AsIGJ1bmRsZUlEKTtcbiAgICByZXR1cm4gcGFyc2VJbnQoY291bnQuc3Rkb3V0LnNwbGl0KCc9JylbMV0sIDEwKTtcbiAgfVxuXG4gIGFzeW5jIGhhc0NhbGVuZGFyQWNjZXNzIChidW5kbGVJRCkge1xuICAgIGxldCBjb3VudCA9IGF3YWl0IGV4ZWNTUUxpdGVRdWVyeShhd2FpdCB0aGlzLmdldERCKCksIGBTRUxFQ1QgY291bnQoKikgRlJPTSBhY2Nlc3MgV0hFUkUgY2xpZW50PSc/JyBBTkQgYWxsb3dlZD0xIEFORCBzZXJ2aWNlPSdrVENDU2VydmljZUNhbGVuZGFyJztgLCBidW5kbGVJRCk7XG4gICAgcmV0dXJuIHBhcnNlSW50KGNvdW50LnN0ZG91dC5zcGxpdCgnPScpWzFdLCAxMCkgPiAwO1xuICB9XG5cbiAgYXN5bmMgZW5hYmxlQ2FsZW5kYXJBY2Nlc3MgKGJ1bmRsZUlEKSB7XG4gICAgbGV0IGRiID0gYXdhaXQgdGhpcy5nZXREQigpO1xuXG4gICAgaWYgKChhd2FpdCB0aGlzLmdldENhbGVuZGFyUm93Q291bnQoYnVuZGxlSUQpKSA+IDApIHtcbiAgICAgIGF3YWl0IGV4ZWNTUUxpdGVRdWVyeShkYiwgYFVQREFURSAnYWNjZXNzJyBTRVRcbiAgICAgICAgc2VydmljZT0na1RDQ1NlcnZpY2VDYWxlbmRhcicsXG4gICAgICAgIGNsaWVudF90eXBlPTAsXG4gICAgICAgIGFsbG93ZWQ9MSxcbiAgICAgICAgcHJvbXB0X2NvdW50PTEsXG4gICAgICAgIGNzcmVxPTBcbiAgICAgIFdIRVJFIGNsaWVudD0nPycgQU5EIHNlcnZpY2U9J2tUQ0NTZXJ2aWNlQ2FsZW5kYXInYC5yZXBsYWNlKC9cXG4vZywgJyAnKSwgYnVuZGxlSUQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBleGVjU1FMaXRlUXVlcnkoZGIsIGBJTlNFUlQgSU5UTyAnYWNjZXNzJyBWQUxVRVMgKCdrVENDU2VydmljZUNhbGVuZGFyJywgJz8nLCAwLCAxLCAxLCAwLCAwKTtgLCBidW5kbGVJRCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZGlzYWJsZUNhbGVuZGFyQWNjZXNzIChidW5kbGVJRCkge1xuICAgIGxldCBkYiA9IGF3YWl0IHRoaXMuZ2V0REIoKTtcblxuICAgIGlmICgoYXdhaXQgdGhpcy5nZXRDYWxlbmRhclJvd0NvdW50KGJ1bmRsZUlEKSkgPiAwKSB7XG4gICAgICBhd2FpdCBleGVjU1FMaXRlUXVlcnkoZGIsIGBERUxFVEUgRlJPTSAnYWNjZXNzJyBXSEVSRSBjbGllbnQ9Jz8nIEFORCBzZXJ2aWNlPSdrVENDU2VydmljZUNhbGVuZGFyJ2AucmVwbGFjZSgvXFxuL2csICcgJyksIGJ1bmRsZUlEKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==