github.com/web-platform-tests/wpt.fyi@v0.0.0-20240530210107-70cf978996f1/webapp/admin_handler_test.go (about) 1 // +build small 2 3 // Copyright 2018 The WPT Dashboard Project. All rights reserved. 4 // Use of this source code is governed by a BSD-style license that can be 5 // found in the LICENSE file. 6 7 package webapp 8 9 import ( 10 "errors" 11 "net/http" 12 "net/http/httptest" 13 "testing" 14 15 "github.com/golang/mock/gomock" 16 "github.com/stretchr/testify/assert" 17 18 "github.com/web-platform-tests/wpt.fyi/shared" 19 "github.com/web-platform-tests/wpt.fyi/shared/sharedtest" 20 ) 21 22 func TestCheckAdmin_not_logged_in(t *testing.T) { 23 resp := httptest.NewRecorder() 24 assert.False(t, checkAdmin(nil, shared.NewNilLogger(), resp)) 25 assert.Equal(t, http.StatusUnauthorized, resp.Code) 26 } 27 28 func TestCheckAdmin_not_admin(t *testing.T) { 29 mockCtrl := gomock.NewController(t) 30 defer mockCtrl.Finish() 31 32 mockACL := sharedtest.NewMockGitHubAccessControl(mockCtrl) 33 mockACL.EXPECT().IsValidAdmin().Return(false, nil) 34 35 resp := httptest.NewRecorder() 36 assert.False(t, checkAdmin(mockACL, shared.NewNilLogger(), resp)) 37 assert.Equal(t, http.StatusForbidden, resp.Code) 38 } 39 40 func TestCheckAdmin_error(t *testing.T) { 41 mockCtrl := gomock.NewController(t) 42 defer mockCtrl.Finish() 43 44 mockACL := sharedtest.NewMockGitHubAccessControl(mockCtrl) 45 mockACL.EXPECT().IsValidAdmin().Return(true, errors.New("error")) 46 47 resp := httptest.NewRecorder() 48 assert.False(t, checkAdmin(mockACL, shared.NewNilLogger(), resp)) 49 assert.Equal(t, http.StatusInternalServerError, resp.Code) 50 } 51 52 func TestCheckAdmin_admin(t *testing.T) { 53 mockCtrl := gomock.NewController(t) 54 defer mockCtrl.Finish() 55 56 mockACL := sharedtest.NewMockGitHubAccessControl(mockCtrl) 57 mockACL.EXPECT().IsValidAdmin().Return(true, nil) 58 59 resp := httptest.NewRecorder() 60 assert.True(t, checkAdmin(mockACL, shared.NewNilLogger(), resp)) 61 assert.Equal(t, http.StatusOK, resp.Code) 62 }