From b59b954d1fea5d554aa5d06db02514babd1fc09c Mon Sep 17 00:00:00 2001 From: graciousgrey Date: Wed, 26 Jul 2023 14:13:44 +0200 Subject: [PATCH] Tests: Add unit tests --- internal/entity/auth_user_test.go | 170 ++++++++++++++++++++++++++++-- 1 file changed, 162 insertions(+), 8 deletions(-) diff --git a/internal/entity/auth_user_test.go b/internal/entity/auth_user_test.go index 68e016a3e..cf0c44353 100644 --- a/internal/entity/auth_user_test.go +++ b/internal/entity/auth_user_test.go @@ -235,6 +235,33 @@ func TestUser_UpdateUsername(t *testing.T) { t.Logf("expected errror: %s", err) } }) + t.Run("Success", func(t *testing.T) { + var m = User{ + ID: 5000, + UserName: "", + UserRole: "user", + DisplayName: "Foo", + SuperAdmin: false, + CanLogin: true, + } + + err := m.Save() + + if err != nil { + t.Fatal(err) + } + + assert.Nil(t, FindUserByName("bar")) + + err2 := m.UpdateUsername("bar") + + if err2 != nil { + t.Fatal(err2) + } + + assert.NotNil(t, FindUserByName("bar")) + + }) } func TestUser_SetUsername(t *testing.T) { @@ -255,6 +282,15 @@ func TestUser_SetUsername(t *testing.T) { assert.Equal(t, "photoprism", m.Username()) assert.Equal(t, "photoprism", m.UserName) }) + t.Run("system users cannot be modified", func(t *testing.T) { + assert.Equal(t, "system users cannot be modified", Visitor.SetUsername("newname").Error()) + }) + t.Run("username is empty", func(t *testing.T) { + assert.Equal(t, "username is empty", Admin.SetUsername("").Error()) + }) + t.Run("same name", func(t *testing.T) { + assert.Nil(t, Admin.SetUsername("admin")) + }) } func TestUser_WrongPassword(t *testing.T) { @@ -931,13 +967,12 @@ func TestUser_CanLogIn(t *testing.T) { 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()) + unknown := UserFixtures.Get("unauthorized") + assert.False(t, unknown.CanLogIn()) + unknown.SetProvider(authn.ProviderLocal) + assert.False(t, unknown.CanLogIn()) + unknown.SetProvider(authn.ProviderNone) + assert.False(t, unknown.CanLogIn()) }) } @@ -963,6 +998,14 @@ func TestUser_CanUpload(t *testing.T) { assert.False(t, UserFixtures.Pointer("deleted").CanUpload()) assert.True(t, UserFixtures.Pointer("friend").CanUpload()) + + unknown := UserFixtures.Get("unauthorized") + assert.False(t, unknown.CanUpload()) + unknown.SetProvider(authn.ProviderLocal) + assert.False(t, unknown.CanUpload()) + unknown.SetProvider(authn.ProviderNone) + assert.False(t, unknown.CanUpload()) + } func TestUser_SharedUIDs(t *testing.T) { @@ -1319,12 +1362,25 @@ func TestUser_Username(t *testing.T) { func TestUser_Provider(t *testing.T) { t.Run("Visitor", func(t *testing.T) { assert.Equal(t, authn.ProviderLink, Visitor.Provider()) + Visitor.AuthProvider = "" + assert.Equal(t, authn.ProviderLink, Visitor.Provider()) + Visitor.SetProvider(authn.ProviderLink) }) t.Run("UnknownUser", func(t *testing.T) { assert.Equal(t, authn.ProviderNone, UnknownUser.Provider()) }) t.Run("Admin", func(t *testing.T) { assert.Equal(t, authn.ProviderLocal, Admin.Provider()) + Admin.AuthProvider = "" + assert.Equal(t, authn.ProviderLocal, Admin.Provider()) + Admin.SetProvider(authn.ProviderLocal) + }) + t.Run("Username empty", func(t *testing.T) { + user := NewUser() + user.ID = 500 + user.AuthProvider = "" + user.UserName = "test" + assert.Equal(t, authn.ProviderDefault, user.Provider()) }) } @@ -1354,6 +1410,7 @@ func TestUser_SetBasePath(t *testing.T) { CanInvite: false, } + assert.Equal(t, "", u.SetBasePath("./").GetBasePath()) assert.Equal(t, "base", u.SetBasePath("base").GetBasePath()) assert.Equal(t, "users/test", u.SetBasePath("~").GetBasePath()) assert.Equal(t, "users/test", u.DefaultBasePath()) @@ -1371,6 +1428,20 @@ func TestUser_GetUploadPath(t *testing.T) { t.Run("Admin", func(t *testing.T) { assert.Equal(t, "", Admin.GetUploadPath()) }) + t.Run("Use base path", func(t *testing.T) { + user := NewUser() + user.UserName = "test" + user.UploadPath = "./" + user.BasePath = "mybase" + assert.Equal(t, "mybase", user.GetUploadPath()) + }) + t.Run("Upload path includes base path", func(t *testing.T) { + user := NewUser() + user.UserName = "test" + user.UploadPath = "mybase/upload" + user.BasePath = "mybase" + assert.Equal(t, "mybase/upload", user.GetUploadPath()) + }) } func TestUser_SetUploadPath(t *testing.T) { @@ -1388,7 +1459,9 @@ func TestUser_SetUploadPath(t *testing.T) { } assert.Equal(t, "upload", u.SetUploadPath("upload").GetUploadPath()) - assert.Equal(t, "base/upload", u.SetBasePath("base").GetUploadPath()) + assert.Equal(t, "", u.SetUploadPath("./").GetUploadPath()) + assert.Equal(t, "users/test", u.SetUploadPath("~").GetUploadPath()) + assert.Equal(t, "base/users/test", u.SetBasePath("base").GetUploadPath()) assert.Equal(t, "base", u.SetUploadPath("~").GetUploadPath()) assert.Equal(t, "users/test", u.DefaultBasePath()) assert.Equal(t, "users/test", u.SetBasePath("~").GetUploadPath()) @@ -1454,6 +1527,26 @@ func TestUser_FullName(t *testing.T) { assert.Equal(t, "Jane Doe", u.FullName()) }) + t.Run("Name from Details", func(t *testing.T) { + u := User{ + ID: 1234567, + UserUID: "urqdrfb72479n047", + UserName: "mr-happy@cat.com", + UserRole: acl.RoleAdmin.String(), + DisplayName: "", + SuperAdmin: false, + CanLogin: true, + WebDAV: true, + CanInvite: false, + UserDetails: &UserDetails{ + GivenName: "John", + FamilyName: "Doe", + }, + } + + assert.Equal(t, "John Doe", u.FullName()) + + }) t.Run("Windows", func(t *testing.T) { u := User{ ID: 1234567, @@ -1472,3 +1565,64 @@ func TestUser_FullName(t *testing.T) { assert.Equal(t, "Jens Mander", u.FullName()) }) } + +func TestUser_Settings(t *testing.T) { + t.Run("return settings", func(t *testing.T) { + u := User{ + ID: 1234567, + UserUID: "urqdrfb72479n047", + UserName: "test", + UserRole: "user", + UserSettings: &UserSettings{ + UserUID: "", + UITheme: "vanta", + UILanguage: "de", + MapsStyle: "street", + IndexPath: "/photos", + }, + } + + assert.Equal(t, "de", u.Settings().UILanguage) + assert.Equal(t, "vanta", u.Settings().UITheme) + }) + t.Run("empty uid", func(t *testing.T) { + u := User{ + ID: 1234567, + UserUID: "", + UserName: "test", + UserRole: "user", + } + + assert.Equal(t, "", u.Settings().UILanguage) + assert.Equal(t, "", u.Settings().UITheme) + }) +} + +func TestUser_Details(t *testing.T) { + t.Run("return details", func(t *testing.T) { + u := User{ + ID: 1234567, + UserUID: "urqdrfb72479n047", + UserName: "test", + UserRole: "user", + UserDetails: &UserDetails{ + GivenName: "John", + FamilyName: "Doe", + }, + } + + assert.Equal(t, "John", u.Details().GivenName) + assert.Equal(t, "Doe", u.Details().FamilyName) + }) + t.Run("empty uid", func(t *testing.T) { + u := User{ + ID: 1234567, + UserUID: "", + UserName: "test", + UserRole: "user", + } + + assert.Equal(t, "", u.Details().GivenName) + assert.Equal(t, "", u.Details().FamilyName) + }) +}