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	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}