@@ -43,7 +43,22 @@ public static class TESTCOMMAND_CONSTANTS
4343 'requestpath': '/foo/',
4444 'requestbody': 'heisann test',
4545 'expectedresponsebody': 'FOOBARBOOBAR'
46- }
46+ },
47+
48+ {
49+ 'name': '/foo/ request works',
50+ 'requestpath': '/foo/',
51+ 'requestbody': 'heisann test',
52+ 'expectedresponsebody': 'file:example.txt'
53+ },
54+
55+ {
56+ 'name': '/foo/ request works',
57+ 'requestpath': '/foo/',
58+ 'requestbody': 'file:example.txt',
59+ 'expectedresponsebody': 'file:example.txt',
60+ },
61+
4762]
4863" ;
4964
@@ -87,6 +102,7 @@ public TestTestCommand()
87102 dc . AddFile ( "endpoint1\\ endpoint.json" , TESTCOMMAND_CONSTANTS . ENDPOINTJSON ) ;
88103 dc . AddFile ( "endpoint1\\ content.txt" , "FOOBARBOOBAR" ) ;
89104 dc . AddFile ( "tests\\ tests.json" , TESTCOMMAND_CONSTANTS . TESTS ) ;
105+ dc . AddFile ( "tests\\ example.txt" , "FOOBARBOOBAR" ) ;
90106 }
91107
92108 public void Dispose ( )
@@ -105,14 +121,22 @@ public void DetectsTestSuite()
105121 public void CanReadTestsFromJSONFile ( )
106122 {
107123 var endpointTestDefinition = EndpointTestDefinition . ReadFromDirectory ( dc . DirectoryName ) ;
108- Assert . Equal ( 1 , endpointTestDefinition . Tests . Count ( ) ) ;
124+ Assert . Equal ( 3 , endpointTestDefinition . Tests . Count ( ) ) ;
109125 var test = endpointTestDefinition . Tests . ElementAt ( 0 ) ;
110126 Assert . Equal ( "/foo/ request works" , test . Name ) ;
111127 Assert . Equal ( "/foo/" , test . RequestPath ) ;
112128 Assert . Equal ( "heisann test" , test . RequestBody ) ;
113129 Assert . Equal ( "FOOBARBOOBAR" , test . ExpectedResponseBody ) ;
114130 }
115131
132+ [ Fact ]
133+ public void RequestBodyCanBeReadFromFile ( )
134+ {
135+ var endpointTestDefinition = EndpointTestDefinition . ReadFromDirectory ( dc . DirectoryName ) ;
136+ var test = endpointTestDefinition . Tests . ElementAt ( 2 ) ;
137+ Assert . Equal ( "FOOBARBOOBAR" , test . RequestBody ) ;
138+ }
139+
116140 [ Fact ]
117141 async public void CanExecuteTest ( )
118142 {
@@ -122,5 +146,69 @@ async public void CanExecuteTest()
122146 var result = await test . ExecuteAsync ( EndpointCollectionReader . ReadFromDirectory ( dc . DirectoryName ) , handleErrors : false ) ;
123147 Assert . True ( result . OK ) ;
124148 }
149+
150+ [ Fact ]
151+ async public void CanReadExpectedResponseBodyFromFile ( )
152+ {
153+ var endpointTestDefinition = EndpointTestDefinition . ReadFromDirectory ( dc . DirectoryName ) ;
154+ var test = endpointTestDefinition . Tests . ElementAt ( 1 ) ;
155+
156+ var result = await test . ExecuteAsync ( EndpointCollectionReader . ReadFromDirectory ( dc . DirectoryName ) , handleErrors : false ) ;
157+ Assert . True ( result . OK , result . Message ) ;
158+ }
159+
160+ [ Fact ]
161+ async public void CanCheckExpectedRequestMatcherError ( )
162+ {
163+ var testcase =
164+ ( new JSONTest { name = "checksomething" , requestpath = "/foo/" , requestbody = "foobar" , expectedrequestmatcher = "Regex 'test'" } )
165+ . Validated ( ) . CreateTestCase ( "." ) ;
166+
167+ Assert . True ( testcase . HasExpectations ) ;
168+ Assert . False ( testcase . NeedsResponseBody ) ;
169+ Assert . Equal ( "Regex 'test'" , testcase . ExpectedRequestMatcher ) ;
170+ Assert . Equal ( "foobar" , testcase . RequestBody ) ;
171+
172+ var result = await testcase . ExecuteAsync ( EndpointCollectionReader . ReadFromDirectory ( dc . DirectoryName ) ) ;
173+ Assert . True ( result . Error ) ;
174+ Assert . Null ( result . Exception ) ;
175+ Assert . Equal ( "Expected request matcher: Regex 'test'\n Actual: Any request" , result . Message ) ;
176+ }
177+
178+ [ Fact ]
179+ async public void CanCheckExpectedRequestMatcherSuccess ( )
180+ {
181+ var testcase =
182+ ( new JSONTest { name = "checksomething" , requestpath = "/foo/" , requestbody = "this is a test" , expectedrequestmatcher = "Regex 'test'" } )
183+ . Validated ( ) . CreateTestCase ( "." ) ;
184+ var result = await testcase . ExecuteAsync ( EndpointCollectionReader . ReadFromDirectory ( dc . DirectoryName ) ) ;
185+ Assert . True ( result . OK ) ;
186+ }
187+
188+ [ Fact ]
189+ async public void CanCheckExpectedResponseCreatorFailureError ( )
190+ {
191+ var testcase =
192+ ( new JSONTest { name = "checksomething" , requestpath = "/foo/" , requestbody = "foobar" , expectedresponsecreator = "File content.txt" } )
193+ . Validated ( ) . CreateTestCase ( "." ) ;
194+ Assert . True ( testcase . HasExpectations ) ;
195+ Assert . False ( testcase . NeedsResponseBody ) ;
196+ Assert . Equal ( "File content.txt" , testcase . ExpectedResponseCreator ) ;
197+ var result = await testcase . ExecuteAsync ( EndpointCollectionReader . ReadFromDirectory ( dc . DirectoryName ) ) ;
198+ Assert . True ( result . Error ) ;
199+ Assert . Equal ( "Expected response creator: File content.txt\n Actual: Execute script myscript.csscript" , result . Message ) ;
200+ }
201+
202+ [ Fact ]
203+ async public void CanCheckExpectedResponseCreatorFailureSuccess ( )
204+ {
205+ var testcase =
206+ ( new JSONTest { name = "checksomething" , requestpath = "/foo/" , requestbody = "this is a test" , expectedresponsecreator = "File content.txt" } )
207+ . Validated ( ) . CreateTestCase ( "." ) ;
208+ Assert . Equal ( "File content.txt" , testcase . ExpectedResponseCreator ) ;
209+ var result = await testcase . ExecuteAsync ( EndpointCollectionReader . ReadFromDirectory ( dc . DirectoryName ) ) ;
210+ Assert . True ( result . OK , result . Message ) ;
211+ Assert . Null ( result . Message ) ;
212+ }
125213 }
126214}
0 commit comments