Skip to content

Commit 95026f8

Browse files
committed
add cascade test and add merge to query params
1 parent 3e27032 commit 95026f8

File tree

4 files changed

+91
-0
lines changed

4 files changed

+91
-0
lines changed

acceptance/lookup_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,30 @@ func TestLookupNamespaceless(t *testing.T) {
106106
expected := fixtures.LookupNamespacelessResult
107107
assert.Equal(t, expected, *actual)
108108
}
109+
110+
func TestLookupNamespacelessCascade(t *testing.T) {
111+
if v := os.Getenv("JERAKIA_ACC"); v == "" {
112+
t.Skip("JERAKIA_ACC not set")
113+
}
114+
115+
client, err := NewClient()
116+
if err != nil {
117+
t.Fatal(err)
118+
}
119+
120+
lookupOpts := &jerakia.LookupOpts{
121+
LookupType: "cascade",
122+
Merge: "array",
123+
Metadata: map[string]string{
124+
"env": "dev",
125+
},
126+
}
127+
128+
actual, err := jerakia.Lookup(client, "biscuits", lookupOpts)
129+
if err != nil {
130+
t.Fatal(err)
131+
}
132+
133+
expected := fixtures.LookupNamespacelessCascadeResult
134+
assert.Equal(t, expected, *actual)
135+
}

lookup.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ func (opts LookupOpts) ToLookupQuery() (string, error) {
5454
params.Add("scope", opts.Scope)
5555
}
5656

57+
if opts.Merge != "" {
58+
params.Add("merge", opts.Merge)
59+
}
60+
5761
for k, v := range opts.ScopeOptions {
5862
s := fmt.Sprintf("scope_%s", k)
5963
params.Add(s, v)

testing/lookup_fixtures.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,3 +144,41 @@ func HandleLookupNamespaceless(t *testing.T) {
144144
fmt.Fprintf(w, LookupNamespacelessResponse)
145145
})
146146
}
147+
148+
// LookupNamespacelessCascadeResponse is the expected response of a cascading
149+
// namespace-less lookup.
150+
const LookupNamespacelessCascadeResponse = `
151+
{
152+
"found": true,
153+
"payload": [
154+
"gingernuts",
155+
"jammiedodgers",
156+
"custardcreams",
157+
"richtea",
158+
"digestive"
159+
],
160+
"status": "ok"
161+
}
162+
`
163+
164+
// LookupNamespacelessCascadeResult is the expected result of a cascading
165+
// namespace-less lookup.
166+
var LookupNamespacelessCascadeResult = jerakia.LookupResult{
167+
Status: "ok",
168+
Found: true,
169+
Payload: []interface{}{
170+
"gingernuts", "jammiedodgers", "custardcreams", "richtea", "digestive",
171+
},
172+
}
173+
174+
// HandleLookupNamespacelessCascade tests a cascading namespace-less lookup.
175+
func HandleLookupNamespacelessCascade(t *testing.T) {
176+
th.Mux.HandleFunc("/lookup/biscuits", func(w http.ResponseWriter, r *http.Request) {
177+
assert.Equal(t, r.Method, "GET")
178+
assert.Equal(t, r.Header.Get("X-Authentication"), fake.Token)
179+
180+
w.Header().Set("Content-Type", "application/json")
181+
w.WriteHeader(http.StatusOK)
182+
fmt.Fprintf(w, LookupNamespacelessCascadeResponse)
183+
})
184+
}

testing/lookup_requests_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,25 @@ func TestLookupNamespaceless(t *testing.T) {
8686
expected := LookupNamespacelessResult
8787
assert.Equal(t, expected, *actual)
8888
}
89+
90+
func TestLookupNamespacelessCascade(t *testing.T) {
91+
th.SetupHTTP()
92+
defer th.TeardownHTTP()
93+
HandleLookupNamespacelessCascade(t)
94+
95+
lookupOpts := &jerakia.LookupOpts{
96+
LookupType: "cascade",
97+
Merge: "array",
98+
Metadata: map[string]string{
99+
"env": "dev",
100+
},
101+
}
102+
103+
actual, err := jerakia.Lookup(fake.FakeClient(), "biscuits", lookupOpts)
104+
if err != nil {
105+
t.Fatal(err)
106+
}
107+
108+
expected := LookupNamespacelessCascadeResult
109+
assert.Equal(t, expected, *actual)
110+
}

0 commit comments

Comments
 (0)