mirage 2.4.2 → 3.0.0.alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. data/.simplecov +6 -0
  2. data/Gemfile +11 -3
  3. data/Gemfile.lock +41 -14
  4. data/VERSION +1 -1
  5. data/features/client/clear.feature +41 -50
  6. data/features/client/configure.feature +2 -2
  7. data/features/client/put.feature +17 -6
  8. data/features/client/requests.feature +5 -9
  9. data/features/client/start.feature +19 -11
  10. data/features/client/stop.feature +10 -44
  11. data/features/server/commandline_interface/start.feature +2 -14
  12. data/features/server/commandline_interface/stop.feature +6 -4
  13. data/features/server/logging.feature +2 -2
  14. data/features/server/prime.feature +11 -66
  15. data/features/server/requests/delete.feature +34 -33
  16. data/features/server/requests/get.feature +21 -18
  17. data/features/server/save_and_revert.feature +24 -11
  18. data/features/server/templates/delete.feature +29 -32
  19. data/features/server/templates/get.feature +44 -25
  20. data/features/server/templates/put/put.feature +55 -78
  21. data/features/server/templates/put/put_with_substitutions.feature +12 -32
  22. data/features/server/templates/put/required_content.feature +118 -0
  23. data/features/step_definitions/my_steps.rb +51 -6
  24. data/features/support/env.rb +1 -1
  25. data/features/support/hooks.rb +2 -5
  26. data/{lib/mirage/client → features/support}/web.rb +14 -3
  27. data/lib/mirage/client.rb +5 -2
  28. data/lib/mirage/client/client.rb +22 -129
  29. data/lib/mirage/client/request.rb +25 -0
  30. data/lib/mirage/client/requests.rb +13 -0
  31. data/lib/mirage/client/runner.rb +4 -4
  32. data/lib/mirage/client/template.rb +108 -0
  33. data/lib/mirage/client/template_configuration.rb +22 -0
  34. data/lib/mirage/client/templates.rb +26 -0
  35. data/mirage.gemspec +42 -22
  36. data/mirage_server.rb +1 -135
  37. data/rakefile +22 -7
  38. data/server/app.rb +4 -0
  39. data/server/binary_data_checker.rb +15 -0
  40. data/server/helpers.rb +28 -0
  41. data/server/mock_response.rb +140 -58
  42. data/server/server.rb +167 -0
  43. data/spec/{cli_bridge_spec.rb → client/cli_bridge_spec.rb} +15 -11
  44. data/spec/client/client_spec.rb +139 -0
  45. data/spec/client/request_spec.rb +52 -0
  46. data/spec/client/requests_spec.rb +10 -0
  47. data/spec/{runner_spec.rb → client/runner_spec.rb} +3 -3
  48. data/spec/client/template_configuration_spec.rb +32 -0
  49. data/spec/client/template_spec.rb +241 -0
  50. data/spec/client/templates_spec.rb +79 -0
  51. data/spec/resources/binary.file +0 -0
  52. data/spec/server/binary_data_checker_spec.rb +22 -0
  53. data/spec/server/helpers_spec.rb +34 -0
  54. data/spec/server/mock_response_spec.rb +526 -0
  55. data/spec/server/server_spec.rb +132 -0
  56. data/spec/spec_helper.rb +61 -2
  57. data/test.html +12 -0
  58. data/test.rb +20 -17
  59. data/todo.lst +2 -0
  60. data/views/index.haml +22 -0
  61. data/views/response.haml +24 -0
  62. metadata +134 -49
  63. data/features/server/templates/put/put_as_default.feature +0 -42
  64. data/features/server/templates/put/put_with_delay.feature +0 -8
  65. data/features/server/templates/put/put_with_pattern.feature +0 -80
  66. data/lib/mirage/client/response.rb +0 -29
  67. data/spec/client_spec.rb +0 -38
  68. data/views/index.erb +0 -28
@@ -2,6 +2,8 @@
2
2
  Feature: Mirage is started from the command line.
3
3
  more than instance of Mirage can be started on different ports at the same time.
4
4
 
5
+ By default mirage runs on port 7001.
6
+
5
7
 
6
8
  Scenario: Starting mirage
7
9
  Given Mirage is not running
