From c471ada6dc23ee5f9e5859b4ec6e4925f9d0ebf0 Mon Sep 17 00:00:00 2001 From: oetrog Date: Mon, 21 Mar 2016 14:32:59 +0200 Subject: [PATCH 1/5] add the option to define passThrough --- app/src/js/multimocks.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/js/multimocks.js b/app/src/js/multimocks.js index bfce497..4056b33 100644 --- a/app/src/js/multimocks.js +++ b/app/src/js/multimocks.js @@ -69,6 +69,9 @@ angular } return [200, mock.response, mockHeaders]; }); + } if (mock.passThrough){ + $httpBackend. + when(mock.httpMethod, uriRegExp, mock.requestData).passThrough(); } else { $httpBackend .when(mock.httpMethod, uriRegExp, mock.requestData) From b6c8b7c8884849319123399915f9a657a28cdf8e Mon Sep 17 00:00:00 2001 From: oetrog Date: Mon, 21 Mar 2016 14:38:31 +0200 Subject: [PATCH 2/5] add the option to define passThrough --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index 21e48c0..70dd028 100644 --- a/README.md +++ b/README.md @@ -103,6 +103,17 @@ and can contain a regex: "uri": "/customer/\\d*/cart" ``` +To use the option of bypass the mock and issue real http request, the resource files should look like this: + +```json +{ + "httpMethod": "GET", + "statusCode": 200, + "uri": "/customer/cart", + "passThrough": true +} +``` + ### Delayed responses In some scenarios you may want to simulate a server/network delay. From 94c6c871db6b0f88f12d1020b4c07b796dfe80b0 Mon Sep 17 00:00:00 2001 From: oetrog Date: Mon, 21 Mar 2016 14:54:36 +0200 Subject: [PATCH 3/5] add the option to define passThrough --- app/src/js/multimocks.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/js/multimocks.js b/app/src/js/multimocks.js index 4056b33..479ba10 100644 --- a/app/src/js/multimocks.js +++ b/app/src/js/multimocks.js @@ -69,7 +69,7 @@ angular } return [200, mock.response, mockHeaders]; }); - } if (mock.passThrough){ + } if (mock.passThrough) { $httpBackend. when(mock.httpMethod, uriRegExp, mock.requestData).passThrough(); } else { From e196024504097544e6912433af492d81bc0d29bd Mon Sep 17 00:00:00 2001 From: oetrog Date: Mon, 21 Mar 2016 15:42:19 +0200 Subject: [PATCH 4/5] add the option to define passThrough --- README.md | 4 +++- app/src/js/multimocks.js | 8 +++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 70dd028..512ffb7 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,9 @@ and can contain a regex: "uri": "/customer/\\d*/cart" ``` -To use the option of bypass the mock and issue real http request, the resource files should look like this: +### Bypassing mocks + + To use the option of bypass the mock and issue real http request, the resource files should look like this: ```json { diff --git a/app/src/js/multimocks.js b/app/src/js/multimocks.js index 479ba10..9769107 100644 --- a/app/src/js/multimocks.js +++ b/app/src/js/multimocks.js @@ -69,9 +69,11 @@ angular } return [200, mock.response, mockHeaders]; }); - } if (mock.passThrough) { - $httpBackend. - when(mock.httpMethod, uriRegExp, mock.requestData).passThrough(); + } + if (mock.passThrough) { + $httpBackend + .when(mock.httpMethod, uriRegExp, mock.requestData) + .passThrough(); } else { $httpBackend .when(mock.httpMethod, uriRegExp, mock.requestData) From e0ee5161d2b7fcaf3f411e490b3eccdffceb73b9 Mon Sep 17 00:00:00 2001 From: oetrog Date: Wed, 23 Mar 2016 11:21:22 +0200 Subject: [PATCH 5/5] add the option to define passThrough --- app/package/js/angular-multimocks.js | 5 +++++ app/package/js/angular-multimocks.min.js | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app/package/js/angular-multimocks.js b/app/package/js/angular-multimocks.js index 8a85f99..b299a71 100644 --- a/app/package/js/angular-multimocks.js +++ b/app/package/js/angular-multimocks.js @@ -69,6 +69,11 @@ angular } return [200, mock.response, mockHeaders]; }); + } + if (mock.passThrough) { + $httpBackend + .when(mock.httpMethod, uriRegExp, mock.requestData) + .passThrough(); } else { $httpBackend .when(mock.httpMethod, uriRegExp, mock.requestData) diff --git a/app/package/js/angular-multimocks.min.js b/app/package/js/angular-multimocks.min.js index dce095c..8608f36 100644 --- a/app/package/js/angular-multimocks.min.js +++ b/app/package/js/angular-multimocks.min.js @@ -1 +1 @@ -angular.module("scenario",["ngMockE2E","multimocks.responseDelay"]).provider("multimocksData",function(){var a={},b={"Content-type":"application/json"},c="_default";this.setHeaders=function(a){b=a},this.setMockData=function(b){a=b},this.addMockData=function(b,c){a[b]=c},this.setDefaultScenario=function(a){c=a},this.$get=function(){return{getMockData:function(){return a},getDefaultScenario:function(){return c},getHeaders:function(){return b}}}}).factory("multimocks",["$q","$http","$httpBackend","multimocksData","scenarioMocks",function(a,b,c,d,e){var f=function(a,e){var f=d.getHeaders(),g=new RegExp("^"+e.uri+"$");if(e.poll){var h=0,i=void 0!==e.pollCount?e.pollCount:2;c.when(e.httpMethod,g,e.requestData).respond(function(){return i>h?(h++,[204,{},f]):[200,e.response,f]})}else c.when(e.httpMethod,g,e.requestData).respond(e.statusCode,e.response,f);if(e.callInSetup){var j={method:e.httpMethod,url:e.uri};b(j).success(function(){a.resolve()})}else a.resolve()};return{setup:function(b){var c=a.defer(),d=e.getMocks(b);for(var g in d)f(c,d[g]);return c.promise}}}]).factory("currentScenario",["$window","multimocksData",function(a,b){function c(a){if(-1!==a.indexOf("scenario")){var b=a.slice(1).split("&").map(function(a){return a.split("=")}).filter(function(a){return"scenario"===a[0]});return b[0][1]}return void 0}return{getName:function(){var d=c(a.location.search);return void 0===d?b.getDefaultScenario():d}}}]).factory("scenarioMocks",["$log","multimocksData","currentScenario","multimocksLocation",function(a,b,c,d){function e(a,b){var c=new RegExp(b);return c.test(a)}var f=b.getMockData(),g={getMocks:function(b){return void 0!==f[b]?f[b]:void(b&&a.error("Mocks not found for scenario: "+b))},getMocksForCurrentScenario:function(){return g.getMocks(c.getName())},getDelayForResponse:function(a){var b=d.getQueryStringValuesByKey("global_delay");if(void 0!==b)return parseInt(b[0]);var c=g.getMocksForCurrentScenario();for(var f in c){var h=c[f],i=e(a.config.url,h.uri),j=h.httpMethod===a.config.method;if(j&&i)return h.responseDelay||0}return 0}};return g}]).service("multimocksLocation",["$window",function(a){var b={};return b.getQueryStringValuesByKey=function(b){var c={};return a.location.search.substr(1).split("&").forEach(function(a){var b=a.split("="),d=b[0],e=b[1]&&decodeURIComponent(b[1]);c[d]?c[d].push(e):c[d]=[e]}),c[b]},b}]).run(["multimocks","currentScenario",function(a,b){a.setup(b.getName())}]),angular.module("multimocks.responseDelay",[]).factory("responseDelay",["$q","$timeout","scenarioMocks",function(a,b,c){return{response:function(d){var e=a.defer();return b(function(){e.resolve(d)},c.getDelayForResponse(d)),e.promise}}}]).config(["$httpProvider",function(a){a.interceptors.push("responseDelay")}]); \ No newline at end of file +angular.module("scenario",["ngMockE2E","multimocks.responseDelay"]).provider("multimocksData",function(){var a={},b={"Content-type":"application/json"},c="_default";this.setHeaders=function(a){b=a},this.setMockData=function(b){a=b},this.addMockData=function(b,c){a[b]=c},this.setDefaultScenario=function(a){c=a},this.$get=function(){return{getMockData:function(){return a},getDefaultScenario:function(){return c},getHeaders:function(){return b}}}}).factory("multimocks",["$q","$http","$httpBackend","multimocksData","scenarioMocks",function(a,b,c,d,e){var f=function(a,e){var f=d.getHeaders(),g=new RegExp("^"+e.uri+"$");if(e.poll){var h=0,i=void 0!==e.pollCount?e.pollCount:2;c.when(e.httpMethod,g,e.requestData).respond(function(){return i>h?(h++,[204,{},f]):[200,e.response,f]})}if(e.passThrough?c.when(e.httpMethod,g,e.requestData).passThrough():c.when(e.httpMethod,g,e.requestData).respond(e.statusCode,e.response,f),e.callInSetup){var j={method:e.httpMethod,url:e.uri};b(j).success(function(){a.resolve()})}else a.resolve()};return{setup:function(b){var c=a.defer(),d=e.getMocks(b);for(var g in d)f(c,d[g]);return c.promise}}}]).factory("currentScenario",["$window","multimocksData",function(a,b){function c(a){if(-1!==a.indexOf("scenario")){var b=a.slice(1).split("&").map(function(a){return a.split("=")}).filter(function(a){return"scenario"===a[0]});return b[0][1]}return void 0}return{getName:function(){var d=c(a.location.search);return void 0===d?b.getDefaultScenario():d}}}]).factory("scenarioMocks",["$log","multimocksData","currentScenario","multimocksLocation",function(a,b,c,d){function e(a,b){var c=new RegExp(b);return c.test(a)}var f=b.getMockData(),g={getMocks:function(b){return void 0!==f[b]?f[b]:void(b&&a.error("Mocks not found for scenario: "+b))},getMocksForCurrentScenario:function(){return g.getMocks(c.getName())},getDelayForResponse:function(a){var b=d.getQueryStringValuesByKey("global_delay");if(void 0!==b)return parseInt(b[0]);var c=g.getMocksForCurrentScenario();for(var f in c){var h=c[f],i=e(a.config.url,h.uri),j=h.httpMethod===a.config.method;if(j&&i)return h.responseDelay||0}return 0}};return g}]).service("multimocksLocation",["$window",function(a){var b={};return b.getQueryStringValuesByKey=function(b){var c={};return a.location.search.substr(1).split("&").forEach(function(a){var b=a.split("="),d=b[0],e=b[1]&&decodeURIComponent(b[1]);c[d]?c[d].push(e):c[d]=[e]}),c[b]},b}]).run(["multimocks","currentScenario",function(a,b){a.setup(b.getName())}]),angular.module("multimocks.responseDelay",[]).factory("responseDelay",["$q","$timeout","scenarioMocks",function(a,b,c){return{response:function(d){var e=a.defer();return b(function(){e.resolve(d)},c.getDelayForResponse(d)),e.promise}}}]).config(["$httpProvider",function(a){a.interceptors.push("responseDelay")}]); \ No newline at end of file