v4/auth/authmiddleware/must_test.go

92 lines
2.3 KiB
Go

package authmiddleware_test
import (
"testing"
"git.sapphic.engineer/roleypoly/v4/auth/authmiddleware"
"git.sapphic.engineer/roleypoly/v4/discord/clientmock"
"git.sapphic.engineer/roleypoly/v4/types"
"git.sapphic.engineer/roleypoly/v4/types/fixtures"
"github.com/stretchr/testify/assert"
)
func TestMustAnonymous(t *testing.T) {
dc := clientmock.NewDiscordClientMock()
app := getApp(dc)
cookie, err := setSession(app, dc, authmiddleware.Session{
Permissions: authmiddleware.PermAnonymous,
}, nil)
assert.Nil(t, err)
err = get(t, app, cookie, "/must/user")
assert.ErrorIs(t, err, errUnauthorized)
err = get(t, app, cookie, "/must/support")
assert.ErrorIs(t, err, errUnauthorized)
err = get(t, app, cookie, "/must/superuser")
assert.ErrorIs(t, err, errUnauthorized)
}
func TestMustUser(t *testing.T) {
dc := clientmock.NewDiscordClientMock()
app := getApp(dc)
user := fixtures.User
mockUser(dc, &user)
cookie, err := setSession(app, dc, authmiddleware.Session{
User: &user,
AccessToken: "access-token",
}, nil)
assert.Nil(t, err)
err = get(t, app, cookie, "/must/user")
assert.Nil(t, err)
err = get(t, app, cookie, "/must/support")
assert.ErrorIs(t, err, errUnauthorized)
err = get(t, app, cookie, "/must/superuser")
assert.ErrorIs(t, err, errUnauthorized)
}
func TestMustSupport(t *testing.T) {
dc := clientmock.NewDiscordClientMock()
app := getApp(dc)
user := &types.DiscordUser{
ID: "support-user",
}
mockUser(dc, user)
cookie, err := setSession(app, dc, authmiddleware.Session{
User: user,
AccessToken: "access-token",
}, nil)
assert.Nil(t, err)
err = get(t, app, cookie, "/must/user")
assert.Nil(t, err)
err = get(t, app, cookie, "/must/support")
assert.Nil(t, err)
err = get(t, app, cookie, "/must/superuser")
assert.ErrorIs(t, err, errUnauthorized)
}
func TestMustSupuruser(t *testing.T) {
dc := clientmock.NewDiscordClientMock()
app := getApp(dc)
user := &types.DiscordUser{
ID: "superuser-user",
}
mockUser(dc, user)
cookie, err := setSession(app, dc, authmiddleware.Session{
User: user,
AccessToken: "access-token",
}, nil)
assert.Nil(t, err)
err = get(t, app, cookie, "/must/user")
assert.Nil(t, err)
err = get(t, app, cookie, "/must/support")
assert.Nil(t, err)
err = get(t, app, cookie, "/must/superuser")
assert.Nil(t, err)
}