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) }