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 It("parses valid configuration", func() {
24 aValidEnv()
25
26 c, err := config.Read()
27 Expect(err).NotTo(HaveOccurred())
28 Expect(c).ToNot(BeNil())
29 })
30
31 Context("Gitea", func() {
32 It("parses configuration", func() {
33 aValidEnv()
34 setEnv(giteaUrl, "https://gitea.url/api")
35 setEnv(giteaToken, "a-gitea-token")
36
37 c, err := config.Read()
38
39 Expect(err).NotTo(HaveOccurred())
40 Expect(c.Gitea.GiteaUrl).To(Equal("https://gitea.url/api"))
41 Expect(c.Gitea.GiteaToken).To(Equal("a-gitea-token"))
42 })
43
44 It("fails on missing gitea url", func() {
45 aValidEnv()
46 unsetEnv(giteaUrl)
47
48 c, err := config.Read()
49
50 Expect(err).To(HaveOccurred())
51 Expect(c).To(BeNil())
52 })
53
54 It("fails on missing gitea token", func() {
55 aValidEnv()
56 unsetEnv(giteaToken)
57
58 c, err := config.Read()
59
60 Expect(err).To(HaveOccurred())
61 Expect(c).To(BeNil())
62 })
63 })
64
65 Context("mirror mode", func() {
66 It("sets default mirror mode", func() {
67 aValidEnv()
68 unsetEnv(mirrorMode)
69
70 c, err := config.Read()
71
72 Expect(err).NotTo(HaveOccurred())
73 Expect(c.MirrorMode).To(Equal(config.MirrorModePublic))
74 })
75
76 It("allows public mirror mode PUBLIC", func() {
77 aValidEnv()
78 setEnv(mirrorMode, publicMirrorMode)
79
80 c, err := config.Read()
81
82 Expect(err).NotTo(HaveOccurred())
83 Expect(c.MirrorMode).To(Equal(config.MirrorModePublic))
84 })
85
86 It("allows mirror mode PRIVATE_AND_PUBLIC", func() {
87 aValidEnv()
88 setEnv(mirrorMode, privateAndPublicMirrorMode)
89
90 c, err := config.Read()
91
92 Expect(err).NotTo(HaveOccurred())
93 Expect(c.MirrorMode).To(Equal(config.MirrorModePrivateAndPublic))
94 })
95
96 It("fails on unknown mirror mode", func() {
97 aValidEnv()
98 setEnv(mirrorMode, unknownMirrorMode)
99
100 c, err := config.Read()
101
102 Expect(err).To(HaveOccurred())
103 Expect(c).To(BeNil())
104 })
105
106 })
107})
108
109func setEnv(k string, v string) {
110 err := os.Setenv(k, v)
111 Expect(err).NotTo(HaveOccurred())
112}
113
114func unsetEnv(k string) {
115 err := os.Unsetenv(k)
116 Expect(err).NotTo(HaveOccurred())
117}
118
119func aValidEnv() {
120 setEnv(mirrorMode, "PUBLIC")
121 setEnv(giteaUrl, "https://gitea.url")
122 setEnv(giteaToken, "valid")
123}