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  }