blob: 0bee7e1607853c85449fcdc957cebc2c994f5969 [file] [log] [blame]
Serge Bazanski080f7ff2021-09-09 13:01:00 +02001package curator
2
3import "testing"
4
5func TestEtcdPrefixParse(t *testing.T) {
6 for i, te := range []struct {
7 p string
8 ok bool
9 }{
10 {"/foo/", true},
11 {"/foo/bar/", true},
12
13 {"/foo//", false},
14 {"/foo//bar/", false},
15 {"/foo/bar", false},
16 {"foo", false},
17 {"foo/", false},
18 {"foo/bar", false},
19 } {
20 _, err := newEtcdPrefix(te.p)
21 if te.ok {
22 if err != nil {
23 t.Errorf("Case %d: wanted nil, got err %v", i, err)
24 }
25 } else {
26 if err == nil {
27 t.Errorf("Case %d: wanted err, got nil", i)
28 }
29 }
30 }
31}
32
33func TestEtcdPrefixKeyRange(t *testing.T) {
34 p := mustNewEtcdPrefix("/foo/")
35
36 // Test Key() functionality.
37 key, err := p.Key("bar")
38 if err != nil {
39 t.Fatalf("Key(bar): %v", err)
40 }
41 if want, got := "/foo/bar", key; want != got {
42 t.Errorf("Wrong key, wanted %q, got %q", want, got)
43 }
44
Serge Bazanski80861fd2021-11-02 22:14:06 +010045 // Test Key() with invalid IDs.
46 _, err = p.Key("")
47 if err == nil {
48 t.Error("Key(bar/baz) returned nil, wanted error")
49 }
Serge Bazanski080f7ff2021-09-09 13:01:00 +020050 _, err = p.Key("bar/baz")
51 if err == nil {
52 t.Error("Key(bar/baz) returned nil, wanted error")
53 }
54
55 // Test Range() functionality.
56 op := p.Range()
57 if want, got := "/foo/", string(op.KeyBytes()); want != got {
58 t.Errorf("Wrong start key, wanted %q, got %q", want, got)
59 }
60 if want, got := "/foo0", string(op.RangeBytes()); want != got {
61 t.Errorf("Wrong end key, wanted %q, got %q", want, got)
62 }
63}
Serge Bazanski80861fd2021-11-02 22:14:06 +010064
65func TestEtcdPrefixExtractID(t *testing.T) {
66 p := mustNewEtcdPrefix("/foo/")
67
68 for i, te := range []struct {
69 key string
70 want string
71 }{
72 {"/foo/", ""},
73 {"/foo0", ""},
74 {"/foo", ""},
75 {"bar", ""},
76
77 {"/foo/bar", "bar"},
78 {"/foo/bar/baz", ""},
79 } {
80 got := p.ExtractID(te.key)
81 if te.want != got {
82 t.Errorf("%d: ExtractID(%q) should have returned %q, got %q", i, te.key, te.want, got)
83 }
84 }
85}