Files
orchard/internal/controller/api_test.go
T
Nikolay Edigaryev 357a042937 REST API: provide error messages in error responses (#66)
* REST API: provide error messages in error responses

* Fix role checking logic and add tests

* Ignore testpackage linter error

* Rename NewError() to NewErrorResponse()
2023-03-27 14:12:03 -04:00

46 lines
1.4 KiB
Go

//nolint:testpackage // we need to have access for Controller for this test
package controller
import (
"github.com/cirruslabs/orchard/internal/responder"
v1pkg "github.com/cirruslabs/orchard/pkg/resource/v1"
"github.com/gin-gonic/gin"
"github.com/stretchr/testify/require"
"net/http"
"testing"
)
func TestAuthorizeInsecureAuthDisabled(t *testing.T) {
ctx := &gin.Context{}
controller := Controller{insecureAuthDisabled: true}
require.Nil(t, controller.authorize(ctx, v1pkg.ServiceAccountRoleAdminWrite))
}
func TestAuthorizeUnauthenticated(t *testing.T) {
ctx := &gin.Context{}
controller := Controller{}
require.Equal(t, responder.Code(http.StatusUnauthorized), controller.authorize(ctx))
}
func TestAuthorizeAuthenticatedNoRoles(t *testing.T) {
ctx := &gin.Context{}
ctx.Set(ctxServiceAccountKey, &v1pkg.ServiceAccount{})
controller := Controller{}
const requiredRole = v1pkg.ServiceAccountRoleAdminWrite
require.Equal(t, responder.JSON(http.StatusUnauthorized, NewErrorResponse("missing roles: %s", requiredRole)),
controller.authorize(ctx, requiredRole))
}
func TestAuthorizeAuthenticatedHasRoles(t *testing.T) {
ctx := &gin.Context{}
const requiredRole = v1pkg.ServiceAccountRoleAdminWrite
ctx.Set(ctxServiceAccountKey, &v1pkg.ServiceAccount{Roles: []v1pkg.ServiceAccountRole{requiredRole}})
controller := Controller{}
require.Nil(t, controller.authorize(ctx, requiredRole))
}