@@ -14,17 +16,3 @@ Feature: Mirage is started from the command line.
14
16
  Given Mirage is not running
15
17
  When I run 'mirage start -p 9001'
16
18
  Then mirage should be running on 'http://localhost:9001/mirage'
17
-
18
-
19
- Scenario: Starting multiple instances of Mirage
20
- Given Mirage is not running
21
- When I run 'mirage start -p 7001'
22
- And I run 'mirage start -p 9001'
23
- Then mirage should be running on 'http://localhost:7001/mirage'
24
- And mirage should be running on 'http://localhost:9001/mirage'
25
-
26
-
27
- Scenario: Starting Mirage when it is already running
28
- Given Mirage is running
29
- When I run 'mirage start -p 7001'
30
- Then I should see 'Mirage is already running' on the command line
@@ -1,13 +1,15 @@
1
1
  @command_line
2
- Feature: stop
2
+ Feature: Mirage can be stopped from the commandline
3
+ If more than one instance of Mirage is running, you will be asked to supply the ports which represent the running instances
4
+ of mirage that you wish to stop.
3
5
 
4
- Scenario: Calling stop without specifying the port when only one instance is running
6
+ Scenario: Stopping a single instance
5
7
  Given I run 'mirage start -p 7001'
6
8
  When I run 'mirage stop'
7
9
  Then mirage should not be running on 'http://localhost:7001/mirage'
8
10
 
9
11
 
10
- Scenario: Calling stop without specifying the port when more than one instance is running
12
+ Scenario: Calling stop when there is more than one instance running
11
13
  Given I run 'mirage start -p 7001'
12
14
  Given I run 'mirage start -p 9001'
13
15
  When I run 'mirage stop'
@@ -16,7 +18,7 @@ Feature: stop
16
18
  And mirage should be running on 'http://localhost:9001/mirage'
17
19
 
18
20
 
19
- Scenario: stopping on a single instance
21
+ Scenario: stopping on a single instance using the port
20
22
  Given I run 'mirage start -p 7001'
21
23
  And I run 'mirage start -p 9001'
22
24
  When I run 'mirage stop -p 7001'
@@ -1,6 +1,6 @@
1
1
  Feature: Output from Mirage is stored in mirage.log.
2
2
  This file is located at the root from which mirage is started.
3
3
 
4
- Scenario: response is set.
5
- Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello'
4
+ Scenario: Mirage logs request
5
+ Given GET is sent to 'http://localhost:7001/mirage/templates/greeting'
6
6
  Then mirage.log should contain '/mirage/templates/greeting'
@@ -1,89 +1,34 @@
1
+ #TODO - rename responses directory to templates
1
2
  @command_line
2
- Feature: Mirage can be primed with a set of responses.
3
- By default, Mirage loads any rb files found in ./responses on startup. Mirage can also be made to load response for a directory
4
- of your choosing
3
+ Feature: Mirage can be primed with a set of templates.
4
+ By default, Mirage loads any .rb files found in ./responses on startup. Mirage can also be made to load responses from a directory
5
+ of your choosing by using the -d/--defaults option
5
6
 
6
7
  Responses can be added to the responses directory and used to prime Mirage after Mirage has been started.
7
8
 
8
- Priming mirage causes any modifications to its state to be lost
9
+ Priming causes any modifications to Mirage's current state to be lost.
9
10
 
10
11
 
11
- Scenario: Mirage is started with the responses to be used for priming located in ./responses
12
+ Scenario: Using the default responses directory
12
13
  Given the file 'responses/default_greetings.rb' contains:
13
14
  """
14
15
  prime do |mirage|
15
- mirage.put('greeting', 'hello')
16
- mirage.put('leaving', 'goodbye')
16
+ mirage.templates.put('greeting', 'hello')
17
17
  end
18
18
  """
19
19
  And I run 'mirage start'
20
- When I send GET to 'http://localhost:7001/mirage/responses/greeting'
20
+ When GET is sent to 'http://localhost:7001/mirage/responses/greeting'
21
21
  Then 'hello' should be returned
22
- When I send GET to 'http://localhost:7001/mirage/responses/leaving'
23
- Then 'goodbye' should be returned
24
22
 
25
23
 
