1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.mockService = exports.mockMethod = undefined;
|
7 |
|
8 | var _regenerator = require('babel-runtime/regenerator');
|
9 |
|
10 | var _regenerator2 = _interopRequireDefault(_regenerator);
|
11 |
|
12 | var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
|
13 |
|
14 | var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
|
15 |
|
16 | var _fromPairs = require('lodash/fromPairs');
|
17 |
|
18 | var _fromPairs2 = _interopRequireDefault(_fromPairs);
|
19 |
|
20 | var _last = require('lodash/last');
|
21 |
|
22 | var _last2 = _interopRequireDefault(_last);
|
23 |
|
24 | var _awsSdk = require('aws-sdk');
|
25 |
|
26 | var _awsSdk2 = _interopRequireDefault(_awsSdk);
|
27 |
|
28 | var _sinon = require('sinon');
|
29 |
|
30 | var _sinon2 = _interopRequireDefault(_sinon);
|
31 |
|
32 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
33 |
|
34 | var defaultApiVersion = function defaultApiVersion(service) {
|
35 | return (0, _last2.default)(service.apiVersions);
|
36 | };
|
37 |
|
38 | var loadApi = function loadApi(service, version) {
|
39 | return new _awsSdk2.default.Model.Api(_awsSdk2.default.apiLoader.services[service.serviceIdentifier][version]);
|
40 | };
|
41 |
|
42 | var mockMethod = exports.mockMethod = function mockMethod(awsService, method) {
|
43 | var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
44 | _ref$apiVersion = _ref.apiVersion,
|
45 | apiVersion = _ref$apiVersion === undefined ? defaultApiVersion(awsService) : _ref$apiVersion,
|
46 | _ref$api = _ref.api,
|
47 | api = _ref$api === undefined ? loadApi(awsService, apiVersion) : _ref$api;
|
48 |
|
49 | var requestStub = _sinon2.default.stub();
|
50 | var func = _sinon2.default.spy(function (params) {
|
51 | for (var _len = arguments.length, otherArgs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
52 | otherArgs[_key - 1] = arguments[_key];
|
53 | }
|
54 |
|
55 | var apiOperation = api.operations && api.operations[method];
|
56 | if (apiOperation) {
|
57 | new _awsSdk2.default.ParamValidator(true).validate(apiOperation.input, params);
|
58 | }
|
59 | var requestResultPromisify = function () {
|
60 | var _ref2 = (0, _asyncToGenerator3.default)( _regenerator2.default.mark(function _callee() {
|
61 | return _regenerator2.default.wrap(function _callee$(_context) {
|
62 | while (1) {
|
63 | switch (_context.prev = _context.next) {
|
64 | case 0:
|
65 | return _context.abrupt('return', requestStub.apply(undefined, [params].concat(otherArgs)));
|
66 |
|
67 | case 1:
|
68 | case 'end':
|
69 | return _context.stop();
|
70 | }
|
71 | }
|
72 | }, _callee, undefined);
|
73 | }));
|
74 |
|
75 | return function requestResultPromisify() {
|
76 | return _ref2.apply(this, arguments);
|
77 | };
|
78 | }();
|
79 | var resultPromise = requestResultPromisify();
|
80 | var callback = typeof (0, _last2.default)(otherArgs) === 'function' ? (0, _last2.default)(otherArgs) : null;
|
81 | if (callback) {
|
82 | resultPromise.then(function (result) {
|
83 | return callback(null, result);
|
84 | }, function (error) {
|
85 | return callback(error);
|
86 | });
|
87 | }
|
88 | return {
|
89 | promise: function promise() {
|
90 | return resultPromise;
|
91 | }
|
92 | };
|
93 | });
|
94 | func.request = requestStub;
|
95 | return func;
|
96 | };
|
97 |
|
98 | var mockService = exports.mockService = function mockService(awsService, methods) {
|
99 | var _ref3 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
|
100 | _ref3$apiVersion = _ref3.apiVersion,
|
101 | apiVersion = _ref3$apiVersion === undefined ? defaultApiVersion(awsService) : _ref3$apiVersion;
|
102 |
|
103 | return (0, _fromPairs2.default)(methods.map(function (method) {
|
104 | return [method, mockMethod(awsService, method, { apiVersion: apiVersion, api: loadApi(awsService, apiVersion) })];
|
105 | }));
|
106 | }; |
\ | No newline at end of file |