refactoring
@@ -0,0 +1,13 @@
+package app_test + +import ( + "testing" + + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" +) + +func TestApp(t *testing.T) { + RegisterFailHandler(Fail) + RunSpecs(t, "App Suite") +}
@@ -0,0 +1,7 @@
+package app + +import "github.com/jaedle/mirror-to-gitea/internal/config" + +type ConfigReader interface { + Read() (*config.Config, error) +}
@@ -0,0 +1,9 @@
+package app_test + +import ( + . "github.com/onsi/ginkgo" +) + +var _ = Describe("Mirror", func() { + +})
@@ -25,29 +25,6 @@ Username string
Token *string } -func Read() (*Config, error) { - mirrorMode, err := readMirrorMode() - if err != nil { - return nil, err - } - - gitea, err := readGiteaConfig() - if err != nil { - return nil, err - } - - github, err := readGithubConfig() - if err != nil { - return nil, err - } - - return &Config{ - MirrorMode: mirrorMode, - Gitea: gitea, - Github: github, - }, nil -} - func readGiteaConfig() (Gitea, error) { url, a := os.LookupEnv("GITEA_URL") if !a {@@ -99,3 +76,33 @@ return "", fmt.Errorf("unknown mirror mode %s, please specify a valid mirror mode: PUBLIC, PRIVATE_AND_PUBLIC", input)
} } + +type Reader struct { +} + +func (r Reader) Read() (*Config, error) { + mirrorMode, err := readMirrorMode() + if err != nil { + return nil, err + } + + gitea, err := readGiteaConfig() + if err != nil { + return nil, err + } + + github, err := readGithubConfig() + if err != nil { + return nil, err + } + + return &Config{ + MirrorMode: mirrorMode, + Gitea: gitea, + Github: github, + }, nil +} + +func NewReader() *Reader { + return &Reader{} +}
@@ -23,14 +23,18 @@ const aGithubUsername = "a-github-user"
const aGithubToken = "a-github-token" var _ = Describe("Read", func() { + + var reader *config.Reader + BeforeEach(func() { os.Clearenv() + reader = config.NewReader() }) It("parses valid configuration", func() { aValidEnv() - c, err := config.Read() + c, err := reader.Read() Expect(err).NotTo(HaveOccurred()) Expect(c).ToNot(BeNil()) })@@ -41,7 +45,7 @@ aValidEnv()
setEnv(githubUsername, aGithubUsername) unsetEnv(githubToken) - c, err := config.Read() + c, err := reader.Read() Expect(err).NotTo(HaveOccurred()) Expect(c.Github.Username).To(Equal(aGithubUsername))@@ -53,7 +57,7 @@ aValidEnv()
setEnv(githubUsername, aGithubUsername) setEnv(githubToken, aGithubToken) - c, err := config.Read() + c, err := reader.Read() Expect(err).NotTo(HaveOccurred()) Expect(c.Github.Username).To(Equal(aGithubUsername))@@ -64,7 +68,7 @@ It("fails on missing username", func() {
aValidEnv() unsetEnv(githubUsername) - c, err := config.Read() + c, err := reader.Read() Expect(err).To(HaveOccurred()) Expect(c).To(BeNil())@@ -78,7 +82,7 @@ aValidEnv()
setEnv(giteaUrl, "https://gitea.url/api") setEnv(giteaToken, "a-gitea-token") - c, err := config.Read() + c, err := reader.Read() Expect(err).NotTo(HaveOccurred()) Expect(c.Gitea.Url).To(Equal("https://gitea.url/api"))@@ -89,7 +93,7 @@ It("fails on missing gitea url", func() {
aValidEnv() unsetEnv(giteaUrl) - c, err := config.Read() + c, err := reader.Read() Expect(err).To(HaveOccurred()) Expect(c).To(BeNil())@@ -100,7 +104,7 @@ It("fails on missing gitea token", func() {
aValidEnv() unsetEnv(giteaToken) - c, err := config.Read() + c, err := reader.Read() Expect(err).To(HaveOccurred()) Expect(c).To(BeNil())@@ -114,7 +118,7 @@ It("sets default mirror mode", func() {
aValidEnv() unsetEnv(mirrorMode) - c, err := config.Read() + c, err := reader.Read() Expect(err).NotTo(HaveOccurred()) Expect(c.MirrorMode).To(Equal(config.MirrorModePublic))@@ -124,7 +128,7 @@ DescribeTable("parses mirror mode: ", func(in string, exp string) {
aValidEnv() setEnv(mirrorMode, in) - c, err := config.Read() + c, err := reader.Read() Expect(err).NotTo(HaveOccurred()) Expect(c.MirrorMode).To(Equal(exp))@@ -137,7 +141,7 @@ It("fails on unknown mirror mode", func() {
aValidEnv() setEnv(mirrorMode, unknownMirrorMode) - c, err := config.Read() + c, err := reader.Read() Expect(err).To(HaveOccurred()) Expect(c).To(BeNil())