mirage 1.3.6 → 2.0.0.alpha1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. data/Gemfile +7 -4
  2. data/VERSION +1 -1
  3. data/bin/mirage +2 -0
  4. data/features/client/clear.feature +38 -20
  5. data/features/client/peek.feature +11 -11
  6. data/features/client/save_and_revert.feature +14 -8
  7. data/features/client/set.feature +59 -13
  8. data/features/client/track.feature +5 -3
  9. data/features/server/clear.feature +59 -47
  10. data/features/server/logging.feature +2 -3
  11. data/features/server/peek.feature +12 -10
  12. data/features/server/prime.feature +15 -13
  13. data/features/server/response_templates.feature +9 -16
  14. data/features/server/save_and_revert.feature +11 -14
  15. data/features/server/set.feature +44 -17
  16. data/features/server/set_default_response.feature +19 -25
  17. data/features/server/set_with_a_delay.feature +3 -5
  18. data/features/server/set_with_a_pattern.feature +24 -29
  19. data/features/server/track_requests.feature +71 -0
  20. data/features/server/web_user_interface.feature +7 -8
  21. data/features/step_definitions/my_steps.rb +83 -28
  22. data/features/support/env.rb +0 -14
  23. data/lib/mirage.rb +3 -0
  24. data/lib/mirage/client.rb +48 -43
  25. data/lib/mirage/core.rb +65 -152
  26. data/lib/mirage/mock_response.rb +49 -0
  27. data/lib/mirage/mock_responses_collection.rb +109 -0
  28. data/lib/mirage/object.rb +5 -0
  29. data/lib/mirage/web.rb +37 -28
  30. data/lib/start_mirage.rb +27 -5
  31. data/lib/{view/mirage/index.xhtml → views/index.erb} +5 -5
  32. data/mirage.gemspec +7 -7
  33. metadata +57 -23
  34. data/features/client/get.feature +0 -46
  35. data/features/server/file_responses.feature +0 -8
  36. data/features/server/track.feature +0 -74
@@ -2,6 +2,5 @@ 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
4
  Scenario: response is set.
5
- Given I post to 'http://localhost:7001/mirage/set/greeting' with parameters:
6
- | response | Hello |
7
- Then mirage.log should contain '/mirage/set/greeting?response=Hello'
5
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello'
6
+ Then mirage.log should contain '/mirage/templates/greeting'
@@ -1,25 +1,27 @@
1
1
  Feature: If you want to see the content of a particular response without triggering then it can be peeked instead.
2
2
  To do this, the responses unique id is required to identify it
3
+
3
4
 
4
-
5
+ #TODO should return headers as well
5
6
  Scenario: Peeking a text based response
6
- Given I hit 'http://localhost:7001/mirage/set/greeting' with parameters:
7
- | response | Hello |
7
+ Given I send PUT to 'http://localhost:7001/mirage/templates/xml' with body '<xml></xml>' and headers:
8
+ | content-type | text/xml |
8
9
 
9
- When I hit 'http://localhost:7001/mirage/peek/1'
10
- Then 'Hello' should be returned
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'
11
13
 
12
14
 
13
15
  Scenario: Peeking a file based response
14
- Given I hit 'http://localhost:7001/mirage/set/download' with parameters:
15
- | response | README.md |
16
+ Given I send PUT to 'http://localhost:7001/mirage/templates/some/location/download' with file: README.md and headers:
17
+ | X-mirage-file | true |
16
18
 
17
- When I hit 'http://localhost:7001/mirage/peek/1'
18
- Then the response should be a file the same as 'README.md'
19
+ When I send GET to 'http://localhost:7001/mirage/templates/1'
20
+ Then the response should be the same as the content of 'README.md'
19
21
 
20
22
 
21
23
  Scenario: Peeking a response that does not exist
22
- When I hit 'http://localhost:7001/mirage/peek/1'
24
+ When I send GET to 'http://localhost:7001/mirage/templates/1'
23
25
  Then a 404 should be returned
24
26
 
25
27
 
@@ -17,9 +17,9 @@ Feature: Mirage can be primed with a set of responses.
17
17
  end
18
18
  """
19
19
  And I run 'mirage start'
20
- When I hit 'http://localhost:7001/mirage/get/greeting'
20
+ When I send GET to 'http://localhost:7001/mirage/responses/greeting'
21
21
  Then 'hello' should be returned
22
- When I hit 'http://localhost:7001/mirage/get/leaving'
22
+ When I send GET to 'http://localhost:7001/mirage/responses/leaving'
23
23
  Then 'goodbye' should be returned
24
24
 
25
25
 
@@ -31,7 +31,7 @@ Feature: Mirage can be primed with a set of responses.
31
31
  end
32
32
  """