26
- Scenario: Mirage is started pointing with a relative path given for the responses directory
27
- Given the file './custom_responses_location/default_greetings.rb' contains:
28
- """
29
- prime do |mirage|
30
- mirage.put('greeting', 'hello')
31
- end
32
- """
33
- And I run 'mirage start -d ./custom_responses_location'
34
- When I send GET to 'http://localhost:7001/mirage/responses/greeting'
35
- Then 'hello' should be returned
36
-
37
-
38
- Scenario: Mirage is started pointing with a full path for the responses
24
+ Scenario: Using a custom responses directory
39
25
  Given Mirage is not running
40
26
  And the file '/tmp/responses/default_greetings.rb' contains:
41
27
  """
42
28
  prime do |mirage|
43
- mirage.put('greeting', 'hello')
29
+ mirage.templates.put('greeting', 'hello')
44
30
  end
45
31
  """
46
32
  And I run 'mirage start --defaults /tmp/responses'
47
- When I send PUT to 'http://localhost:7001/mirage/defaults'
48
- And I send GET to 'http://localhost:7001/mirage/responses/greeting'
33
+ And GET is sent to 'http://localhost:7001/mirage/responses/greeting'
49
34
  Then 'hello' should be returned
50
-
51
-
52
- Scenario: Priming mirage after its state has been modified
53
- Given the file 'responses/default_greetings.rb' contains:
54
- """
55
- prime do |mirage|
56
- mirage.put('greeting', 'hello')
57
- end
58
- """
59
- And I run 'mirage start'
60
- And I send DELETE to 'http://localhost:7001/mirage/templates'
61
- And I send PUT to 'http://localhost:7001/mirage/templates/a_new_response' with request entity
62
- """
63
- new response
64
- """
65
-
66
- When I send PUT to 'http://localhost:7001/mirage/defaults'
67
- When I send GET to 'http://localhost:7001/mirage/responses/greeting'
68
- Then 'hello' should be returned
69
- When I send GET to 'http://localhost:7001/mirage/responses/a_new_response'
70
- Then a 404 should be returned
71
-
72
- @command_line
73
- Scenario: Mirage is started with a bad file
74
- Given the file 'responses/default_greetings.rb' contains:
75
- """
76
- A file with a mistake in it
77
- """
78
- When I run 'mirage start'
79
- Then I should see 'WARN: Unable to load default responses from: responses/default_greetings.rb' on the command line
80
-
81
-
82
- Scenario: Mirage is primed with a bad file after it has been started
83
- Given I run 'mirage start'
84
- When the file 'responses/default_greetings.rb' contains:
85
- """
86
- A file with a mistake in it
87
- """
88
- And I send PUT to 'http://localhost:7001/mirage/defaults'
89
- Then a 500 should be returned
@@ -1,46 +1,47 @@
1
- Feature: Request data can be deleted.
1
+ Feature: Tracked request data can be deleted
2
2
 
3
3
  Background: The MockServer has already got a response for greeting and leaving on it.
4
- Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello'
5
- And I send GET to 'http://localhost:7001/mirage/responses/greeting'
6
-
7
- And I send PUT to 'http://localhost:7001/mirage/templates/leaving' with body 'Goodbye'
8
- And I send GET to 'http://localhost:7001/mirage/responses/leaving'
4
+ Given the following template template:
5
+ """
6
+ {
7
+ "response":{
8
+ "body":"Hello"
9
+ }
10
+ }
11
+ """
12
+ And 'response.body' is base64 encoded
13
+ And the template is sent using PUT to 'http://localhost:7001/mirage/templates/greeting'
14
+
15
+ Given the following template template:
16
+ """
17
+ {
18
+ "response":{
19
+ "body":"Goodbye"
20
+ }
21
+ }
22
+ """
23
+ And 'response.body' is base64 encoded
24
+ And the template is sent using PUT to 'http://localhost:7001/mirage/templates/leaving'
25
+
26
+
27
+ And GET is sent to 'http://localhost:7001/mirage/responses/greeting'
28
+ And GET is sent to 'http://localhost:7001/mirage/responses/leaving'
9
29
 
10
30
 
11
31
  Scenario: Deleting all requests
