summaryrefslogtreecommitdiff
path: root/yarns/100-happy.yarn
blob: dc6f6c11d72b55dd81f0c293d62c60beded43c77 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# A happy path scenario

This scenario does some basic resource management via the Muck API.

    SCENARIO Muck

Start Muck. This also sets up access to it for the user by getting an
access token, which will be used for all requests.

    GIVEN a running Muck

Create a simple resource. Remember its id.

    WHEN user makes request POST /res with body { "foo": "bar" }
    THEN status code is 201
    THEN remember resource id as ID
    THEN remember resource revision as REV1

Retrieve the resource.

    WHEN user makes request GET /res with header "Muck-Id: ${ID}"
    THEN status code is 200
    THEN response body is { "foo": "bar" }
    THEN response has header "Muck-Id: ${ID}"
    THEN response has header "Muck-Revision: ${REV1}"

Update the resource.

    WHEN user makes request PUT /res with header "Muck-Id: ${ID}" and
    ... header "Muck-Revision: wrong" and
    ... body { "foo": "foobar" }
    THEN status code is 400

    WHEN user makes request PUT /res with header "Muck-Id: ${ID}" and
    ... header "Muck-Revision: ${REV1}" and
    ... body { "foo": "foobar" }
    THEN status code is 200
    THEN remember resource revision as REV2

Check the resource has been updated.

    WHEN user makes request GET /res with header "Muck-Id: ${ID}"
    THEN status code is 200
    THEN response body is { "foo": "foobar" }
    THEN response has header "Muck-Id: ${ID}"
    THEN response has header "Muck-Revision: ${REV2}"

Restart Muck. The resource should still exist.

    WHEN Muck is restarted
    WHEN user makes request GET /res with header "Muck-Id: ${ID}"
    THEN status code is 200
    THEN response body is { "foo": "foobar" }
    THEN response has header "Muck-Id: ${ID}"
    THEN response has header "Muck-Revision: ${REV2}"

Search for the resource. First with a condition that is no longer
true.

    WHEN user makes request GET /search with body
    ... {
    ...     "cond": [
    ...         {"where": "data", "field": "foo", "pattern": "bar", "op": "=="}
    ...     ]
    ... }
    THEN status code is 200
    THEN response body is {"resources": []}

Now search for the correct value.

    WHEN user makes request GET /search with body
    ... {
    ...     "cond": [
    ...         {"where": "data", "field": "foo", "pattern": "foobar",
    ...          "op": "=="}
    ...     ]
    ... }
    THEN status code is 200
    THEN response body is {"resources": ["${ID}"]}

Delete the resource.

    WHEN user makes request DELETE /res with header "Muck-Id: ${ID}"
    THEN status code is 200

    WHEN user makes request GET /res with header "Muck-Id: ${ID}"
    THEN status code is 404

Restart Muck again. The resource should not exist.

    WHEN Muck is restarted
    WHEN user makes request GET /res with header "Muck-Id: ${ID}"
    THEN status code is 404

All done.

    FINALLY Muck is stopped