33
33
  And I run 'mirage start -d ./custom_responses_location'
34
- When I hit 'http://localhost:7001/mirage/get/greeting'
34
+ When I send GET to 'http://localhost:7001/mirage/responses/greeting'
35
35
  Then 'hello' should be returned
36
36
 
37
37
 
@@ -43,8 +43,8 @@ Feature: Mirage can be primed with a set of responses.
43
43
  end
44
44
  """
45
45
  And I run 'mirage start -d /tmp/responses'
46
- When I hit 'http://localhost:7001/mirage/primes'
47
- And I hit 'http://localhost:7001/mirage/get/greeting'
46
+ When I send PUT to 'http://localhost:7001/mirage/defaults'
47
+ And I send GET to 'http://localhost:7001/mirage/responses/greeting'
48
48
  Then 'hello' should be returned
49
49
 
50
50
 
@@ -56,14 +56,16 @@ Feature: Mirage can be primed with a set of responses.
56
56
  end
57
57
  """
58
58
  And I run 'mirage start'
59
- And I hit 'http://localhost:7001/mirage/clear'
60
- And I hit 'http://localhost:7001/mirage/set/a_new_response' with parameters:
61
- | response | new response |
62
-
63
- When I hit 'http://localhost:7001/mirage/prime'
64
- When I hit 'http://localhost:7001/mirage/get/greeting'
59
+ And I send DELETE to 'http://localhost:7001/mirage/templates'
60
+ And I send PUT to 'http://localhost:7001/mirage/templates/a_new_response' with request entity
61
+ """
62
+ new response
63
+ """
64
+
65
+ When I send PUT to 'http://localhost:7001/mirage/defaults'
66
+ When I send GET to 'http://localhost:7001/mirage/responses/greeting'
65
67
  Then 'hello' should be returned
66
- When I hit 'http://localhost:7001/mirage/get/a_new_response'
68
+ When I send GET to 'http://localhost:7001/mirage/responses/a_new_response'
67
69
  Then a 404 should be returned
68
70
 
69
71
 
@@ -82,7 +84,7 @@ Feature: Mirage can be primed with a set of responses.
82
84
  """
83
85
  A file with a mistake in it
84
86
  """
85
- And I hit 'http://localhost:7001/mirage/prime'
87
+ And I send PUT to 'http://localhost:7001/mirage/defaults'
86
88
  Then a 500 should be returned
87
89
 
88
90
 
@@ -7,10 +7,9 @@ Feature: Parts of a response can be substitued for values found in the request b
7
7
 
8
8
 
9
9
  Scenario: A response template populated from matches found in the request body using a regex
