blob: ca43b512c63135449deada8f2bda5a8db973d93d (
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
98
99
100
101
102
103
104
105
106
|
---
title: Muck acceptance tests v3
author: Lars Wirzenius / The Ick project
...
Introduction
=============================================================================
Muck is a persistent in-memory JSON store with an HTTP API and
advanced access control using signed JWT access tokens. This document
presents its automated acceptance tests, using a (for now
hypothetical) language similar to the Gherkin langauge implemented by
Cucumber.
A happy path scenario
=============================================================================
This scenario does some basic resource management via the Muck API.
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
Check server status.
> **then** there are **_0_** resources in Muck
Create a simple resource. Remember its id.
> **given** I am **_tomjon_**
> **when** I create a resource `{"foo": "bar"}`
> **then** there is **_1_** resource in Muck
> **and** resource id is remembered as **_ID_**
> **and** resource revision is remembered as **_REV1_**
Retrieve the resource.
> **when** I fetch resource _ID_
> **then** I get `{"foo": "bar"}`
> **and** it is mine
> **and** it has revision **_REV1_**
Make sure another user can't retreive, update, or delete the resource.
> **given** I am **_verence_**
> **when** I fetch resource **_ID_**
> **then** it doesn't exist
>
> **when** I update **_ID_**, revision **_REV1_**, with `{"foo": "somethingelse"}`
> **then** it doesn't exist
>
> **when** I delete **_ID_**
> **then** it doesn't exist
Update the resource.
> **given** I am **_tomjon_**
> **when** I update **_ID_**, revision **_wrong_**, with `{"foo": "somethingelse"}`
> **then** it doesnt't work
>
> **when** I update **_ID_**, revision **_REV1_**, with `{"foo": "somethingelse"}`
> **then** it works
> **and** resource revision is remembered as **_REV2_**
Check the resource has been updated.
> **when** I fetch resource **_ID_**
> **then** I get `{"foo": "somethingelse"}`
> **and** it is mine
> **and** it has revision **_REV2_**
Restart Muck. The resource should still exist.
> **when** Muck is restarted
> **and** I fetch resource **_ID_**
> **then** I get `{"foo": "somethingelse"}`
> **and** it is mine
> **and** it has revision **_REV2_**
Search for the resource. First with a condition that is no longer
true.
> **when** I search for **_foo_** being **_bar_**
> **then** there are no matches
Now search for the correct value.
> **when** I search for **_foo_** being **_somethingelse_**
> **then** I get only resource **_ID_**
Delete the resource.
> **when** I delete **_ID_**
> **then** it works
> **when** I fetch resource **_ID_**
> **then** it doesn't exist
Restart Muck again. The resource should not exist.
> **when** Muck is restarted
> **when** I fetch resource **_ID_ **
> **then** it doesn't exist
All done.
|