92 lines
2.3 KiB
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)
|
|
}
|