10
- Given I hit 'http://localhost:7001/mirage/set/greeting' with parameters:
11
- | response | Hello ${<firstname>(.*?)</firstname>} ${<surname>(.*?)</surname>}, how are you? |
12
-
13
- When I hit 'http://localhost:7001/mirage/get/greeting' with request body:
10
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello ${<firstname>(.*?)</firstname>} ${<surname>(.*?)</surname>}, how are you?' and headers:
11
+ | X-mirage-method | POST |
12
+ When I send POST to 'http://localhost:7001/mirage/responses/greeting' with request entity
14
13
  """
15
14
  <grettingRequest>
16
15
  <firstname>Leon</firstname>
@@ -21,27 +20,21 @@ Feature: Parts of a response can be substitued for values found in the request b
21
20
 
22
21
 
23
22
  Scenario: A response template populated from match found in the query string using a request parameter name
24
- Given I hit 'http://localhost:7001/mirage/set/greeting' with parameters:
25
- | response | Hello ${name}, how are you? |
26
-
27
- When I hit 'http://localhost:7001/mirage/get/greeting' with parameters:
23
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello ${name}, how are you?'
24
+ When I send GET to 'http://localhost:7001/mirage/responses/greeting' with parameters:
28
25
  | name | Leon |
29
26
  Then 'Hello Leon, how are you?' should be returned
30
27
 
31
28
 
32
29
  Scenario: Response template populated from match found in the query string using a regex
33
- Given I hit 'http://localhost:7001/mirage/set/greeting' with parameters:
34
- | response | Hello ${name=([L\|l]eon)}, how are you? |
35
-
36
- When I hit 'http://localhost:7001/mirage/get/greeting' with parameters:
30
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello ${name=([L\|l]eon)}, how are you?'
31
+ When I send GET to 'http://localhost:7001/mirage/responses/greeting' with parameters:
37
32
  | parameter | value |
38
33
  | name | Leon |
39
34
  Then 'Hello Leon, how are you?' should be returned
40
35
 
41
36
 
42
37
  Scenario: No match is found in either the request body or query string
43
- Given I hit 'http://localhost:7001/mirage/set/greeting' with parameters:
44
- | response | Hello ${<name>(.*?)</name>}, how are you? |
45
-
46
- When I hit 'http://localhost:7001/mirage/get/greeting'
38
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello ${<name>(.*?)</name>}, how are you?'
39
+ When I send GET to 'http://localhost:7001/mirage/responses/greeting'
47
40
  Then 'Hello ${<name>(.*?)</name>}, how are you?' should be returned
@@ -4,22 +4,19 @@ Feature: Having set up the Mirage with a number of defaults, your tests may cont
4
4
  Mirage provides the ability to save of its current state and to revert it back to that state.
5
5
 
6
6
  Background: The MockServer has been setup with some default responses
7
- Given I hit 'http://localhost:7001/mirage/set/greeting' with parameters:
8
- | response | The default greeting |
9
-
7
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'The default greeting'
10
8
 
9
+
11
10
  Scenario: Saving Mirage and reverting it
12
- Given I hit 'http://localhost:7001/mirage/save'
13
- And I hit 'http://localhost:7001/mirage/set/leaving' with parameters:
14
- | response | Goodye |
15
-
16
- And I hit 'http://localhost:7001/mirage/set/greeting' with parameters:
17
- | response | Changed |
18
-
19
- And I hit 'http://localhost:7001/mirage/revert'
20
-
21
- When I hit 'http://localhost:7001/mirage/get/leaving'
11
+ And I send PUT to 'http://localhost:7001/mirage/backup'
12
+
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'
22
19
  Then a 404 should be returned
23
20
 
24
- When I hit 'http://localhost:7001/mirage/get/greeting'
21
+ When I send GET to 'http://localhost:7001/mirage/responses/greeting'
25
22
  Then 'The default greeting' should be returned
@@ -1,40 +1,67 @@
1
- Feature: Mirage can be configured with endpoints that when request returned defined responses.
1
+ Feature: Mirage can be configured with responses to be returned with the correct end point is hit.
2
2
  On setting a response, a unique id is retuned. This is a key that can be used to manage the response. E.g. clearing or peek at it.
3
3
 
4
4
  Usage:
5
- ${mirage_url}/set/your/end/point?response=your_response
5
+ HTTP METHOD: PUT -> /mirage/responses/your/response
6
+ Content type -> application/json
7
+
8
+ content:
9
+ response (mandatatory) = your response
10
+ pattern (optional) = criteria for when a response should be returned. see set_with_a_pattern.feature
11
+ delay (optional) = the amount of time in seconds that mirage should wait for before responding (defaults to 0)
12
+ method (optional) = http method that this response applies to. (defaults to get if not supplied)
13
+ default (optional) = set whether the reponse can act as a default response, see set_default_response.feature (defaults to false)
14
+ content-type = Set the content type to be returned
6
15
 
7
16
 
8
17
  Scenario: Setting a response without any selection criteria
9
- Given I hit 'http://localhost:7001/mirage/set/greeting' with parameters:
10
- | response | Hello, how are you? |
18
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello'
11
19
 
12
- When I hit 'http://localhost:7001/mirage/get/greeting'
13
- Then 'Hello, how are you?' should be returned
20
+ When I send GET to 'http://localhost:7001/mirage/responses/greeting'
21
+ Then 'Hello' should be returned
14
22
 
15
23
  Scenario: A response hosted on a longer url
16
- Given I hit 'http://localhost:7001/mirage/set/say/hello/to/me' with parameters:
17
- | response | Hello to me |
24
+ Given I send PUT to 'http://localhost:7001/mirage/templates/say/hello/to/me' with body 'Hello to me'
18
25
 
19
- When I hit 'http://localhost:7001/mirage/get/say/hello/to/me'
26
+ When I send GET to 'http://localhost:7001/mirage/responses/say/hello/to/me'
20
27
  Then 'Hello to me' should be returned
21
28
 
29
+ Scenario: Content type is set
30
+ Given I send PUT to 'http://localhost:7001/mirage/templates/say/hello/to/me' with body '<xml></xml>' and headers:
31
+ |content-type|text/xml|
32
+
33
+ When I send GET to 'http://localhost:7001/mirage/responses/say/hello/to/me'
34
+ Then '<xml></xml>' should be returned
35
+ And the response 'content-type' should be 'text/xml'
36
+
22
37
 
23
38
  Scenario: The same endpoint is set more than once
24
- Given I hit 'http://localhost:7001/mirage/set/greeting' with parameters:
25
- | response | Hello |
39
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello'
26
40
  Then '1' should be returned
27
41
 
28
- Given I hit 'http://localhost:7001/mirage/set/greeting' with parameters:
29
- | response | Hi |
42
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hi'
30
43
  Then '1' should be returned
31
44
 
32
45
 
33
- Scenario: A response is not supplied
34
- Given I hit 'http://localhost:7001/mirage/set/greeting'
35
- Then a 500 should be returned
46
+ Scenario Outline: Response set to respond to different http methods
47
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'GET' and headers:
48
+ | X-mirage-method | GET |
49
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'POST' and headers:
50
+ | X-mirage-method | POST |
51
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'DELETE' and headers:
52
+ | X-mirage-method | DELETE |
53
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'PUT' and headers:
54
+ | X-mirage-method | PUT |
55
+ When I send <method> to 'http://localhost:7001/mirage/responses/greeting'
56
+ Then '<method>' should be returned
57
+ Examples:
58
+ | method |
59
+ | GET |
60
+ | POST |
61
+ | PUT |
62
+ | DELETE |
36
63
 
37
64
 
38
65
  Scenario: Getting a response that does not exist
39
- When I hit 'http://localhost:7001/mirage/get/response_that_does_not_exist'
66
+ When I send GET to 'http://localhost:7001/mirage/responses/response_that_does_not_exist'
40
67
  Then a 404 should be returned
@@ -12,37 +12,31 @@ Feature: Mirage can respond with a 'default' response when a when the response r
12
12
  Root responses can cause unexpected behaviour and so in order to qualify as a default reponse a client must knowingly mark it as one.
13
13
 
14
14
  Scenario: A default response is returned
15
- Given I hit 'http://localhost:7001/mirage/set/level0/level1' with parameters:
16
- | response | another level |
17
- And I hit 'http://localhost:7001/mirage/set/level1' with parameters:
18
- | response | level 1 |
19
- | default | true |
20
-
21
- When I hit 'http://localhost:7001/mirage/get/level1/level2'
15
+ Given I send PUT to 'http://localhost:7001/mirage/templates/level0/level1' with body 'another level'
16
+ Given I send PUT to 'http://localhost:7001/mirage/templates/level1' with body 'level 1' and headers:
17
+ | X-mirage-default | true |
18
+
19
+ When I send GET to 'http://localhost:7001/mirage/responses/level1/level2'
22
20
  Then 'level 1' should be returned
23
21
 
24
22
 
25
23
  Scenario: More than one potential default response exists
26
- Given I hit 'http://localhost:7001/mirage/set/level1' with parameters:
27
- | response | level 1 |
28
- | default | true |
29
- And I hit 'http://localhost:7001/mirage/set/level1/level2' with parameters:
30
- | response | level 2 |
31
- | default | true |
32
- And I hit 'http://localhost:7001/mirage/set/level1/level2/level3' with parameters:
33
- | response | level 3 |
34
- And I hit 'http://localhost:7001/mirage/set/level1/level2/level3/level4' with parameters:
35
- | pattern | a pattern that wont be matched |
36
- And I hit 'http://localhost:7001/mirage/set/level1/level2/level3/level4/level5' with parameters:
37
- | response | level 5 |
38
- | default | true |
39
-
40
- When I hit 'http://localhost:7001/mirage/get/level1/level2/level3/level4'
24
+ Given I send PUT to 'http://localhost:7001/mirage/templates/level1' with body 'level 1' and headers:
25
+ | X-mirage-default | true |
26
+ Given I send PUT to 'http://localhost:7001/mirage/templates/level1/level2' with body 'level 2' and headers:
27
+ | X-mirage-default | true |
28
+ Given I send PUT to 'http://localhost:7001/mirage/templates/level1/level2/level3' with body 'level 3' and headers:
29
+ | X-mirage-default | false |
30
+ Given I send PUT to 'http://localhost:7001/mirage/templates/level1/level2/level3/level4' with body 'level 4' and headers:
31
+ | X-mirage-pattern | a pattern that wont be matched |
32
+ Given I send PUT to 'http://localhost:7001/mirage/templates/leve11/level2/level3/level4/level5' with body 'level 5' and headers:
33
+ | X-mirage-default | true |
34
+
35
+ When I send GET to 'http://localhost:7001/mirage/responses/level1/level2/level3/level4'
41
36
  Then 'level 2' should be returned
42
37
 
43
38
 
44
39
  Scenario: There isnt a default response
45
- Given I hit 'http://localhost:7001/mirage/set/level1' with parameters:
46
- | response | level 1 |
47
- When I hit 'http://localhost:7001/mirage/get/level1/level2'
40
+ Given I send PUT to 'http://localhost:7001/mirage/templates/level1' with body 'level 1'
41
+ When I send GET to 'http://localhost:7001/mirage/responses/level1/level2'
48
42
  Then a 404 should be returned
@@ -2,9 +2,7 @@ Feature: Its possible introduce a delay before responding to a client with a par
2
2
  conditions by making your application wait before receiving a response.
3
3
 
4
4
  Scenario: Response with a delay
5
- Given I hit 'http://localhost:7001/mirage/set/an_appology' with parameters:
6
- | response | Sorry it took me so long! |
7
- | delay | 4.2 |
8
-
9
- When I hit 'http://localhost:7001/mirage/get/an_appology'
5
+ Given I send PUT to 'http://localhost:7001/mirage/templates/an_appology' with body 'Sorry' and headers:
6
+ | X-mirage-delay | 4.2 |
7
+ When I send GET to 'http://localhost:7001/mirage/responses/an_appology'
10
8
  Then it should take at least '4.2' seconds
@@ -4,15 +4,15 @@ Feature: Mirage can be configured to return particular responses conditionally b
4
4
  Patterns can be either plain text or a regular expression
5
5
 
6
6
  Background: There is already a default response for 'greeting'
7
- Given I hit 'http://localhost:7001/mirage/set/greeting' with parameters:
8
- | response | Hello Stranger. |
9
-
7
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello Stranger' and headers:
8
+ | X-mirage-method | POST |
10
9
 
11
10
  Scenario: A plain text pattern found in the request body
12
- Given I hit 'http://localhost:7001/mirage/set/greeting' with parameters:
13
- | response | Hello Leon, how are you? |
14
- | pattern | <name>leon</name> |
15
- When I hit 'http://localhost:7001/mirage/get/greeting' with request body:
11
+
12
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello Leon, how are you?' and headers:
13
+ | X-mirage-pattern | <name>leon</name> |
14
+ | X-mirage-method | POST |
15
+ When I send POST to 'http://localhost:7001/mirage/responses/greeting' with request entity
16
16
  """
