From b0bfb3b1efa42d7743ba3cc52e16b17d88f23676 Mon Sep 17 00:00:00 2001 From: Lucas Di Pentima Date: Fri, 17 Sep 2021 11:44:11 -0300 Subject: [PATCH] 18097: Adds more tests. Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima --- tools/sync-groups/sync-groups_test.go | 39 ++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/tools/sync-groups/sync-groups_test.go b/tools/sync-groups/sync-groups_test.go index c176210847..69326c98d9 100644 --- a/tools/sync-groups/sync-groups_test.go +++ b/tools/sync-groups/sync-groups_test.go @@ -187,11 +187,12 @@ func RemoteGroupExists(cfg *ConfigParams, groupName string) (uuid string, err er func (s *TestSuite) TestParseFlagsWithPositionalArgument(c *C) { cfg := ConfigParams{} - os.Args = []string{"cmd", "-verbose", "/tmp/somefile.csv"} + os.Args = []string{"cmd", "-verbose", "-case-insensitive", "/tmp/somefile.csv"} err := ParseFlags(&cfg) c.Assert(err, IsNil) c.Check(cfg.Path, Equals, "/tmp/somefile.csv") c.Check(cfg.Verbose, Equals, true) + c.Check(cfg.CaseInsensitive, Equals, true) } func (s *TestSuite) TestParseFlagsWithoutPositionalArgument(c *C) { @@ -533,3 +534,39 @@ func (s *TestSuite) TestUseUsernamesWithCaseInsensitiveMatching(c *C) { c.Assert(groupUUID, Not(Equals), "") c.Assert(GroupMembershipExists(s.cfg.Client, activeUserUUID, groupUUID, "can_write"), Equals, true) } + +func (s *TestSuite) TestUsernamesCaseInsensitiveCollision(c *C) { + activeUserName := s.users[arvadostest.ActiveUserUUID].Username + activeUserUUID := s.users[arvadostest.ActiveUserUUID].UUID + + nu := arvados.User{} + nuUsername := strings.ToUpper(activeUserName) + err := s.cfg.Client.RequestAndDecode(&nu, "POST", "/arvados/v1/users", nil, map[string]interface{}{ + "user": map[string]string{ + "username": nuUsername, + }, + }) + c.Assert(err, IsNil) + + // Manually remove non-fixture user because /database/reset fails otherwise + defer s.cfg.Client.RequestAndDecode(nil, "DELETE", "/arvados/v1/users/"+nu.UUID, nil, nil) + + c.Assert(nu.Username, Equals, nuUsername) + c.Assert(nu.UUID, Not(Equals), activeUserUUID) + c.Assert(nu.Username, Not(Equals), activeUserName) + + data := [][]string{ + {"SomeGroup", activeUserName}, + } + tmpfile, err := MakeTempCSVFile(data) + c.Assert(err, IsNil) + defer os.Remove(tmpfile.Name()) // clean up + + s.cfg.Path = tmpfile.Name() + s.cfg.UserID = "username" + s.cfg.CaseInsensitive = true + err = doMain(s.cfg) + // Should get an error because of "ACTIVE" and "Active" usernames + c.Assert(err, NotNil) + c.Assert(err, ErrorMatches, ".*case insensitive collision.*") +} -- 2.30.2