12
- And I send DELETE to 'http://localhost:7001/mirage/requests'
32
+ And DELETE is sent to 'http://localhost:7001/mirage/requests'
13
33
 
14
- When I send GET to 'http://localhost:7001/mirage/requests/1'
34
+ When GET is sent to 'http://localhost:7001/mirage/requests/1'
15
35
  Then a 404 should be returned
16
- When I send GET to 'http://localhost:7001/mirage/responses/greeting'
17
- Then a 200 should be returned
18
- When I send GET to 'http://localhost:7001/mirage/templates/1'
19
- Then a 200 should be returned
20
-
21
-
22
- When I send GET to 'http://localhost:7001/mirage/requests/2'
36
+ When GET is sent to 'http://localhost:7001/mirage/requests/2'
23
37
  Then a 404 should be returned
24
- When I send GET to 'http://localhost:7001/mirage/responses/leaving'
25
- Then a 200 should be returned
26
- When I send GET to 'http://localhost:7001/mirage/templates/2'
27
- Then a 200 should be returned
28
38
 
29
39
 
30
- Scenario: Deleting a stored request for a prticular response
31
- And I send DELETE to 'http://localhost:7001/mirage/requests/1'
32
40
 
33
- When I send GET to 'http://localhost:7001/mirage/requests/1'
34
- Then a 404 should be returned
35
- When I send GET to 'http://localhost:7001/mirage/responses/greeting'
36
- Then a 200 should be returned
37
- When I send GET to 'http://localhost:7001/mirage/templates/1'
38
- Then a 200 should be returned
41
+ Scenario: Deleting a stored request for a particular response
42
+ And DELETE is sent to 'http://localhost:7001/mirage/requests/1'
39
43
 
40
-
41
- When I send GET to 'http://localhost:7001/mirage/requests/2'
42
- Then a 200 should be returned
43
- When I send GET to 'http://localhost:7001/mirage/responses/leaving'
44
+ When GET is sent to 'http://localhost:7001/mirage/requests/1'
45
+ Then a 404 should be returned
46
+ When GET is sent to 'http://localhost:7001/mirage/requests/2'
44
47
  Then a 200 should be returned
45
- When I send GET to 'http://localhost:7001/mirage/templates/2'
46
- Then a 200 should be returned
@@ -1,13 +1,23 @@
1
- Feature: After a response has been served from Mirage, the content of the request that triggered it can be retrieved. This is useful
2
- for testing that the correct information was sent to the endpoint.
1
+ Feature: After a response has been served from Mirage, the request that triggered it can be retrieved. This is useful
2
+ for testing that the correct information was sent by your application code.
3
3
 
4
- On putting a respons template on to Mirage, a unique id is returned which can be used to look up the last request made to get that response.
4
+ Use a template's ID to retrieve the last request that was last received.
5
5
 
6
- If the request body contains content this is stored. Otherwise it is the query string that is stored.
7
6
 
8
7
  Background: A template has already be put on Mirage
9
- Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello' and headers:
10
- | X-mirage-method | POST |
8
+ Given the following template template:
9
+ """
10
+ {
11
+ "request" : {
12
+ "http_method" : "post"
13
+ },
14
+ "response":{
15
+ "body":"Hello"
16
+ }
17
+ }
18
+ """
19
+ And 'response.body' is base64 encoded
20
+ And the template is sent using PUT to 'http://localhost:7001/mirage/templates/greeting'
11
21
 
12
22
 
13
23
  Scenario: Getting request data when the data was in the body.
@@ -15,18 +25,11 @@ Feature: After a response has been served from Mirage, the content of the reques
15
25
  """
16
26
  Hello Mirage
17
27
  """
18
- When I send GET to 'http://localhost:7001/mirage/requests/1'
19
- Then 'Hello Mirage' should be returned
20
-
28
+ When GET is sent to 'http://localhost:7001/mirage/requests/1'
29
+ Then request data should have been retrieved
21
30
 
22
- Scenario: Getting request data when the data was in the query string.
23
- Given I send POST to 'http://localhost:7001/mirage/responses/greeting' with parameters:
24
- | surname | Davis |
25
- | firstname | Leon |
26
- When I send GET to 'http://localhost:7001/mirage/requests/1'
27
- Then 'surname=Davis&firstname=Leon' should be returned
28
31
 