17
17
  <greetingRequest>
18
18
  <name>leon</name>
@@ -22,11 +22,10 @@ Feature: Mirage can be configured to return particular responses conditionally b
22
22
 
23
23
 
24
24
  Scenario: A regex based pattern found in the request body
25
- Given I hit 'http://localhost:7001/mirage/set/greeting' with parameters:
26
- | response | Hello Leon, how are you? |
27
- | pattern | .*?leon<\/name> |
28
-
29
- When I hit 'http://localhost:7001/mirage/get/greeting' with request body:
25
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello Leon, how are you?' and headers:
26
+ | X-mirage-pattern | .*?leon<\/name> |
27
+ | X-mirage-method | POST |
28
+ When I send POST to 'http://localhost:7001/mirage/responses/greeting' with request entity
30
29
  """
31
30
  <greetingRequest>
32
31
  <name>leon</name>
@@ -36,37 +35,33 @@ Feature: Mirage can be configured to return particular responses conditionally b
36
35
 
37
36
 
38
37
  Scenario: A plain text pattern found in the query string
39
- Given I hit 'http://localhost:7001/mirage/set/greeting' with parameters:
40
- | response | Hello Leon, how are you? |
41
- | pattern | leon |
42
-
43
- When I hit 'http://localhost:7001/mirage/get/greeting' with parameters:
38
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello Leon, how are you?' and headers:
39
+ | X-mirage-pattern | leon |
40
+ | X-mirage-method | POST |
41
+ When I send POST to 'http://localhost:7001/mirage/responses/greeting' with parameters:
44
42
  | name | leon |
45
-
46
43
  Then 'Hello Leon, how are you?' should be returned
47
44
 
48
45
 
49
46
  Scenario: A regex based pattern found in the query string
50
- Given I hit 'http://localhost:7001/mirage/set/greeting' with parameters:
51
- | response | Hello Leon, how are you? |
52
- | pattern | name=[L\|l]eon |
53
-
54
- When I hit 'http://localhost:7001/mirage/get/greeting' with parameters:
47
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello Leon, how are you?' and headers:
48
+ | X-mirage-pattern | name=[L\|l]eon |
49
+ | X-mirage-method | POST |
50
+ When I send POST to 'http://localhost:7001/mirage/responses/greeting' with parameters:
55
51
  | name | leon |
56
52
 
57
53
  Then 'Hello Leon, how are you?' should be returned
58
54
 
59
55
 
60
56
  Scenario: The pattern is not matched
61
- Given I hit 'http://localhost:7001/mirage/set/greeting' with parameters:
62
- | response | Hello Leon, how are you? |
63
- | pattern | .*?leon<\/name> |
64
-
65
- When I hit 'http://localhost:7001/mirage/get/greeting' with request body:
57
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello Leon, how are you?' and headers:
58
+ | X-mirage-pattern | .*?leon<\/name> |
59
+ | X-mirage-method | POST |
60
+ When I send POST to 'http://localhost:7001/mirage/responses/greeting' with request entity
66
61
  """
