Skip to content

Commit c5a35dc

Browse files
committed
correct header assertion
1 parent 508ca27 commit c5a35dc

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

rest/handler_test.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -180,9 +180,11 @@ func TestShouldCheckAdminRBAC(t *testing.T) {
180180

181181
require.False(t, metricsHandler.shouldCheckAdminRBAC())
182182
}
183+
invalidAuthHeader := http.Header{}
184+
invalidAuthHeader.Add("Authorization", "SGCollect invalid")
183185
// with invalid sgcollect token
184-
adminHandler = newHandler(sc, adminPrivs, adminServer, httptest.NewRecorder(), &http.Request{Header: http.Header{"Authorization": []string{"SGCollect invalid"}}}, handlerOptions{sgcollect: sgcollectable})
185-
metricsHandler = newHandler(sc, metricsPrivs, metricsServer, httptest.NewRecorder(), &http.Request{}, handlerOptions{sgcollect: sgcollectable})
186+
adminHandler = newHandler(sc, adminPrivs, adminServer, httptest.NewRecorder(), &http.Request{Header: invalidAuthHeader}, handlerOptions{sgcollect: sgcollectable})
187+
metricsHandler = newHandler(sc, metricsPrivs, metricsServer, httptest.NewRecorder(), &http.Request{Header: invalidAuthHeader}, handlerOptions{sgcollect: sgcollectable})
186188
if requireInterfaceAuth {
187189
if base.IsDevMode() && !sgcollectable {
188190
require.PanicsWithValue(t, base.AssertionFailedPrefix+sgcollectTokenInvalidRequest, func() { adminHandler.shouldCheckAdminRBAC() })
@@ -197,8 +199,11 @@ func TestShouldCheckAdminRBAC(t *testing.T) {
197199
}
198200
// with valid sgcollect token, but sgcollect on the handler is disabled
199201
require.NoError(t, sc.SGCollect.createNewToken())
200-
adminHandler = newHandler(sc, adminPrivs, adminServer, httptest.NewRecorder(), &http.Request{Header: http.Header{"Authorization": []string{"SGCollect invalid"}}}, handlerOptions{sgcollect: false})
201-
metricsHandler = newHandler(sc, metricsPrivs, metricsServer, httptest.NewRecorder(), &http.Request{}, handlerOptions{sgcollect: false})
202+
203+
validAuthHeader := http.Header{}
204+
validAuthHeader.Add("Authorization", fmt.Sprintf("SGCollect %s", sc.SGCollect.Token))
205+
adminHandler = newHandler(sc, adminPrivs, adminServer, httptest.NewRecorder(), &http.Request{Header: validAuthHeader}, handlerOptions{sgcollect: false})
206+
metricsHandler = newHandler(sc, metricsPrivs, metricsServer, httptest.NewRecorder(), &http.Request{Header: validAuthHeader}, handlerOptions{sgcollect: false})
202207
if requireInterfaceAuth {
203208
if base.IsDevMode() {
204209
require.PanicsWithValue(t, base.AssertionFailedPrefix+sgcollectTokenInvalidRequest, func() { adminHandler.shouldCheckAdminRBAC() })

rest/sgcollect.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ type sgCollect struct {
6868
sgPath string // Path to the Sync Gateway executable
6969
SGCollectPath []string // Path to the sgcollect_info executable
7070
SGCollectPathErr error // Error if sgcollect_info path could not be determined
71-
token string // Token for sgcollect_info, if required
71+
Token string // Token for sgcollect_info, if required
7272
tokenAge time.Time // Time when the token was created
7373
Stdout io.Writer // test seam, is nil in production
7474
Stderr io.Writer // test seam, is nil in production
@@ -116,7 +116,7 @@ func (sg *sgCollect) Start(ctx context.Context, logFilePath string, zipFilename
116116
return fmt.Errorf("failed to get sgcollect_info token: %w", err)
117117
}
118118
cmd.Env = append(os.Environ(),
119-
sgcollectTokenEnvVar+"="+sg.token,
119+
sgcollectTokenEnvVar+"="+sg.Token,
120120
)
121121
outStream := newSGCollectOutputStream(ctx, sg.Stdout, sg.Stderr)
122122
cmd.Stdout = outStream.stdoutPipeWriter
@@ -179,14 +179,14 @@ func (sg *sgCollect) createNewToken() error {
179179
if err != nil {
180180
sg.clearToken()
181181
}
182-
sg.token = token
182+
sg.Token = token
183183
sg.tokenAge = time.Now()
184184
return err
185185
}
186186

187187
// clearToken clears the token.
188188
func (sg *sgCollect) clearToken() {
189-
sg.token = ""
189+
sg.Token = ""
190190
sg.tokenAge = time.Time{}
191191
}
192192

@@ -209,7 +209,7 @@ func (sg *sgCollect) hasValidToken(ctx context.Context, token string) bool {
209209
base.DebugfCtx(ctx, base.KeyAdmin, "sgcollect_info token has expired after %.2f secs", time.Since(sg.tokenAge).Seconds())
210210
return false
211211
}
212-
return token == sg.token
212+
return token == sg.Token
213213
}
214214

215215
type SGCollectOptions struct {

0 commit comments

Comments
 (0)