32
+ Scenario: Getting request data for a template that has not yet served a response.
33
+ Given GET is sent to 'http://localhost:7001/mirage/requests/1'
34
+ Then a 404 should be returned
29
35
 
30
- Scenario: Getting request data for a template that has not been served yet.
31
- Given I send GET to 'http://localhost:7001/mirage/requests/1'
32
- Then a 404 should be returned
@@ -1,22 +1,35 @@
1
1
  Feature: Having set up the Mirage with a number of defaults, your tests may continue to change its state.
2
2
  Clearing and resetting all of your responses, potentially hundreds of times, can be time expensive.
3
3
 
4
- Mirage provides the ability to save of its current state and to revert it back to that state.
4
+ Mirage provides the ability to save its current state and to revert back to that state.
5
5
 
6
6
  Background: The MockServer has been setup with some default responses
7
- Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'The default greeting'
7
+ Given the following template template:
8
+ """
9
+ {
10
+ "response":{
11
+ "body":"The default greeting"
12
+ }
13
+ }
14
+ """
15
+ And 'response.body' is base64 encoded
16
+ And the template is sent using PUT to 'http://localhost:7001/mirage/templates/greeting'
8
17
 
9
18
 
10
19
  Scenario: Saving Mirage and reverting it
11
- And I send PUT to 'http://localhost:7001/mirage/backup'
20
+ Given PUT is sent to 'http://localhost:7001/mirage/backup'
21
+ And the following template template:
22
+ """
23
+ {
24
+ "response":{
25
+ "body":"Changed"
26
+ }
27
+ }
28
+ """
29
+ And 'response.body' is base64 encoded
30
+ And the template is sent using PUT to 'http://localhost:7001/mirage/templates/greeting'
12
31
 
13
- Given I send PUT to 'http://localhost:7001/mirage/templates/leaving' with body 'Goodbye'
14
- And I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Changed'
15
-
16
- And I send PUT to 'http://localhost:7001/mirage'
17
-
18
- When I send GET to 'http://localhost:7001/mirage/responses/leaving'
19
- Then a 404 should be returned
32
+ When PUT is sent to 'http://localhost:7001/mirage'
33
+ And GET is sent to 'http://localhost:7001/mirage/responses/greeting'
20
34
 
21
- When I send GET to 'http://localhost:7001/mirage/responses/greeting'
22
35
  Then 'The default greeting' should be returned
@@ -1,47 +1,44 @@
1
- Feature: Templates can be deleted, doing so means that the coresponding response is no longer hosted and it
2
- also deletes any associated request data.
3
-
1
+ Feature: When a template is deleted, any tracked request data is also removed.
4
2
 
5
3
  Background: The MockServer has already got a response for greeting and leaving on it.
6
- Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello'
7
- And I send GET to 'http://localhost:7001/mirage/responses/greeting'
8
-
9
- And I send PUT to 'http://localhost:7001/mirage/templates/leaving' with body 'Goodbye'
10
- And I send GET to 'http://localhost:7001/mirage/responses/leaving'
4
+ Given the following template template:
5
+ """
6
+ {
7
+ "response":{
8
+ "body":"Hello"
9
+ }
10
+ }
11
+ """
12
+ And 'response.body' is base64 encoded
13
+ And the template is sent using PUT to 'http://localhost:7001/mirage/templates/greeting'
14
+
15
+ Given the following template template:
16
+ """
17
+ {
18
+ "response":{
19
+ "body":"Goodbye"
20
+ }
21
+ }
22
+ """
23
+ And 'response.body' is base64 encoded
24
+ And the template is sent using PUT to 'http://localhost:7001/mirage/templates/leaving'
11
25
 
12
26
 
13
27
  Scenario: Deleting all templates
14
- Given I send DELETE to 'http://localhost:7001/mirage/templates'
15
-
16
- When I send GET to 'http://localhost:7001/mirage/requests/1'
17
- Then a 404 should be returned
18
- When I send GET to 'http://localhost:7001/mirage/responses/greeting'
28
+ Given DELETE is sent to 'http://localhost:7001/mirage/templates'
29
+ When GET is sent to 'http://localhost:7001/mirage/responses/greeting'
19
30
  Then a 404 should be returned
