oficina / suite Public

Clone
git clone https://amadan.net/oficina/suite

Plain git — no account needed to clone.

Download

Download this file

1package suite
2
3import (
4 "fmt"
5 "testing"
6)
7
8func TestS2RequiresEveryAnswerField(t *testing.T) {
9 asked := []ItemRevision{{ItemID: "doc", Revision: 0}, {ItemID: "other", Revision: 3}}
10 valid := `{"item_id":"other","revision":3,"result":"VISIBLE"}`
11 for _, row := range []string{
12 `{"item_id":"doc","result":"VISIBLE"}`,
13 `{"item_id":"doc","revision":null,"result":"VISIBLE"}`,
14 `{"revision":0,"result":"VISIBLE"}`,
15 `{"item_id":null,"revision":0,"result":"VISIBLE"}`,
16 `{"item_id":"doc","revision":0}`,
17 `{"item_id":"doc","revision":0,"result":null}`,
18 `null`,
19 } {
20 for _, rows := range []string{row + "," + valid, valid + "," + row} {
21 t.Run(rows, func(t *testing.T) {
22 body := []byte(`{"results":[` + rows + `]}`)
23 assertResults(t, DecodeS2(asked, 200, body), []Authorization{UNKNOWN, UNKNOWN})
24 })
25 }
26 }
27}
28
29func TestS2ExplicitZeroRevisionRemainsValid(t *testing.T) {
30 for _, result := range []Authorization{VISIBLE, NOT_VISIBLE, STALE, UNKNOWN} {
31 body := []byte(fmt.Sprintf(`{"results":[{"item_id":"doc","revision":0,"result":%q}]}`, result))
32 assertResults(t, DecodeS2([]ItemRevision{{ItemID: "doc", Revision: 0}}, 200, body), []Authorization{result})
33 }
34}
35
36func TestS2IncompleteDuplicateCannotBeDiscarded(t *testing.T) {
37 valid := `{"item_id":"doc","revision":0,"result":"VISIBLE"}`
38 incomplete := `{"item_id":"doc","result":"NOT_VISIBLE"}`
39 for _, rows := range []string{valid + "," + incomplete, incomplete + "," + valid} {
40 body := []byte(`{"results":[` + rows + `]}`)
41 assertResults(t, DecodeS2([]ItemRevision{{ItemID: "doc", Revision: 0}}, 200, body), []Authorization{UNKNOWN})
42 }
43}
44
45func TestS2MissingIdentityDoesNotMatchEmptyAskedIdentity(t *testing.T) {
46 for _, row := range []string{`{"revision":0,"result":"VISIBLE"}`, `{"item_id":null,"revision":0,"result":"VISIBLE"}`} {
47 body := []byte(`{"results":[` + row + `]}`)
48 assertResults(t, DecodeS2([]ItemRevision{{ItemID: "", Revision: 0}}, 200, body), []Authorization{UNKNOWN})
49 }
50}
51