diff --git a/repository/repository.go b/repository/repository.go index 1ca5672..440d381 100644 --- a/repository/repository.go +++ b/repository/repository.go @@ -306,10 +306,14 @@ func GrantAccess(rNames, uNames []string, readOnly bool) error { return err } defer conn.Close() + var info *mgo.ChangeInfo if readOnly { - _, err = conn.Repository().UpdateAll(bson.M{"_id": bson.M{"$in": rNames}}, bson.M{"$addToSet": bson.M{"readonlyusers": bson.M{"$each": uNames}}}) + info, err = conn.Repository().UpdateAll(bson.M{"_id": bson.M{"$in": rNames}}, bson.M{"$addToSet": bson.M{"readonlyusers": bson.M{"$each": uNames}}}) } else { - _, err = conn.Repository().UpdateAll(bson.M{"_id": bson.M{"$in": rNames}}, bson.M{"$addToSet": bson.M{"users": bson.M{"$each": uNames}}}) + info, err = conn.Repository().UpdateAll(bson.M{"_id": bson.M{"$in": rNames}}, bson.M{"$addToSet": bson.M{"users": bson.M{"$each": uNames}}}) + } + if info.Updated < 1 { + return mgo.ErrNotFound } return err } diff --git a/repository/repository_test.go b/repository/repository_test.go index 3f7b956..0e96d38 100644 --- a/repository/repository_test.go +++ b/repository/repository_test.go @@ -665,6 +665,11 @@ func (s *S) TestGrantAccessShouldSkipDuplicatedUsers(c *check.C) { c.Assert(r.Users, check.DeepEquals, []string{"umi", "luke", "pade"}) } +func (s *S) TestGrantAccessNotFound(c *check.C) { + err := GrantAccess([]string{"super-repo"}, []string{"someuser"}, false) + c.Assert(err, check.Equals, mgo.ErrNotFound) +} + func (s *S) TestRevokeAccessShouldRemoveUserFromAllRepositories(c *check.C) { tmpdir, err := commandmocker.Add("git", "$*") c.Assert(err, check.IsNil)