mirage 1.3.6 → 2.0.0.alpha1

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 (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
+