Skip to content

Commit da52573

Browse files
committed
fix: single tenant doesnt require user namespace
1 parent b8ce91a commit da52573

File tree

4 files changed

+30
-8
lines changed

4 files changed

+30
-8
lines changed

__snapshots__/e2e_test.snap

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11

22
[TestE2E - 1]
3-
ID RepoID Name Status Patchsets User Date
4-
1 test feat: lets build an rnn [open] 1 admin
3+
ID RepoID Name Status Patchsets User Date
4+
2 test feat: lets build an rnn [open] 1 contributor
5+
1 test feat: lets build an rnn [open] 1 admin
56

67
---
78

cli.go

+13-4
Original file line numberDiff line numberDiff line change
@@ -489,14 +489,23 @@ Here's how it works:
489489
rawRepoNs = args.First()
490490
}
491491
repoUsername, repoName := be.SplitRepoNs(rawRepoNs)
492-
repoUser := user
493-
if repoUsername != "" {
494-
repoUser, err = pr.GetUserByName(repoUsername)
492+
var repo *Repo
493+
if repoUsername == "" {
494+
if be.Cfg.CreateRepo == "admin" {
495+
// single tenant default user to admin
496+
repo, _ = pr.GetRepoByName(nil, repoName)
497+
} else {
498+
// multi tenant default user to contributor
499+
repo, _ = pr.GetRepoByName(user, repoName)
500+
}
501+
} else {
502+
repoUser, err := pr.GetUserByName(repoUsername)
495503
if err != nil {
496504
return err
497505
}
506+
repo, _ = pr.GetRepoByName(repoUser, repoName)
498507
}
499-
repo, _ := pr.GetRepoByName(repoUser, repoName)
508+
500509
err = be.CanCreateRepo(repo, user)
501510
if err != nil {
502511
return err

e2e_test.go

+5
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,17 @@ func testSingleTenantE2E(t *testing.T) {
2727
go GitSshServer(suite.cfg, done)
2828
// Hack to wait for startup
2929
time.Sleep(time.Millisecond * 100)
30+
31+
t.Log("User cannot create repo")
3032
_, err := suite.userKey.Cmd(suite.patch, "pr create test")
3133
if err == nil {
3234
t.Fatal("user should not be able to create a PR")
3335
}
3436
suite.adminKey.MustCmd(suite.patch, "pr create test")
3537

38+
t.Log("User should be able to create a patch")
39+
suite.userKey.MustCmd(suite.patch, "pr create test")
40+
3641
t.Log("Snapshot test ls command")
3742
actual, err := suite.userKey.Cmd(nil, "pr ls")
3843
bail(err)

pr.go

+9-2
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,16 @@ func (pr PrCmd) GetRepos() (repos []*Repo, err error) {
147147

148148
func (pr PrCmd) GetRepoByName(user *User, repoName string) (*Repo, error) {
149149
var repo Repo
150-
err := pr.Backend.DB.Get(&repo, "SELECT * FROM repos WHERE user_id=? AND name=?", user.ID, repoName)
150+
var err error
151+
152+
if user == nil {
153+
err = pr.Backend.DB.Get(&repo, "SELECT * FROM repos WHERE name=?", repoName)
154+
} else {
155+
err = pr.Backend.DB.Get(&repo, "SELECT * FROM repos WHERE user_id=? AND name=?", user.ID, repoName)
156+
}
157+
151158
if err != nil {
152-
return nil, fmt.Errorf("repo not found: %s/%s", user.Name, repoName)
159+
return nil, fmt.Errorf("repo not found: %s", repoName)
153160
}
154161

155162
return &repo, nil

0 commit comments

Comments
 (0)