From 5fd654f8ea49966893f3283fb09b96e96d25e533 Mon Sep 17 00:00:00 2001 From: Roman Isaev Date: Fri, 10 Jan 2025 23:42:03 +0000 Subject: [PATCH] Add TestMakeServiceAdminAPI --- internal/httputil/httpapi_test.go | 67 +++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/internal/httputil/httpapi_test.go b/internal/httputil/httpapi_test.go index 23797a5e..c9dd933c 100644 --- a/internal/httputil/httpapi_test.go +++ b/internal/httputil/httpapi_test.go @@ -10,6 +10,8 @@ import ( "net/http" "net/http/httptest" "testing" + + "github.com/matrix-org/util" ) func TestWrapHandlerInBasicAuth(t *testing.T) { @@ -99,3 +101,68 @@ func TestWrapHandlerInBasicAuth(t *testing.T) { }) } } + +func TestMakeServiceAdminAPI(t *testing.T) { + serviceToken := "valid_secret_token" + type args struct { + f func(*http.Request) util.JSONResponse + serviceToken string + } + + f := func(*http.Request) util.JSONResponse { + return util.JSONResponse{Code: http.StatusOK} + } + + tests := []struct { + name string + args args + want int + reqAuth bool + }{ + { + name: "service token valid", + args: args{ + f: f, + serviceToken: serviceToken, + }, + want: http.StatusOK, + reqAuth: true, + }, + { + name: "service token invalid", + args: args{ + f: f, + serviceToken: "invalid_service_token", + }, + want: http.StatusForbidden, + reqAuth: true, + }, + { + name: "service token is missing", + args: args{ + f: f, + serviceToken: "", + }, + want: http.StatusUnauthorized, + reqAuth: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + handler := MakeServiceAdminAPI("metrics", serviceToken, tt.args.f) + + req := httptest.NewRequest("GET", "http://localhost/admin/v1/username_available", nil) + if tt.reqAuth { + req.Header.Add("Authorization", "Bearer "+tt.args.serviceToken) + } + + w := httptest.NewRecorder() + handler.ServeHTTP(w, req) + resp := w.Result() + + if resp.StatusCode != tt.want { + t.Errorf("Expected status code %d, got %d", resp.StatusCode, tt.want) + } + }) + } +}