UNPKG

3.73 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.mockService = exports.mockMethod = undefined;
7
8var _regenerator = require('babel-runtime/regenerator');
9
10var _regenerator2 = _interopRequireDefault(_regenerator);
11
12var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
13
14var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
15
16var _fromPairs = require('lodash/fromPairs');
17
18var _fromPairs2 = _interopRequireDefault(_fromPairs);
19
20var _last = require('lodash/last');
21
22var _last2 = _interopRequireDefault(_last);
23
24var _awsSdk = require('aws-sdk');
25
26var _awsSdk2 = _interopRequireDefault(_awsSdk);
27
28var _sinon = require('sinon');
29
30var _sinon2 = _interopRequireDefault(_sinon);
31
32function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
34var defaultApiVersion = function defaultApiVersion(service) {
35 return (0, _last2.default)(service.apiVersions);
36}; // default to latest version
37
38var loadApi = function loadApi(service, version) {
39 return new _awsSdk2.default.Model.Api(_awsSdk2.default.apiLoader.services[service.serviceIdentifier][version]);
40};
41
42var 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)( /*#__PURE__*/_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
98var 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