From 5e94686a0d205eed3e67b10cdd059cd3171e8bbf Mon Sep 17 00:00:00 2001 From: graciousgrey Date: Tue, 16 Jul 2024 17:29:26 +0200 Subject: [PATCH] Tests: Add unit tests --- internal/entity/auth_user_test.go | 51 ++++++++++++++++++++++++++----- pkg/authn/grants_test.go | 3 ++ pkg/authn/methods_test.go | 6 ++++ pkg/clean/auth_test.go | 12 ++++++++ pkg/rnd/uuid_test.go | 8 +++++ 5 files changed, 73 insertions(+), 7 deletions(-) diff --git a/internal/entity/auth_user_test.go b/internal/entity/auth_user_test.go index ebfb29777..b319a06c0 100644 --- a/internal/entity/auth_user_test.go +++ b/internal/entity/auth_user_test.go @@ -486,6 +486,32 @@ func TestFindUser(t *testing.T) { assert.NotEmpty(t, m.CreatedAt) assert.NotEmpty(t, m.UpdatedAt) }) + t.Run("OIDCUser", func(t *testing.T) { + info := &oidc.UserInfo{} + info.Name = "Jane Doe" + info.Email = "jane@doe.com" + info.EmailVerified = true + info.Subject = "e3a9f4a6-9d60-47cb-9bf5-02bd15b0c888" + info.PreferredUsername = "Jane Doe" + + u := OidcUser(info, "", "jane.doe") + + err := u.Save() + + if err != nil { + t.Fatal(err) + } + + m := FindUser(User{UserUID: u.UserUID}) + + if m == nil { + t.Fatal("result should not be nil") + } + + assert.NotEmpty(t, m.UserUID) + assert.Equal(t, "jane.doe", m.UserName) + assert.Equal(t, "oidc", m.AuthProvider) + }) t.Run("UserName", func(t *testing.T) { m := FindUser(User{UserName: "admin"}) @@ -733,11 +759,11 @@ func TestUser_SetPassword(t *testing.T) { }) } -func TestUser_InitLogin(t *testing.T) { +func TestUser_InitAccount(t *testing.T) { t.Run("Ok", func(t *testing.T) { - p := User{UserUID: "u000000000000009", UserName: "Hanna", DisplayName: ""} + p := User{UserUID: "u000000000000009", UserName: "Hanna", DisplayName: "", CanLogin: true} assert.Nil(t, FindPassword("u000000000000009")) - p.InitAccount("admin", "insecure") + assert.True(t, p.InitAccount("admin", "insecure")) m := FindPassword("u000000000000009") if m == nil { @@ -756,7 +782,7 @@ func TestUser_InitLogin(t *testing.T) { } assert.NotNil(t, FindPassword("u000000000000010")) - p.InitAccount("admin", "insecure") + assert.False(t, p.InitAccount("admin", "insecure")) m := FindPassword("u000000000000010") if m == nil { @@ -766,13 +792,13 @@ func TestUser_InitLogin(t *testing.T) { t.Run("NotRegistered", func(t *testing.T) { p := User{UserUID: "u12", UserName: "", DisplayName: ""} assert.Nil(t, FindPassword("u12")) - p.InitAccount("admin", "insecure") + assert.False(t, p.InitAccount("admin", "insecure")) assert.Nil(t, FindPassword("u12")) }) t.Run("EmptyPassword", func(t *testing.T) { p := User{UserUID: "u000000000000011", UserName: "User", DisplayName: ""} assert.Nil(t, FindPassword("u000000000000011")) - p.InitAccount("admin", "") + assert.False(t, p.InitAccount("admin", "")) assert.Nil(t, FindPassword("u000000000000011")) }) } @@ -1665,10 +1691,21 @@ func TestUser_UpdateAuthID(t *testing.T) { m.SetAuthID(id, issuer) assert.Equal(t, id, m.AuthID) assert.Equal(t, issuer, m.AuthIssuer) - m.SetAuthID(id, "") + err := m.UpdateAuthID(id, "") + assert.NoError(t, err) assert.Equal(t, id, m.AuthID) assert.Equal(t, "", m.AuthIssuer) }) + t.Run("InvalidUUID", func(t *testing.T) { + m := User{UserUID: "123"} + + assert.Equal(t, "", m.AuthIssuer) + m.SetAuthID(id, issuer) + assert.Equal(t, id, m.AuthID) + assert.Equal(t, issuer, m.AuthIssuer) + err := m.UpdateAuthID(id, "") + assert.Error(t, err) + }) } func TestUser_AuthInfo(t *testing.T) { diff --git a/pkg/authn/grants_test.go b/pkg/authn/grants_test.go index 9d85db8ac..eaae74863 100644 --- a/pkg/authn/grants_test.go +++ b/pkg/authn/grants_test.go @@ -62,6 +62,9 @@ func TestGrantType_Pretty(t *testing.T) { assert.Equal(t, "Authorization Code", GrantAuthorizationCode.Pretty()) assert.Equal(t, "JWT Bearer Assertion", GrantJwtBearer.Pretty()) assert.Equal(t, "SAML2 Bearer Assertion", GrantSamlBearer.Pretty()) + assert.Equal(t, "Share Token", GrantShareToken.Pretty()) + assert.Equal(t, "Token Exchange", GrantTokenExchange.Pretty()) + assert.Equal(t, "Implicit", GrantImplicit.Pretty()) } func TestGrantType_Equal(t *testing.T) { diff --git a/pkg/authn/methods_test.go b/pkg/authn/methods_test.go index dd3861d4f..53dce297e 100644 --- a/pkg/authn/methods_test.go +++ b/pkg/authn/methods_test.go @@ -69,6 +69,12 @@ func TestMethod(t *testing.T) { assert.Equal(t, Method2FA, Method("2FA")) } +func TestMethods(t *testing.T) { + types := Methods("oauth2, totp") + assert.Equal(t, MethodOAuth2, types[0]) + assert.Equal(t, Method2FA, types[1]) +} + func TestMethodType_IsSession(t *testing.T) { assert.True(t, MethodSession.IsSession()) assert.False(t, Method2FA.IsSession()) diff --git a/pkg/clean/auth_test.go b/pkg/clean/auth_test.go index 57cc83a2a..f0f3e3c61 100644 --- a/pkg/clean/auth_test.go +++ b/pkg/clean/auth_test.go @@ -37,6 +37,12 @@ func TestAuth(t *testing.T) { "a34fd47a7ecd9967a89330a3f92cb55513d5eca79b6c4999dc910818c29d5b9925a3a04ed91a4e57a2c25cbfdab3a751bb8d7f3635092b9242d154f389d9700aa34fd47a7ecd9967a89330a3f92cb55513d5eca79b6c4999dc910818c29d5b9925a3a04ed91a4e57a2c25cbfdab3a751bb8d7f3635092b9242d154f389d9700", Auth("a34fd47a7ecd9967a89330a3f92cb55513d5eca79b6c4999dc910818c29d5b9925a3a04ed91a4e57a2c25cbfdab3a751bb8d7f3635092b9242d154f389d9700aa34fd47a7ecd9967a89330a3f92cb55513d5eca79b6c4999dc910818c29d5b9925a3a04ed91a4e57a2c25cbfdab3a751bb8d7f3635092b9242d154f389d9700a")) }) + t.Run("Empty", func(t *testing.T) { + assert.Equal(t, "", Auth("")) + }) + t.Run("Tet", func(t *testing.T) { + assert.Equal(t, "Test", Auth("Tet")) + }) } func TestHandle(t *testing.T) { @@ -195,4 +201,10 @@ func TestPasscode(t *testing.T) { t.Run("Special", func(t *testing.T) { assert.Equal(t, "tiji", Passcode("!#$T#)$%I#J$I")) }) + t.Run("Empty", func(t *testing.T) { + assert.Equal(t, "", Passcode("")) + }) + t.Run("Space", func(t *testing.T) { + assert.Equal(t, "", Passcode(" ")) + }) } diff --git a/pkg/rnd/uuid_test.go b/pkg/rnd/uuid_test.go index ab420dace..580e2bf0b 100644 --- a/pkg/rnd/uuid_test.go +++ b/pkg/rnd/uuid_test.go @@ -19,3 +19,11 @@ func BenchmarkUUID(b *testing.B) { UUID() } } + +func TestState(t *testing.T) { + for n := 0; n < 5; n++ { + s := State() + t.Logf("UUID %d: %s", n, s) + assert.Equal(t, 36, len(s)) + } +}