Federated via graft
1.7 kB
52 lines
1package config
2
3import "testing"
4
5func validPair() RepoPair {
6 return RepoPair{
7 Name: "p",
8 Forgejo: ForgejoTarget{BaseURL: "https://f1", Owner: "o", Repo: "r", TokenFile: "/tmp/t"},
9 Sync: SyncScope{Git: true},
10 }
11}
12
13func TestValidateRequiresRadicleOrForgejoMirror(t *testing.T) {
14 p := validPair()
15 if err := p.validate(); err == nil {
16 t.Fatal("expected error when neither radicle nor forgejo_mirror is set")
17 }
18}
19
20func TestValidateRejectsBothRadicleAndForgejoMirror(t *testing.T) {
21 p := validPair()
22 p.Radicle = &RadicleTarget{RID: "rad:z1", HTTPBaseURL: "https://r1", RadHome: "/home/r"}
23 p.ForgejoMirror = &ForgejoTarget{BaseURL: "https://f2", Owner: "o", Repo: "r", TokenFile: "/tmp/t2"}
24 if err := p.validate(); err == nil {
25 t.Fatal("expected error when both radicle and forgejo_mirror are set")
26 }
27}
28
29func TestValidateAcceptsRadicleOnly(t *testing.T) {
30 p := validPair()
31 p.Radicle = &RadicleTarget{RID: "rad:z1", HTTPBaseURL: "https://r1", RadHome: "/home/r"}
32 if err := p.validate(); err != nil {
33 t.Fatalf("unexpected error: %v", err)
34 }
35}
36
37func TestValidateAcceptsForgejoMirrorOnly(t *testing.T) {
38 p := validPair()
39 p.ForgejoMirror = &ForgejoTarget{BaseURL: "https://f2", Owner: "o", Repo: "r", TokenFile: "/tmp/t2"}
40 if err := p.validate(); err != nil {
41 t.Fatalf("unexpected error: %v", err)
42 }
43}
44
45func TestValidateRejectsIssuesOrPatchesOnForgejoMirror(t *testing.T) {
46 p := validPair()
47 p.ForgejoMirror = &ForgejoTarget{BaseURL: "https://f2", Owner: "o", Repo: "r", TokenFile: "/tmp/t2"}
48 p.Sync.Issues = true
49 if err := p.validate(); err == nil {
50 t.Fatal("expected error: forgejo_mirror pairs don't support issue sync")
51 }
52}