From 15e759482006d9f689f8afeb40a97e0f15dfe278 Mon Sep 17 00:00:00 2001 From: Lucas Di Pentima Date: Wed, 6 Jul 2022 18:22:55 -0300 Subject: [PATCH] 18858: Adds username case matching tests. Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima --- tools/sync-users/sync-users_test.go | 67 +++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/tools/sync-users/sync-users_test.go b/tools/sync-users/sync-users_test.go index 976d625996..119564d4df 100644 --- a/tools/sync-users/sync-users_test.go +++ b/tools/sync-users/sync-users_test.go @@ -492,3 +492,70 @@ func (s *TestSuite) TestFailOnEmptyUsernames(c *C) { c.Assert(err, NotNil) c.Assert(err, ErrorMatches, "skipped 1 user account.*with empty username.*") } + +func (s *TestSuite) TestFailOnDupedUsernameAndCaseInsensitiveMatching(c *C) { + for _, i := range []int{1, 2} { + var user arvados.User + emailPrefix := "john" + if i == 1 { + emailPrefix = "JOHN" + } + err := CreateUser(s.cfg.Client, &user, map[string]string{ + "email": fmt.Sprintf("%sdoe@example.com", emailPrefix), + "username": "", + "first_name": "John", + "last_name": "Doe", + "is_active": "true", + "is_admin": "false", + }) + c.Assert(err, IsNil) + c.Assert(user.Username, Equals, fmt.Sprintf("%sdoe", emailPrefix)) + } + + s.cfg.Verbose = true + data := [][]string{ + {"johndoe", "John", "Doe", "0", "0"}, + } + tmpfile, err := MakeTempCSVFile(data) + c.Assert(err, IsNil) + defer os.Remove(tmpfile.Name()) + s.cfg.Path = tmpfile.Name() + s.cfg.UserID = "username" + s.cfg.CaseInsensitive = true + err = doMain(s.cfg) + c.Assert(err, NotNil) + c.Assert(err, ErrorMatches, "case insensitive collision for username.*between.*and.*") +} + +func (s *TestSuite) TestSuccessOnUsernameAndCaseSensitiveMatching(c *C) { + for _, i := range []int{1, 2} { + var user arvados.User + emailPrefix := "john" + if i == 1 { + emailPrefix = "JOHN" + } + err := CreateUser(s.cfg.Client, &user, map[string]string{ + "email": fmt.Sprintf("%sdoe@example.com", emailPrefix), + "username": "", + "first_name": "John", + "last_name": "Doe", + "is_active": "true", + "is_admin": "false", + }) + c.Assert(err, IsNil) + c.Assert(user.Username, Equals, fmt.Sprintf("%sdoe", emailPrefix)) + } + + s.cfg.Verbose = true + data := [][]string{ + {"johndoe", "John", "Doe", "0", "0"}, + } + tmpfile, err := MakeTempCSVFile(data) + c.Assert(err, IsNil) + defer os.Remove(tmpfile.Name()) + s.cfg.Path = tmpfile.Name() + s.cfg.UserID = "username" + s.cfg.CaseInsensitive = false + err = doMain(s.cfg) + c.Assert(err, IsNil) +} -- 2.30.2