67
62
  <greetingRequest>
68
63
  <name>jim</name>
69
64
  </greetingRequest>
70
65
  """
71
66
 
72
- Then 'Hello Stranger.' should be returned
67
+ Then 'Hello Stranger' should be returned
@@ -0,0 +1,71 @@
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.
3
+
4
+ On setting a response, a unique id is returned which can be used to look up the last request made to get that response.
5
+
6
+ If the the response is reset then the same id is returned in order to make it easier to keep track of.
7
+
8
+ Responses hosted on the same endpoint but with a pattern are considered unique and so get their own ID.
9
+
10
+ If the request body contains content this is stored. Otherwise it is the query string that is stored.
11
+
12
+ If a response is 'peeked' this does not count as a request that should be stored.
13
+
14
+ Background: There is a response already on Mirage
15
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello' and headers:
16
+ | X-mirage-method | POST |
17
+
18
+
19
+ Scenario: Tracking a response that was triggered by a request that had content in the body
20
+ Given I send POST to 'http://localhost:7001/mirage/responses/greeting' with request entity
21
+ """
22
+ Hello Mirage
23
+ """
24
+ When I send GET to 'http://localhost:7001/mirage/requests/1'
25
+ Then 'Hello Mirage' should be returned
26
+
27
+
28
+ Scenario: Tracking a response that was triggered by a request with a query string
29
+ Given I send POST to 'http://localhost:7001/mirage/responses/greeting' with parameters:
30
+ | surname | Davis |
31
+ | firstname | Leon |
32
+ When I send GET to 'http://localhost:7001/mirage/requests/1'
33
+ Then 'surname=Davis&firstname=Leon' should be returned
34
+
35
+
36
+ Scenario: Tracking a response that has not been served yet
37
+ Given I send GET to 'http://localhost:7001/mirage/requests/1'
38
+ Then a 404 should be returned
39
+
40
+
41
+
42
+ Scenario: A response is peeked at
43
+ Given I send POST to 'http://localhost:7001/mirage/responses/greeting' with request entity
44
+ """
45
+ Hello
46
+ """
47
+ And I send GET to 'http://localhost:7001/mirage/templates/1'
48
+ When I send GET to 'http://localhost:7001/mirage/requests/1'
49
+ Then 'Hello' should be returned
50
+
51
+
52
+ Scenario: A default response and one for the same endpoint with a pattern are set
53
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello who ever you are'
54
+ Then '2' should be returned
55
+
56
+ Given I send PUT to 'http://localhost:7001/mirage/templates/greeting' with body 'Hello' and headers:
57
+ | X-mirage-pattern | Leon |
58
+ Then '3' should be returned
59
+
60
+ When I send GET to 'http://localhost:7001/mirage/responses/greeting' with parameters:
61
+ | name | Joel |
62
+ And I send GET to 'http://localhost:7001/mirage/responses/greeting' with parameters:
63
+ | name | Leon |
64
+
65
+ And I send GET to 'http://localhost:7001/mirage/requests/2'
66
+ Then 'name=Joel' should be returned
67
+
68
+ And I send GET to 'http://localhost:7001/mirage/requests/3'
69
+ Then 'name=Leon' should be returned
70
+
71
+