github.com/cloudfoundry/postgres-release/src/acceptance-tests@v0.0.0-20240511030151-872bdd2e0dba/testing/helpers/versions_test.go (about) 1 package helpers_test 2 3 import ( 4 "io/ioutil" 5 "os" 6 7 "github.com/cloudfoundry/postgres-release/src/acceptance-tests/testing/helpers" 8 . "github.com/onsi/ginkgo/v2" 9 . "github.com/onsi/gomega" 10 ) 11 12 func writeVersionsFile(data string) (string, error) { 13 tempFile, err := ioutil.TempFile("", "versions") 14 if err != nil { 15 return "", err 16 } 17 18 err = ioutil.WriteFile(tempFile.Name(), []byte(data), os.ModePerm) 19 if err != nil { 20 return "", err 21 } 22 23 return tempFile.Name(), nil 24 } 25 26 var _ = Describe("Postgres-release versions", func() { 27 Context("With a valid yaml file", func() { 28 var versionsFilePath string 29 var pgVersions helpers.PostgresReleaseVersions 30 31 BeforeEach(func() { 32 var err error 33 var data = ` 34 versions: 35 1: "PostgreSQL 9.4.6" 36 3: "PostgreSQL 9.4.9" 37 2: "PostgreSQL 9.4.6" 38 ` 39 versionsFilePath, err = writeVersionsFile(data) 40 Expect(err).NotTo(HaveOccurred()) 41 pgVersions, err = helpers.NewPostgresReleaseVersions(versionsFilePath) 42 Expect(err).NotTo(HaveOccurred()) 43 }) 44 AfterEach(func() { 45 err := os.Remove(versionsFilePath) 46 Expect(err).NotTo(HaveOccurred()) 47 }) 48 49 It("Get the latest postgres-release version", func() { 50 latestVersion := pgVersions.GetLatestVersion() 51 Expect(latestVersion).To(Equal(3)) 52 }) 53 It("Get the proper postgres-release old version", func() { 54 oldVersion := pgVersions.GetOldVersion() 55 Expect(oldVersion).To(Equal(2)) 56 }) 57 It("Get the proper PostgreSQL version", func() { 58 pgVersion := pgVersions.GetPostgreSQLVersion(1) 59 Expect(pgVersion).To(Equal("PostgreSQL 9.4.6")) 60 pgVersion = pgVersions.GetPostgreSQLVersion(2) 61 Expect(pgVersion).To(Equal("PostgreSQL 9.4.6")) 62 pgVersion = pgVersions.GetPostgreSQLVersion(3) 63 Expect(pgVersion).To(Equal("PostgreSQL 9.4.9")) 64 }) 65 It("Check if major upgrade", func() { 66 isMajor := pgVersions.IsMajor("PostgreSQL 9.5.7", 2) 67 Expect(isMajor).To(BeTrue()) 68 isMajor = pgVersions.IsMajor("PostgreSQL 9.4.7", 2) 69 Expect(isMajor).To(BeFalse()) 70 }) 71 }) 72 Context("With an invalid config yaml location", func() { 73 It("Should return an error that the file does not exist", func() { 74 _, err := helpers.LoadConfig("notExistentPath") 75 Expect(err).To(MatchError(ContainSubstring("no such file or directory"))) 76 }) 77 }) 78 79 Context("With an incorrect config yaml content", func() { 80 var versionsFilePath string 81 82 AfterEach(func() { 83 err := os.Remove(versionsFilePath) 84 Expect(err).NotTo(HaveOccurred()) 85 }) 86 87 It("Should return an error if not a valid yaml", func() { 88 var err error 89 versionsFilePath, err = writeVersionsFile("%%%") 90 Expect(err).NotTo(HaveOccurred()) 91 92 _, err = helpers.NewPostgresReleaseVersions(versionsFilePath) 93 Expect(err).To(MatchError(ContainSubstring("yaml: could not find expected directive name"))) 94 }) 95 }) 96 })