Files
server/auth/util_test.go
2026-04-19 19:22:30 +02:00

77 lines
2.1 KiB
Go

package auth
import (
"net/http/httptest"
"testing"
"github.com/gin-gonic/gin"
"github.com/gotify/server/v2/mode"
"github.com/gotify/server/v2/model"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/suite"
)
func TestUtilSuite(t *testing.T) {
suite.Run(t, new(UtilSuite))
}
type UtilSuite struct {
suite.Suite
}
func (s *UtilSuite) BeforeTest(suiteName, testName string) {
mode.Set(mode.TestDev)
}
func (s *UtilSuite) Test_getUserID() {
s.expectUserID(func(ctx *gin.Context) { RegisterUser(ctx, &model.User{ID: 2}) }, 2)
s.expectUserID(func(ctx *gin.Context) { RegisterClient(ctx, &model.Client{UserID: 5}) }, 5)
s.expectUserID(func(ctx *gin.Context) { RegisterApplication(ctx, &model.Application{UserID: 7}) }, 7)
assert.Panics(s.T(), func() {
s.expectUserID(func(ctx *gin.Context) {}, 0)
})
s.expectTryUserID(func(ctx *gin.Context) {}, nil)
}
func (s *UtilSuite) Test_GetApplication() {
app := &model.Application{Token: "atoken"}
ctx, _ := gin.CreateTestContext(httptest.NewRecorder())
RegisterApplication(ctx, app)
assert.Same(s.T(), app, GetApplication(ctx))
ctx, _ = gin.CreateTestContext(httptest.NewRecorder())
RegisterUser(ctx, &model.User{ID: 1})
assert.Nil(s.T(), GetApplication(ctx))
ctx, _ = gin.CreateTestContext(httptest.NewRecorder())
assert.Nil(s.T(), GetApplication(ctx))
}
func (s *UtilSuite) Test_GetClient() {
client := &model.Client{Token: "ctoken"}
ctx, _ := gin.CreateTestContext(httptest.NewRecorder())
RegisterClient(ctx, client)
assert.Same(s.T(), client, GetClient(ctx))
ctx, _ = gin.CreateTestContext(httptest.NewRecorder())
RegisterUser(ctx, &model.User{ID: 1})
assert.Nil(s.T(), GetClient(ctx))
ctx, _ = gin.CreateTestContext(httptest.NewRecorder())
assert.Nil(s.T(), GetClient(ctx))
}
func (s *UtilSuite) expectUserID(register func(*gin.Context), expectedID uint) {
ctx, _ := gin.CreateTestContext(httptest.NewRecorder())
register(ctx)
assert.Equal(s.T(), expectedID, GetUserID(ctx))
}
func (s *UtilSuite) expectTryUserID(register func(*gin.Context), expectedID *uint) {
ctx, _ := gin.CreateTestContext(httptest.NewRecorder())
register(ctx)
assert.Equal(s.T(), expectedID, TryGetUserID(ctx))
}