🐛 fix(spx): GITEA_TOKEN 只发给 tea 登录过的 host,origin 不在 tea 里时直接报错
This commit is contained in:
1 parent
e6d086d821
commit
9c7c9d8636
6 files changed
+43
-25
No files matched your search
@@ -17,6 +17,7 @@ type fakeEnv struct {
|
||||
env map[string]string
|
||||
ghAsked []string
|
||||
teaAsked []string
|
||||
envAsked []string
|
||||
}
|
||||
|
||||
func (f *fakeEnv) Env() Env {
|
||||
@@ -29,7 +30,10 @@ func (f *fakeEnv) Env() Env {
|
||||
f.teaAsked = append(f.teaAsked, host)
|
||||
return f.logins[host], nil
|
||||
},
|
||||
Getenv: func(key string) string { return f.env[key] },
|
||||
Getenv: func(key string) string {
|
||||
f.envAsked = append(f.envAsked, key)
|
||||
return f.env[key]
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@@ -133,22 +137,34 @@ func TestOpenGiteaFallsBackToEnvTokenWhenLoginHasNone(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestOpenGiteaWithoutLoginUsesOriginWebURLAndEnvToken(t *testing.T) {
|
||||
fe := &fakeEnv{env: map[string]string{"GITEA_TOKEN": "env-tok"}}
|
||||
f, err := Open(giteaOrigin(), fe.Env())
|
||||
if err != nil {
|
||||
t.Fatalf("Open 出错: %v", err)
|
||||
func TestOpenGiteaWithoutLoginForOriginHostNeverReadsEnvToken(t *testing.T) {
|
||||
fe := &fakeEnv{
|
||||
logins: map[string]*tea.TeaLogin{
|
||||
"gitea.example.com": {Name: "work", URL: "https://gitea.example.com", Token: "tea-tok"},
|
||||
},
|
||||
env: map[string]string{"GITEA_TOKEN": "env-tok"},
|
||||
}
|
||||
rf := f.(*restForge)
|
||||
if rf.apiBase != "https://gitea.example.com/api/v1" || rf.header.Get("Authorization") != "token env-tok" {
|
||||
t.Fatalf("没有 tea login 时应用 origin 地址 + GITEA_TOKEN: base=%s auth=%q", rf.apiBase, rf.header.Get("Authorization"))
|
||||
o := repo.Origin{Host: "gitlab.com", WebURL: "https://gitlab.com", Owner: "acme", Repo: "widgets"}
|
||||
f, err := Open(o, fe.Env())
|
||||
if err == nil || f != nil {
|
||||
t.Fatalf("tea 里没有 origin host 的 login 时应拒绝连接,得到 forge=%v err=%v", f, err)
|
||||
}
|
||||
if !strings.Contains(err.Error(), "tea login add") || !strings.Contains(err.Error(), "gitlab.com") {
|
||||
t.Fatalf("错误应点名 host 并提示先 tea login add,得到 %v", err)
|
||||
}
|
||||
if len(fe.envAsked) != 0 {
|
||||
t.Fatalf("没有同 host 的 login 时不能读 GITEA_TOKEN,免得把它发给别的网站: %v", fe.envAsked)
|
||||
}
|
||||
}
|
||||
|
||||
func TestOpenGiteaWithoutAnyTokenFails(t *testing.T) {
|
||||
fe := &fakeEnv{}
|
||||
func TestOpenGiteaFailsWhenLoginAndEnvHaveNoToken(t *testing.T) {
|
||||
fe := &fakeEnv{
|
||||
logins: map[string]*tea.TeaLogin{
|
||||
"gitea.example.com": {Name: "work", URL: "https://gitea.example.com", Token: ""},
|
||||
},
|
||||
}
|
||||
_, err := Open(giteaOrigin(), fe.Env())
|
||||
if err == nil || !strings.Contains(err.Error(), "GITEA_TOKEN") || !strings.Contains(err.Error(), "gitea.example.com") {
|
||||
t.Fatalf("没有 token 时应报错并点名 host 与 GITEA_TOKEN,得到 %v", err)
|
||||
t.Fatalf("login 和 GITEA_TOKEN 都没有 token 时应报错并点名 host 与 GITEA_TOKEN,得到 %v", err)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user