diff --git a/internal/users/cache/db.go b/internal/users/cache/db.go index ba4ecc980..c2a3a974d 100644 --- a/internal/users/cache/db.go +++ b/internal/users/cache/db.go @@ -108,7 +108,7 @@ func New(cacheDir string) (cache *Cache, err error) { cache = &Cache{db: db, mu: sync.RWMutex{}} - if err = maybeMigrateLowercaseUsernames(cache); err != nil { + if err = maybeMigrateToLowercaseUserAndGroupNames(cache); err != nil { log.Warningf(context.Background(), "Error migrating database to lowercase usernames: %v", err) } else { // Store the current version in the database diff --git a/internal/users/cache/db_test.go b/internal/users/cache/db_test.go index 2ec5d363e..e3e7e5419 100644 --- a/internal/users/cache/db_test.go +++ b/internal/users/cache/db_test.go @@ -25,11 +25,11 @@ func TestNew(t *testing.T) { wantErr bool }{ - "New without any initialized database": {}, - "New with already existing database": {dbFile: "multiple_users_and_groups"}, - "New recreates any missing buckets and delete unknowns": {dbFile: "database_with_unknown_bucket"}, - "New removes orphaned user records from UserByID bucket": {dbFile: "orphaned_user_record"}, - "New migrates database to lowercase usernames": {dbFile: "one_user_and_group_with_uppercase"}, + "New without any initialized database": {}, + "New with already existing database": {dbFile: "multiple_users_and_groups"}, + "New recreates any missing buckets and delete unknowns": {dbFile: "database_with_unknown_bucket"}, + "New removes orphaned user records from UserByID bucket": {dbFile: "orphaned_user_record"}, + "New migrates database to lowercase user and group names": {dbFile: "one_user_and_group_with_uppercase"}, "Error on cacheDir non existent cacheDir": {dbFile: "-", wantErr: true}, "Error on corrupted db file": {corruptedDbFile: true, wantErr: true}, diff --git a/internal/users/cache/getgroups.go b/internal/users/cache/getgroups.go index ec394a641..7e7fdd481 100644 --- a/internal/users/cache/getgroups.go +++ b/internal/users/cache/getgroups.go @@ -3,6 +3,7 @@ package cache import ( "encoding/json" "fmt" + "strings" "go.etcd.io/bbolt" ) @@ -30,6 +31,8 @@ func (c *Cache) GroupByID(gid uint32) (GroupDB, error) { // GroupByName returns a group matching a given name or an error if the database is corrupted or no entry was found. func (c *Cache) GroupByName(name string) (GroupDB, error) { + // authd uses lowercase group names + name = strings.ToLower(name) return getGroup(c, groupByNameBucketName, name) } diff --git a/internal/users/cache/migration.go b/internal/users/cache/migration.go index 40ff22ae7..72d0dc302 100644 --- a/internal/users/cache/migration.go +++ b/internal/users/cache/migration.go @@ -11,9 +11,9 @@ import ( "golang.org/x/mod/semver" ) -const initialLowercaseUsernameVersion = "0.3.8" +const initialLowercaseUserAndGroupNamesVersion = "0.3.8" -func maybeMigrateLowercaseUsernames(c *Cache) error { +func maybeMigrateToLowercaseUserAndGroupNames(c *Cache) error { // Get the current version. version, err := c.GetVersion() if err != nil { @@ -27,9 +27,8 @@ func maybeMigrateLowercaseUsernames(c *Cache) error { // If the version is less than 0.3.8-pre1, we need to migrate lowercase usernames. // Use semantic versioning to compare versions. - if version == "" || semver.Compare(version, initialLowercaseUsernameVersion) < 0 { - // Migrate lowercase usernames. - if err := migrateLowercaseUsernames(c); err != nil { + if version == "" || semver.Compare(version, initialLowercaseUserAndGroupNamesVersion) < 0 { + if err := migrateToLowercaseUserAndGroupNames(c); err != nil { return err } } @@ -37,7 +36,7 @@ func maybeMigrateLowercaseUsernames(c *Cache) error { return nil } -func migrateLowercaseUsernames(c *Cache) error { +func migrateToLowercaseUserAndGroupNames(c *Cache) error { log.Debug(context.Background(), "Migrating lowercase usernames") // Convert the user and group names to lowercase in all user and group buckets. @@ -84,6 +83,45 @@ func migrateLowercaseUsernames(c *Cache) error { return err } + err = buckets[groupByNameBucketName].ForEach(func(k, v []byte) error { + var grp GroupDB + if err := json.Unmarshal(v, &grp); err != nil { + return err + } + + grp.Name = strings.ToLower(grp.Name) + + err = buckets[groupByNameBucketName].Delete(k) + if err != nil { + return err + } + + updateBucket(buckets[groupByNameBucketName], grp.Name, grp) + + return nil + }) + if err != nil { + return err + } + + for _, bucket := range []bucketWithName{buckets[groupByIDBucketName], buckets[groupByUGIDBucketName]} { + err = bucket.ForEach(func(k, v []byte) error { + var grp GroupDB + if err := json.Unmarshal(v, &grp); err != nil { + return err + } + + grp.Name = strings.ToLower(grp.Name) + + updateBucket(bucket, string(k), grp) + + return nil + }) + if err != nil { + return err + } + } + return nil }) } diff --git a/internal/users/cache/testdata/golden/TestDeleteUser/Delete_existing_user_keeping_other_users_intact b/internal/users/cache/testdata/golden/TestDeleteUser/Delete_existing_user_keeping_other_users_intact index b34a4a052..3906f360d 100644 --- a/internal/users/cache/testdata/golden/TestDeleteUser/Delete_existing_user_keeping_other_users_intact +++ b/internal/users/cache/testdata/golden/TestDeleteUser/Delete_existing_user_keeping_other_users_intact @@ -1,18 +1,18 @@ GroupByID: - "22222": '{"Name":"group2","GID":22222,"UGID":"56781234"}' - "33333": '{"Name":"group3","GID":33333,"UGID":"34567812"}' - "44444": '{"Name":"group4","GID":44444,"UGID":"45678123"}' - "99999": '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' + "22222": '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' + "33333": '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + "44444": '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' + "99999": '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' GroupByName: - commongroup: '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' - group2: '{"Name":"group2","GID":22222,"UGID":"56781234"}' - group3: '{"Name":"group3","GID":33333,"UGID":"34567812"}' - group4: '{"Name":"group4","GID":44444,"UGID":"45678123"}' + commongroup: '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' + group2: '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' + group3: '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + group4: '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' GroupByUGID: - "34567812": '{"Name":"group3","GID":33333,"UGID":"34567812"}' - "45678123": '{"Name":"group4","GID":44444,"UGID":"45678123"}' - "56781234": '{"Name":"group2","GID":22222,"UGID":"56781234"}' - "87654321": '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' + "34567812": '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + "45678123": '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' + "56781234": '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' + "87654321": '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' GroupToUsers: "22222": '{"GID":22222,"UIDs":[2222]}' "33333": '{"GID":33333,"UIDs":[3333]}' diff --git a/internal/users/cache/testdata/golden/TestNew/New_migrates_database_to_lowercase_usernames b/internal/users/cache/testdata/golden/TestNew/New_migrates_database_to_lowercase_user_and_group_names similarity index 76% rename from internal/users/cache/testdata/golden/TestNew/New_migrates_database_to_lowercase_usernames rename to internal/users/cache/testdata/golden/TestNew/New_migrates_database_to_lowercase_user_and_group_names index d2b0b4ac1..e064a1798 100644 --- a/internal/users/cache/testdata/golden/TestNew/New_migrates_database_to_lowercase_usernames +++ b/internal/users/cache/testdata/golden/TestNew/New_migrates_database_to_lowercase_user_and_group_names @@ -1,9 +1,9 @@ GroupByID: - "11111": '{"Name":"Group1","GID":11111,"UGID":"12345678"}' + "11111": '{"Name":"group1","GID":11111,"UGID":"12345678","Users":null}' GroupByName: - Group1: '{"Name":"Group1","GID":11111,"UGID":"12345678"}' + group1: '{"Name":"group1","GID":11111,"UGID":"12345678","Users":null}' GroupByUGID: - "12345678": '{"Name":"Group1","GID":11111,"UGID":"12345678"}' + "12345678": '{"Name":"group1","GID":11111,"UGID":"12345678","Users":null}' GroupToUsers: "11111": '{"GID":11111,"UIDs":[1111]}' UserByID: diff --git a/internal/users/cache/testdata/golden/TestNew/New_with_already_existing_database b/internal/users/cache/testdata/golden/TestNew/New_with_already_existing_database index 5ae4a40f2..66f98ec24 100644 --- a/internal/users/cache/testdata/golden/TestNew/New_with_already_existing_database +++ b/internal/users/cache/testdata/golden/TestNew/New_with_already_existing_database @@ -1,21 +1,21 @@ GroupByID: - "11111": '{"Name":"group1","GID":11111,"UGID":"12345678"}' - "22222": '{"Name":"group2","GID":22222,"UGID":"56781234"}' - "33333": '{"Name":"group3","GID":33333,"UGID":"34567812"}' - "44444": '{"Name":"group4","GID":44444,"UGID":"45678123"}' - "99999": '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' + "11111": '{"Name":"group1","GID":11111,"UGID":"12345678","Users":null}' + "22222": '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' + "33333": '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + "44444": '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' + "99999": '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' GroupByName: - commongroup: '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' - group1: '{"Name":"group1","GID":11111,"UGID":"12345678"}' - group2: '{"Name":"group2","GID":22222,"UGID":"56781234"}' - group3: '{"Name":"group3","GID":33333,"UGID":"34567812"}' - group4: '{"Name":"group4","GID":44444,"UGID":"45678123"}' + commongroup: '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' + group1: '{"Name":"group1","GID":11111,"UGID":"12345678","Users":null}' + group2: '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' + group3: '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + group4: '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' GroupByUGID: - "12345678": '{"Name":"group1","GID":11111,"UGID":"12345678"}' - "34567812": '{"Name":"group3","GID":33333,"UGID":"34567812"}' - "45678123": '{"Name":"group4","GID":44444,"UGID":"45678123"}' - "56781234": '{"Name":"group2","GID":22222,"UGID":"56781234"}' - "87654321": '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' + "12345678": '{"Name":"group1","GID":11111,"UGID":"12345678","Users":null}' + "34567812": '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + "45678123": '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' + "56781234": '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' + "87654321": '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' GroupToUsers: "11111": '{"GID":11111,"UIDs":[1111]}' "22222": '{"GID":22222,"UIDs":[2222]}' diff --git a/internal/users/cache/testdata/golden/TestUpdateUserEntry/Add_user_to_group_from_another_user b/internal/users/cache/testdata/golden/TestUpdateUserEntry/Add_user_to_group_from_another_user index 9d32baa54..05a417217 100644 --- a/internal/users/cache/testdata/golden/TestUpdateUserEntry/Add_user_to_group_from_another_user +++ b/internal/users/cache/testdata/golden/TestUpdateUserEntry/Add_user_to_group_from_another_user @@ -1,21 +1,21 @@ GroupByID: "11111": '{"Name":"group1","GID":11111,"UGID":"12345678"}' "22222": '{"Name":"group2","GID":22222,"UGID":"56781234"}' - "33333": '{"Name":"group3","GID":33333,"UGID":"34567812"}' - "44444": '{"Name":"group4","GID":44444,"UGID":"45678123"}' - "99999": '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' + "33333": '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + "44444": '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' + "99999": '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' GroupByName: - commongroup: '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' + commongroup: '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' group1: '{"Name":"group1","GID":11111,"UGID":"12345678"}' group2: '{"Name":"group2","GID":22222,"UGID":"56781234"}' - group3: '{"Name":"group3","GID":33333,"UGID":"34567812"}' - group4: '{"Name":"group4","GID":44444,"UGID":"45678123"}' + group3: '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + group4: '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' GroupByUGID: "12345678": '{"Name":"group1","GID":11111,"UGID":"12345678"}' - "34567812": '{"Name":"group3","GID":33333,"UGID":"34567812"}' - "45678123": '{"Name":"group4","GID":44444,"UGID":"45678123"}' + "34567812": '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + "45678123": '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' "56781234": '{"Name":"group2","GID":22222,"UGID":"56781234"}' - "87654321": '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' + "87654321": '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' GroupToUsers: "11111": '{"GID":11111,"UIDs":[1111]}' "22222": '{"GID":22222,"UIDs":[2222,1111]}' diff --git a/internal/users/cache/testdata/golden/TestUpdateUserEntry/Invalid_value_entry_in_groupByName_recreates_entries b/internal/users/cache/testdata/golden/TestUpdateUserEntry/Invalid_value_entry_in_groupByName_recreates_entries index 9e02c17f9..dd7a81290 100644 --- a/internal/users/cache/testdata/golden/TestUpdateUserEntry/Invalid_value_entry_in_groupByName_recreates_entries +++ b/internal/users/cache/testdata/golden/TestUpdateUserEntry/Invalid_value_entry_in_groupByName_recreates_entries @@ -16,5 +16,4 @@ UserToGroups: "1111": '{"UID":1111,"GIDs":[11111]}' UserToLocalGroups: "1111": "null" -Version: - version: Dev +Version: {} diff --git a/internal/users/cache/testdata/golden/TestUpdateUserEntry/Remove_user_from_a_group_still_part_from_another_user b/internal/users/cache/testdata/golden/TestUpdateUserEntry/Remove_user_from_a_group_still_part_from_another_user index 394016c18..2de480940 100644 --- a/internal/users/cache/testdata/golden/TestUpdateUserEntry/Remove_user_from_a_group_still_part_from_another_user +++ b/internal/users/cache/testdata/golden/TestUpdateUserEntry/Remove_user_from_a_group_still_part_from_another_user @@ -1,21 +1,21 @@ GroupByID: - "11111": '{"Name":"group1","GID":11111,"UGID":"12345678"}' - "22222": '{"Name":"group2","GID":22222,"UGID":"56781234"}' + "11111": '{"Name":"group1","GID":11111,"UGID":"12345678","Users":null}' + "22222": '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' "33333": '{"Name":"group3","GID":33333,"UGID":"34567812"}' - "44444": '{"Name":"group4","GID":44444,"UGID":"45678123"}' - "99999": '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' + "44444": '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' + "99999": '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' GroupByName: - commongroup: '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' - group1: '{"Name":"group1","GID":11111,"UGID":"12345678"}' - group2: '{"Name":"group2","GID":22222,"UGID":"56781234"}' + commongroup: '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' + group1: '{"Name":"group1","GID":11111,"UGID":"12345678","Users":null}' + group2: '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' group3: '{"Name":"group3","GID":33333,"UGID":"34567812"}' - group4: '{"Name":"group4","GID":44444,"UGID":"45678123"}' + group4: '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' GroupByUGID: - "12345678": '{"Name":"group1","GID":11111,"UGID":"12345678"}' + "12345678": '{"Name":"group1","GID":11111,"UGID":"12345678","Users":null}' "34567812": '{"Name":"group3","GID":33333,"UGID":"34567812"}' - "45678123": '{"Name":"group4","GID":44444,"UGID":"45678123"}' - "56781234": '{"Name":"group2","GID":22222,"UGID":"56781234"}' - "87654321": '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' + "45678123": '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' + "56781234": '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' + "87654321": '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' GroupToUsers: "11111": '{"GID":11111,"UIDs":[1111]}' "22222": '{"GID":22222,"UIDs":[2222]}' diff --git a/internal/users/cache/testdata/golden/TestUpdateUserEntry/Update_only_user_even_if_we_have_multiple_of_them b/internal/users/cache/testdata/golden/TestUpdateUserEntry/Update_only_user_even_if_we_have_multiple_of_them index 307119616..7532333af 100644 --- a/internal/users/cache/testdata/golden/TestUpdateUserEntry/Update_only_user_even_if_we_have_multiple_of_them +++ b/internal/users/cache/testdata/golden/TestUpdateUserEntry/Update_only_user_even_if_we_have_multiple_of_them @@ -1,21 +1,21 @@ GroupByID: "11111": '{"Name":"group1","GID":11111,"UGID":"12345678"}' - "22222": '{"Name":"group2","GID":22222,"UGID":"56781234"}' - "33333": '{"Name":"group3","GID":33333,"UGID":"34567812"}' - "44444": '{"Name":"group4","GID":44444,"UGID":"45678123"}' - "99999": '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' + "22222": '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' + "33333": '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + "44444": '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' + "99999": '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' GroupByName: - commongroup: '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' + commongroup: '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' group1: '{"Name":"group1","GID":11111,"UGID":"12345678"}' - group2: '{"Name":"group2","GID":22222,"UGID":"56781234"}' - group3: '{"Name":"group3","GID":33333,"UGID":"34567812"}' - group4: '{"Name":"group4","GID":44444,"UGID":"45678123"}' + group2: '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' + group3: '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + group4: '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' GroupByUGID: "12345678": '{"Name":"group1","GID":11111,"UGID":"12345678"}' - "34567812": '{"Name":"group3","GID":33333,"UGID":"34567812"}' - "45678123": '{"Name":"group4","GID":44444,"UGID":"45678123"}' - "56781234": '{"Name":"group2","GID":22222,"UGID":"56781234"}' - "87654321": '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' + "34567812": '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + "45678123": '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' + "56781234": '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' + "87654321": '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' GroupToUsers: "11111": '{"GID":11111,"UIDs":[1111]}' "22222": '{"GID":22222,"UIDs":[2222]}' diff --git a/internal/users/manager.go b/internal/users/manager.go index 7ea893dcd..4f0baad9a 100644 --- a/internal/users/manager.go +++ b/internal/users/manager.go @@ -139,6 +139,9 @@ func (m *Manager) UpdateUser(u UserInfo) (err error) { localGroups = append(localGroups, g.Name) continue } + + // authd groups are lowercase + g.Name = strings.ToLower(g.Name) authdGroups = append(authdGroups, cache.NewGroupDB(g.Name, *g.GID, g.UGID, nil)) } diff --git a/internal/users/manager_test.go b/internal/users/manager_test.go index 47941b0ad..57c09fe5a 100644 --- a/internal/users/manager_test.go +++ b/internal/users/manager_test.go @@ -105,8 +105,9 @@ func TestUpdateUser(t *testing.T) { } groupsCases := map[string][]users.GroupInfo{ - "cloud-group": {{Name: "group1", GID: ptrUint32(11111), UGID: "1"}}, - "local-group": {{Name: "localgroup1"}}, + "cloud-group": {{Name: "group1", GID: ptrUint32(11111), UGID: "1"}}, + "local-group": {{Name: "localgroup1"}}, + "cloud-group-with-uppercase": {{Name: "Group1", GID: ptrUint32(11111), UGID: "1"}}, "mixed-groups-cloud-first": { {Name: "group1", GID: ptrUint32(11111), UGID: "1"}, {Name: "localgroup1", GID: nil, UGID: ""}, @@ -139,6 +140,7 @@ func TestUpdateUser(t *testing.T) { "Successfully update user updating local groups": {groupsCase: "mixed-groups-cloud-first", localGroupsFile: "users_in_groups.group"}, "UID does not change if user already exists": {userCase: "same-name-different-uid", dbFile: "one_user_and_group", wantSameUID: true}, "Successfully update user with different capitalization": {userCase: "different-capitalization-same-uid", dbFile: "one_user_and_group"}, + "Names of authd groups are stored in lowercase": {groupsCase: "cloud-group-with-uppercase"}, "Error if user has no username": {userCase: "nameless", wantErr: true, noOutput: true}, "Error if user has conflicting uid": {userCase: "different-name-same-uid", dbFile: "one_user_and_group", wantErr: true, noOutput: true}, diff --git a/internal/users/testdata/golden/TestNewManager/Successfully_create_a_new_manager b/internal/users/testdata/golden/TestNewManager/Successfully_create_a_new_manager index 5ae4a40f2..5d9602cc8 100644 --- a/internal/users/testdata/golden/TestNewManager/Successfully_create_a_new_manager +++ b/internal/users/testdata/golden/TestNewManager/Successfully_create_a_new_manager @@ -1,15 +1,15 @@ GroupByID: - "11111": '{"Name":"group1","GID":11111,"UGID":"12345678"}' - "22222": '{"Name":"group2","GID":22222,"UGID":"56781234"}' - "33333": '{"Name":"group3","GID":33333,"UGID":"34567812"}' - "44444": '{"Name":"group4","GID":44444,"UGID":"45678123"}' - "99999": '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' + "11111": '{"Name":"group1","GID":11111,"UGID":"12345678","Users":null}' + "22222": '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' + "33333": '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + "44444": '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' + "99999": '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' GroupByName: - commongroup: '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' - group1: '{"Name":"group1","GID":11111,"UGID":"12345678"}' - group2: '{"Name":"group2","GID":22222,"UGID":"56781234"}' - group3: '{"Name":"group3","GID":33333,"UGID":"34567812"}' - group4: '{"Name":"group4","GID":44444,"UGID":"45678123"}' + commongroup: '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' + group1: '{"Name":"group1","GID":11111,"UGID":"12345678","Users":null}' + group2: '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' + group3: '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + group4: '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' GroupByUGID: "12345678": '{"Name":"group1","GID":11111,"UGID":"12345678"}' "34567812": '{"Name":"group3","GID":33333,"UGID":"34567812"}' diff --git a/internal/users/testdata/golden/TestUpdateBrokerForUser/Successfully_update_broker_for_user b/internal/users/testdata/golden/TestUpdateBrokerForUser/Successfully_update_broker_for_user index 43603a50a..70cdccf18 100644 --- a/internal/users/testdata/golden/TestUpdateBrokerForUser/Successfully_update_broker_for_user +++ b/internal/users/testdata/golden/TestUpdateBrokerForUser/Successfully_update_broker_for_user @@ -1,16 +1,16 @@ | GroupByID: - "11111": '{"Name":"group1","GID":11111,"UGID":"12345678"}' - "22222": '{"Name":"group2","GID":22222,"UGID":"56781234"}' - "33333": '{"Name":"group3","GID":33333,"UGID":"34567812"}' - "44444": '{"Name":"group4","GID":44444,"UGID":"45678123"}' - "99999": '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' + "11111": '{"Name":"group1","GID":11111,"UGID":"12345678","Users":null}' + "22222": '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' + "33333": '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + "44444": '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' + "99999": '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' GroupByName: - commongroup: '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' - group1: '{"Name":"group1","GID":11111,"UGID":"12345678"}' - group2: '{"Name":"group2","GID":22222,"UGID":"56781234"}' - group3: '{"Name":"group3","GID":33333,"UGID":"34567812"}' - group4: '{"Name":"group4","GID":44444,"UGID":"45678123"}' + commongroup: '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' + group1: '{"Name":"group1","GID":11111,"UGID":"12345678","Users":null}' + group2: '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' + group3: '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + group4: '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' GroupByUGID: "12345678": '{"Name":"group1","GID":11111,"UGID":"12345678"}' "34567812": '{"Name":"group3","GID":33333,"UGID":"34567812"}' diff --git a/internal/users/testdata/golden/TestUpdateUser/Error_when_updating_local_groups_remove_user_from_db_even_if_already_existed b/internal/users/testdata/golden/TestUpdateUser/Error_when_updating_local_groups_remove_user_from_db_even_if_already_existed index 246b86428..8368cb28b 100644 --- a/internal/users/testdata/golden/TestUpdateUser/Error_when_updating_local_groups_remove_user_from_db_even_if_already_existed +++ b/internal/users/testdata/golden/TestUpdateUser/Error_when_updating_local_groups_remove_user_from_db_even_if_already_existed @@ -1,16 +1,16 @@ | GroupByID: - "11111": '{"Name":"group1","GID":11111,"UGID":"12345678"}' - "22222": '{"Name":"group2","GID":22222,"UGID":"56781234"}' - "33333": '{"Name":"group3","GID":33333,"UGID":"34567812"}' - "44444": '{"Name":"group4","GID":44444,"UGID":"45678123"}' - "99999": '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' + "11111": '{"Name":"group1","GID":11111,"UGID":"12345678","Users":null}' + "22222": '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' + "33333": '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + "44444": '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' + "99999": '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' GroupByName: - commongroup: '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' - group1: '{"Name":"group1","GID":11111,"UGID":"12345678"}' - group2: '{"Name":"group2","GID":22222,"UGID":"56781234"}' - group3: '{"Name":"group3","GID":33333,"UGID":"34567812"}' - group4: '{"Name":"group4","GID":44444,"UGID":"45678123"}' + commongroup: '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' + group1: '{"Name":"group1","GID":11111,"UGID":"12345678","Users":null}' + group2: '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' + group3: '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + group4: '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' GroupByUGID: "12345678": '{"Name":"group1","GID":11111,"UGID":"12345678"}' "34567812": '{"Name":"group3","GID":33333,"UGID":"34567812"}' diff --git a/internal/users/testdata/golden/TestUpdateUser/Error_when_updating_local_groups_remove_user_from_db_without_touching_other_users b/internal/users/testdata/golden/TestUpdateUser/Error_when_updating_local_groups_remove_user_from_db_without_touching_other_users index 246b86428..8368cb28b 100644 --- a/internal/users/testdata/golden/TestUpdateUser/Error_when_updating_local_groups_remove_user_from_db_without_touching_other_users +++ b/internal/users/testdata/golden/TestUpdateUser/Error_when_updating_local_groups_remove_user_from_db_without_touching_other_users @@ -1,16 +1,16 @@ | GroupByID: - "11111": '{"Name":"group1","GID":11111,"UGID":"12345678"}' - "22222": '{"Name":"group2","GID":22222,"UGID":"56781234"}' - "33333": '{"Name":"group3","GID":33333,"UGID":"34567812"}' - "44444": '{"Name":"group4","GID":44444,"UGID":"45678123"}' - "99999": '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' + "11111": '{"Name":"group1","GID":11111,"UGID":"12345678","Users":null}' + "22222": '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' + "33333": '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + "44444": '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' + "99999": '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' GroupByName: - commongroup: '{"Name":"commongroup","GID":99999,"UGID":"87654321"}' - group1: '{"Name":"group1","GID":11111,"UGID":"12345678"}' - group2: '{"Name":"group2","GID":22222,"UGID":"56781234"}' - group3: '{"Name":"group3","GID":33333,"UGID":"34567812"}' - group4: '{"Name":"group4","GID":44444,"UGID":"45678123"}' + commongroup: '{"Name":"commongroup","GID":99999,"UGID":"87654321","Users":null}' + group1: '{"Name":"group1","GID":11111,"UGID":"12345678","Users":null}' + group2: '{"Name":"group2","GID":22222,"UGID":"56781234","Users":null}' + group3: '{"Name":"group3","GID":33333,"UGID":"34567812","Users":null}' + group4: '{"Name":"group4","GID":44444,"UGID":"45678123","Users":null}' GroupByUGID: "12345678": '{"Name":"group1","GID":11111,"UGID":"12345678"}' "34567812": '{"Name":"group3","GID":33333,"UGID":"34567812"}' diff --git a/internal/users/testdata/golden/TestUpdateUser/Names_of_authd_groups_are_stored_in_lowercase b/internal/users/testdata/golden/TestUpdateUser/Names_of_authd_groups_are_stored_in_lowercase new file mode 100644 index 000000000..7ee310a39 --- /dev/null +++ b/internal/users/testdata/golden/TestUpdateUser/Names_of_authd_groups_are_stored_in_lowercase @@ -0,0 +1,24 @@ +| + GroupByID: + "11111": '{"Name":"group1","GID":11111,"UGID":"1"}' + "1526760316": '{"Name":"user1","GID":1526760316,"UGID":"user1"}' + GroupByName: + group1: '{"Name":"group1","GID":11111,"UGID":"1"}' + user1: '{"Name":"user1","GID":1526760316,"UGID":"user1"}' + GroupByUGID: + "1": '{"Name":"group1","GID":11111,"UGID":"1"}' + user1: '{"Name":"user1","GID":1526760316,"UGID":"user1"}' + GroupToUsers: + "11111": '{"GID":11111,"UIDs":[1111]}' + "1526760316": '{"GID":1526760316,"UIDs":[1111]}' + UserByID: + "1111": '{"Name":"user1","UID":1111,"GID":1526760316,"Gecos":"gecos for user1","Dir":"/home/user1","Shell":"/bin/bash","LastPwdChange":-1,"MaxPwdAge":-1,"PwdWarnPeriod":-1,"PwdInactivity":-1,"MinPwdAge":-1,"ExpirationDate":-1,"LastLogin":"ABCDETIME"}' + UserByName: + user1: '{"Name":"user1","UID":1111,"GID":1526760316,"Gecos":"gecos for user1","Dir":"/home/user1","Shell":"/bin/bash","LastPwdChange":-1,"MaxPwdAge":-1,"PwdWarnPeriod":-1,"PwdInactivity":-1,"MinPwdAge":-1,"ExpirationDate":-1,"LastLogin":"ABCDETIME"}' + UserToBroker: {} + UserToGroups: + "1111": '{"UID":1111,"GIDs":[1526760316,11111]}' + UserToLocalGroups: + "1111": "null" + Version: + version: Dev