From ff25b5f755dbff95513323722573daa6a87a016f Mon Sep 17 00:00:00 2001 From: graciousgrey Date: Tue, 25 Jul 2023 18:42:18 +0200 Subject: [PATCH] Tests: Add unit tests --- internal/entity/auth_user_test.go | 116 +++++++++++++++++++++++++----- 1 file changed, 97 insertions(+), 19 deletions(-) diff --git a/internal/entity/auth_user_test.go b/internal/entity/auth_user_test.go index b1c696bbe..68e016a3e 100644 --- a/internal/entity/auth_user_test.go +++ b/internal/entity/auth_user_test.go @@ -2,6 +2,7 @@ package entity import ( "testing" + "time" "github.com/stretchr/testify/assert" @@ -18,6 +19,11 @@ func TestNewUser(t *testing.T) { assert.True(t, rnd.IsUID(m.UserUID, UserUID)) } +func TestLdapUser(t *testing.T) { + m := LdapUser("user-ldap", "ldap@test.com") + assert.Equal(t, "ldap", m.AuthProvider) +} + func TestFindLocalUser(t *testing.T) { t.Run("Admin", func(t *testing.T) { m := FindLocalUser("admin") @@ -493,6 +499,36 @@ func TestFindUserByUID(t *testing.T) { }) } +func TestUser_SameUID(t *testing.T) { + t.Run("True", func(t *testing.T) { + m := FindUserByUID("uqxc08w3d0ej2283") + + if m == nil { + t.Fatal("result should not be nil") + } + + assert.True(t, m.SameUID("uqxc08w3d0ej2283")) + }) + t.Run("False", func(t *testing.T) { + m := FindUserByUID("uqxc08w3d0ej2283") + + if m == nil { + t.Fatal("result should not be nil") + } + + assert.False(t, m.SameUID("uqxc08w3d0ej2276")) + }) + t.Run("Invalid", func(t *testing.T) { + m := FindUserByUID("uqxc08w3d0ej2283") + + if m == nil { + t.Fatal("result should not be nil") + } + + assert.False(t, m.SameUID("xxx")) + }) +} + func TestUser_String(t *testing.T) { t.Run("UID", func(t *testing.T) { p := User{UserUID: "abc123", UserName: "", DisplayName: ""} @@ -819,6 +855,14 @@ func TestDeleteUser(t *testing.T) { UserRole: acl.RoleUnknown.String(), } + err := u.Delete() + assert.Error(t, err) + }) + t.Run("Empty UID", func(t *testing.T) { + u := NewUser() + u.UserUID = "" + u.ID = 500 + err := u.Delete() assert.Error(t, err) }) @@ -830,8 +874,17 @@ func TestUser_Deleted(t *testing.T) { } func TestUser_Expired(t *testing.T) { - assert.False(t, UserFixtures.Pointer("alice").Expired()) - assert.False(t, UserFixtures.Pointer("deleted").Expired()) + t.Run("False", func(t *testing.T) { + assert.False(t, UserFixtures.Pointer("alice").Expired()) + assert.False(t, UserFixtures.Pointer("deleted").Expired()) + }) + t.Run("True", func(t *testing.T) { + u := NewUser() + var expired = time.Date(2020, 3, 6, 2, 6, 51, 0, time.UTC) + u.ExpiresAt = &expired + + assert.True(t, u.Expired()) + }) } func TestUser_Disabled(t *testing.T) { @@ -840,27 +893,52 @@ func TestUser_Disabled(t *testing.T) { } func TestUser_UpdateLoginTime(t *testing.T) { - alice := UserFixtures.Get("alice") - time1 := alice.LoginAt - assert.Nil(t, time1) - alice.UpdateLoginTime() - time2 := alice.LoginAt - assert.NotNil(t, time2) - alice.UpdateLoginTime() - time3 := alice.LoginAt - assert.NotNil(t, time3) - assert.True(t, time3.After(*time2) || time3.Equal(*time2)) + t.Run("Success", func(t *testing.T) { + alice := UserFixtures.Get("alice") + time1 := alice.LoginAt + assert.Nil(t, time1) + alice.UpdateLoginTime() + time2 := alice.LoginAt + assert.NotNil(t, time2) + alice.UpdateLoginTime() + time3 := alice.LoginAt + assert.NotNil(t, time3) + assert.True(t, time3.After(*time2) || time3.Equal(*time2)) + }) + t.Run("User deleted", func(t *testing.T) { + u := NewUser() + var deleted = time.Date(2020, 3, 6, 2, 6, 51, 0, time.UTC) + u.DeletedAt = &deleted + assert.Nil(t, u.UpdateLoginTime()) + }) } func TestUser_CanLogIn(t *testing.T) { - alice := UserFixtures.Get("alice") - assert.True(t, alice.CanLogIn()) - alice.SetProvider(authn.ProviderNone) - assert.False(t, alice.CanLogIn()) - alice.SetProvider(authn.ProviderLocal) - assert.True(t, alice.CanLogIn()) + t.Run("True", func(t *testing.T) { + alice := UserFixtures.Get("alice") + assert.True(t, alice.CanLogIn()) + alice.SetProvider(authn.ProviderNone) + assert.False(t, alice.CanLogIn()) + alice.SetProvider(authn.ProviderLocal) + assert.True(t, alice.CanLogIn()) - assert.False(t, UserFixtures.Pointer("deleted").CanLogIn()) + assert.False(t, UserFixtures.Pointer("deleted").CanLogIn()) + }) + t.Run("False - !canlogin", func(t *testing.T) { + u := NewUser() + u.AuthProvider = "local" + u.CanLogin = false + assert.False(t, u.CanLogIn()) + }) + t.Run("False - unknown role", func(t *testing.T) { + u := NewUser() + u.AuthProvider = "local" + u.CanLogin = true + u.ID = 500 + u.UserName = "Unknown" + u.UserRole = "" + assert.False(t, u.CanLogIn()) + }) } func TestUser_CanUseWebDAV(t *testing.T) {