RegressionTests__HTTPServerTests.st
changeset 1258 67af8446b918
parent 1256 aa1221ae56d2
child 1447 2351db93aa5b
child 1499 26a16a04219b
--- a/RegressionTests__HTTPServerTests.st	Tue Jan 13 12:08:13 2015 +0100
+++ b/RegressionTests__HTTPServerTests.st	Tue Jan 13 14:00:23 2015 +0100
@@ -16,7 +16,7 @@
     "common cleanup - invoked after testing."
 
     server notNil ifTrue:[
-        server stop.
+        server terminateServer.
         server := nil.
     ].
     super tearDown
@@ -25,6 +25,40 @@
 !HTTPServerTests methodsFor:'tests'!
 
 test01_startup_shutdown
+    |port|
+
+    port := 9876.
+
+    server := HTTPServer newServerOnPort:port.
+    self assert:server notNil.
+    self assert:server isRunning not.
+    self assert:server isServing not.
+    self assert:server hasSoapEnabled not.
+
+    server start.
+    self assert:server isRunning.
+
+    server waitUntilServing.
+
+    self assert:server isRunning.
+    self assert:server isServing.
+    self assert:server hasSoapEnabled not.
+
+    server stop.
+
+    server waitUntilStopped.
+    self assert:server isServing not.
+
+    server terminateServer.
+
+    self assert:server isRunning not.
+
+    "
+     self new test01_startup_shutdown
+    "
+!
+
+test02_simpleResponses
     |port service response|
 
     port := 9876.
@@ -71,10 +105,56 @@
     self assert:(response isErrorResponse not).
     self assert:(response data asString = '1.1').
 
-    server stop.
+    server terminateServer.
 
     "
-     self new test01_startup_shutdown
+     self new test02_simpleResponses
+    "
+!
+
+test03_restResponse
+    |port service response object|
+
+    port := 9876.
+
+    server := HTTPServer newServerOnPort:port.
+    server debugErrors:true.
+
+    service := HTTPDemoRestService new.
+    service linkName:'rest'.
+    service registerServiceOn:server.
+
+    server start.
+    server waitUntilServing.
+
+    response := HTTPInterface get:('http://localhost:%1/rest/Object/class' bindWith:port).
+    self assert:(response notNil).
+    self assert:(response isErrorResponse not).
+
+    self assert:(response data notEmpty).
+    object := JSONReader fromJSON:response data asString.
+    self assert:(object isDictionary).
+    self assert:(object at:'Class') = 'Object'.
+    self assert:(object at:'Selector') = 'class'.
+    self assert:(object at:'Source') asString = (Object compiledMethodAt:#class) source asString.
+
+    "/ verify that the following requests are denied
+    response := HTTPInterface post:('http://localhost:%1/rest/Object/class' bindWith:port) with:'foo=1&bar=2'.
+    self assert:(response notNil).
+    self assert:(response isErrorResponse).
+
+    response := HTTPInterface put:('http://localhost:%1/rest/Object/class' bindWith:port) with:'foo=1&bar=2' contentType:nil.
+    self assert:(response notNil).
+    self assert:(response isErrorResponse).
+
+    response := HTTPInterface delete:('http://localhost:%1/rest/Object/class' bindWith:port).
+    self assert:(response notNil).
+    self assert:(response isErrorResponse).
+
+    server terminateServer.
+
+    "
+     self new test03_restResponse
     "
 ! !