UNPKG

appium-ios-simulator

Version:
206 lines (165 loc) 12.4 kB
'use strict'; 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==