mirror-to-gitea/internal/config/read_test.go
internal/config/read_test.goRaw
1package config_test
2
3import (
4 "github.com/jaedle/mirror-to-gitea/internal/config"
5 . "github.com/onsi/ginkgo"
6 . "github.com/onsi/gomega"
7 "os"
8)
9
10const mirrorMode = "MIRROR_MODE"
11const giteaUrl = "GITEA_URL"
12const giteaToken = "GITEA_TOKEN"
13
14const publicMirrorMode = "PUBLIC"
15const privateAndPublicMirrorMode = "PRIVATE_AND_PUBLIC"
16const unknownMirrorMode = "UNKNOWN"
17
18var _ = Describe("Read", func() {
19 BeforeEach(func() {
20 os.Clearenv()
21 })
22
23 Context("Gitea", func() {
24 It("parses configuration", func() {
25 aValidEnv()
26 setEnv(giteaUrl, "https://gitea.url/api")
27 setEnv(giteaToken, "a-gitea-token")
28
29 c, err := config.Read()
30
31 Expect(err).NotTo(HaveOccurred())
32 Expect(c.Gitea.GiteaUrl).To(Equal("https://gitea.url/api"))
33 Expect(c.Gitea.GiteaToken).To(Equal("a-gitea-token"))
34 })
35
36 It("fails on missing gitea url", func() {
37 aValidEnv()
38 unsetEnv(giteaUrl)
39
40 c, err := config.Read()
41
42 Expect(err).To(HaveOccurred())
43 Expect(c).To(BeNil())
44 })
45
46 It("fails on missing gitea token", func() {
47 aValidEnv()
48 unsetEnv(giteaToken)
49
50 c, err := config.Read()
51
52 Expect(err).To(HaveOccurred())
53 Expect(c).To(BeNil())
54 })
55 })
56
57 Context("mirror mode", func() {
58 It("sets default mirror mode", func() {
59 aValidEnv()
60 unsetEnv(mirrorMode)
61
62 c, err := config.Read()
63
64 Expect(err).NotTo(HaveOccurred())
65 Expect(c.MirrorMode).To(Equal(config.MirrorModePublic))
66 })
67
68 It("allows public mirror mode PUBLIC", func() {
69 aValidEnv()
70 setEnv(mirrorMode, publicMirrorMode)
71
72 c, err := config.Read()
73
74 Expect(err).NotTo(HaveOccurred())
75 Expect(c.MirrorMode).To(Equal(config.MirrorModePublic))
76 })
77
78 It("allows mirror mode PRIVATE_AND_PUBLIC", func() {
79 aValidEnv()
80 setEnv(mirrorMode, privateAndPublicMirrorMode)
81
82 c, err := config.Read()
83
84 Expect(err).NotTo(HaveOccurred())
85 Expect(c.MirrorMode).To(Equal(config.MirrorModePrivateAndPublic))
86 })
87
88 It("fails on unknown mirror mode", func() {
89 aValidEnv()
90 setEnv(mirrorMode, unknownMirrorMode)
91
92 c, err := config.Read()
93
94 Expect(err).To(HaveOccurred())
95 Expect(c).To(BeNil())
96 })
97
98 })
99})
100
101func setEnv(k string, v string) {
102 err := os.Setenv(k, v)
103 Expect(err).NotTo(HaveOccurred())
104}
105
106func unsetEnv(k string) {
107 err := os.Unsetenv(k)
108 Expect(err).NotTo(HaveOccurred())
109}
110
111func aValidEnv() {
112 setEnv(mirrorMode, "PUBLIC")
113 setEnv(giteaUrl, "https://gitea.url")
114 setEnv(giteaToken, "valid")
115}