20
- When I send GET to 'http://localhost:7001/mirage/templates/1'
21
- Then a 404 should be returned
22
-
23
- When I send GET to 'http://localhost:7001/mirage/requests/2'
24
- Then a 404 should be returned
25
- When I send GET to 'http://localhost:7001/mirage/responses/leaving'
26
- Then a 404 should be returned
27
- When I send GET to 'http://localhost:7001/mirage/templates/2'
31
+ When GET is sent to 'http://localhost:7001/mirage/responses/leaving'
28
32
  Then a 404 should be returned
29
33
 
30
34
 
31
35
  Scenario: Deleting a particular template
32
- Given I send DELETE to 'http://localhost:7001/mirage/templates/1'
36
+ Given DELETE is sent to 'http://localhost:7001/mirage/templates/1'
33
37
 
34
- When I send GET to 'http://localhost:7001/mirage/templates/1'
35
- Then a 404 should be returned
36
- When I send GET to 'http://localhost:7001/mirage/responses/greeting'
37
- Then a 404 should be returned
38
- When I send GET to 'http://localhost:7001/mirage/requests/1'
38
+ When GET is sent to 'http://localhost:7001/mirage/responses/greeting'
39
39
  Then a 404 should be returned
40
40
 
41
- When I send GET to 'http://localhost:7001/mirage/requests/2'
42
- Then a 200 should be returned
43
- When I send GET to 'http://localhost:7001/mirage/responses/leaving'
44
- Then a 200 should be returned
45
- When I send GET to 'http://localhost:7001/mirage/templates/2'
41
+ When GET is sent to 'http://localhost:7001/mirage/responses/leaving'
46
42
  Then a 200 should be returned
43
+
47
44
 
@@ -1,31 +1,50 @@
1
- Feature: If you want to see the content of a particular response without triggering then it can be peeked instead.
2
- To do this, the responses unique id is required to identify it
3
-
1
+ Feature: Templates can be retrieved by using the ID that was returned when they were created
4
2
 
5
- #TODO should return headers as well
6
- Scenario: Peeking a text based response
7
- Given I send PUT to 'http://localhost:7001/mirage/templates/xml' with body '<xml></xml>' and headers:
8
- | content-type | text/xml |
9
3
 
10
- When I send GET to 'http://localhost:7001/mirage/templates/1'
11
- Then '<xml></xml>' should be returned
12
- And the response 'content-type' should be 'text/xml'
13
-
14
-
15
- Scenario: Peeking a file based response
16
- Given the file 'test_file.txt' contains:
4
+ Scenario: Retrieving a template
5
+ Given the following template template:
17
6
  """
18
- test content
7
+ {
8
+ "response":{
9
+ "default":false,
10
+ "body":"Hello",
11
+ "delay":0,
12
+ "content_type":"text/plain",
13
+ "status":200
14
+ },
15
+ "request":{
16
+ "parameters":{
17
+
18
+ },
19
+ "body_content":[
20
+
21
+ ],
22
+ "http_method":"get"
23
+ }
24
+ }
25
+ """
26
+ And the template is sent using PUT to 'http://localhost:7001/mirage/templates/greeting'
27
+ When GET is sent to 'http://localhost:7001/mirage/templates/1'
28
+ Then the following should be returned:
29
+ """
30
+ {
31
+ "response":{
32
+ "default":false,
33
+ "body":"Hello",
34
+ "delay":0,
35
+ "content_type":"text/plain",
36
+ "status":200
37
+ },
38
+ "request":{
39
+ "parameters":{
40
+
41
+ },
42
+ "body_content":[
43
+
44
+ ],
45
+ "http_method":"get"
46
+ }
47
+ }
19
48
  """
20
- And I send PUT to 'http://localhost:7001/mirage/templates/some/location/download' with file: test_file.txt and headers:
21
- | X-mirage-file | true |
22
-
23
- When I send GET to 'http://localhost:7001/mirage/templates/1'
24
- Then the response should be the same as the content of 'test_file.txt'
25
-
26
-
27
- Scenario: Peeking a response that does not exist
28
- When I send GET to 'http://localhost:7001/mirage/templates/1'
29
- Then a 404 should be returned
30
49
 
31
50