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