// Package that provides the logic of the webserver package http import ( "errors" "net/http" "net/http/httptest" "testing" "github.com/stretchr/testify/assert" ) // Function to test the permission and it's error handling func TestPermission(t *testing.T) { assert := assert.New(t) w := httptest.NewRecorder() r, _ := http.NewRequest("GET", "/", nil) // HasPermission responds true reached := false PermissionHandler(func(w http.ResponseWriter, r *http.Request) { reached = true }, func(s string, i int) (bool, error) { return true, nil }, 1)(w, r) assert.True(reached) // HasPermission responds false reached = false PermissionHandler(func(w http.ResponseWriter, r *http.Request) { reached = true }, func(s string, i int) (bool, error) { return false, nil }, 1)(w, r) assert.False(reached) // HasPermission responds error reached = false PermissionHandler(func(w http.ResponseWriter, r *http.Request) { reached = true }, func(s string, i int) (bool, error) { return false, errors.New("text") }, 1)(w, r) assert.False(reached) }