arnaucube
arnaucube/mirror-to-giteaPublic Self-hosted repository
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}