jamesdbloom/mockserver-grunt

promise on mockserver-grunt never called

slowdownitsfine opened this issue · 3 comments

I've been looking for a way to mock an external api for quite some time and was very happy to find your mockserver packages for Node!

I've been able to use your mockserver-client without issues while running the mockserver itself through Homrebrew.

However I have not been as succesful running mockserver itself with the help of your mockserver-grunt package.

// When calling it like so, the promise will never execute:
var mockserver = require('mockserver-grunt');
mockserver
  .start_mockserver({ serverPort: 3200, verbose: true })
  .then(() => { console.log('loaded mockserver') ;} )

// I will see this printed though and the server will respond at the defined port
Skipping {"host":"oss.sonatype.org","path":"/content/repositories/releases/org/mock-server/mockserver-netty/3.10.6/mockserver-netty-3.10.6-jar-with-dependencies.jar","port":443} as file already downloaded
{ state: 'pending' }
> Running 'java -Dfile.encoding=UTF-8 -Dmockserver.logLevel=INFO -jar mockserver-netty-3.10.6-jar-with-dependencies.jar -serverPort 3200'
waiting for MockServer to start retries remaining: 100
...
waiting for MockServer to start retries remaining: 3
waiting for MockServer to start retries remaining: 2
waiting for MockServer to start retries remaining: 1
MockServer failed to start
2017-05-02 23:16:51,862 INFO o.m.m.MockServer MockServer started on port: 3200

// And when trying to stop it I'll see this
mockserver.stop_mockserver()
TypeError: Cannot read property 'serverPort' of undefined
...

The promise hooks would be greate for testing.

I'm on macOS, running node 4.6.2 and using "devDependencies": { "mockserver-grunt": 1.0.38" }.

Thank you in advance.

I'm running it with Node 4.6.2.

Created a reproduction here.

None of the console.logs are fired for me.

The stop_mockserver command requires the port configuration.

I have improved the validation of input configuration, so if you upgrade to the latest version and update your code as below your now get an error to indicate the missing configuration, as below.

diff --git a/index.js b/index.js
index 04a752a..8aef863 100644
--- a/index.js
+++ b/index.js
@@ -3,6 +3,14 @@ mockserver
   .start_mockserver({ serverPort: 3200, verbose: true })
   .then(() => {
     console.log('loaded mockserver');
-    mockserver.stop_mockserver().then(() => { console.log('stopped mockserver'); });
+    mockserver
+    	.stop_mockserver()
+    	.then(
+    		() => { 
+    			console.log('stopped mockserver'); 
+    		},
+    		(e) => { 
+    			console.log('stopping mockserver failed: ' + e); 
+    		});
   });

Error message:

$ node index.js
Skipping {"host":"oss.sonatype.org","path":"/content/repositories/releases/org/mock-server/mockserver-netty/3.10.6/mockserver-netty-3.10.6-jar-with-dependencies.jar","port":443} as file already downloaded
Running 'java -Dfile.encoding=UTF-8 -Dmockserver.logLevel=INFO -jar mockserver-netty-3.10.6-jar-with-dependencies.jar -serverPort 3200'
waiting for MockServer to start retries remaining: 100
waiting for MockServer to start retries remaining: 99
waiting for MockServer to start retries remaining: 98
waiting for MockServer to start retries remaining: 97
waiting for MockServer to start retries remaining: 96
waiting for MockServer to start retries remaining: 95
waiting for MockServer to start retries remaining: 94
waiting for MockServer to start retries remaining: 93
waiting for MockServer to start retries remaining: 92
waiting for MockServer to start retries remaining: 91
waiting for MockServer to start retries remaining: 90
waiting for MockServer to start retries remaining: 89
waiting for MockServer to start retries remaining: 88
waiting for MockServer to start retries remaining: 87
2017-05-04 00:43:05,064 INFO o.m.m.MockServer MockServer started on port: 3200
waiting for MockServer to start retries remaining: 86
2017-05-04 00:43:05,395 INFO o.m.m.MockServerHandler resetting all expectations and request logs

loaded mockserver
stopping mockserver failed: Please specify "serverPort" or "proxyPort" or both, for example: "stop_mockserver({ serverPort: 1080, proxyPort: 1090 })"