github.com/wanddynosios/cli/v8@v8.7.9-0.20240221182337-1a92e3a7017f/util/checksum_test.go (about)

     1  package util_test
     2  
     3  import (
     4  	"fmt"
     5  	"io/ioutil"
     6  	"os"
     7  
     8  	. "code.cloudfoundry.org/cli/util"
     9  
    10  	. "github.com/onsi/ginkgo"
    11  	. "github.com/onsi/gomega"
    12  )
    13  
    14  var _ = Describe("Sha1Checksum", func() {
    15  
    16  	var (
    17  		checksum Sha1Checksum
    18  	)
    19  
    20  	Describe("CheckSha1", func() {
    21  		Context("file doesn't exist", func() {
    22  			It("returns false", func() {
    23  				checksum = NewSha1Checksum("file/path/to/no/where")
    24  
    25  				sha1, err := checksum.ComputeFileSha1()
    26  				Expect(len(sha1)).To(Equal(0))
    27  				Expect(err).To(HaveOccurred())
    28  			})
    29  		})
    30  
    31  		Context("If file does exist", func() {
    32  			var (
    33  				f   *os.File
    34  				err error
    35  			)
    36  
    37  			BeforeEach(func() {
    38  				f, err = ioutil.TempFile("", "sha1_test_")
    39  				Expect(err).NotTo(HaveOccurred())
    40  				defer f.Close()
    41  				_, err = f.Write([]byte("abc"))
    42  				Expect(err).ToNot(HaveOccurred())
    43  			})
    44  
    45  			AfterEach(func() {
    46  				os.RemoveAll(f.Name())
    47  			})
    48  
    49  			It("returns false if sha1 doesn't match", func() {
    50  				checksum = NewSha1Checksum(f.Name())
    51  
    52  				Expect(checksum.CheckSha1("skj33933dabs2292391223aa393fjs92")).To(BeFalse())
    53  			})
    54  
    55  			It("returns true if sha1 matches", func() {
    56  				checksum = NewSha1Checksum(f.Name())
    57  
    58  				Expect(checksum.CheckSha1("a9993e364706816aba3e25717850c26c9cd0d89d")).To(BeTrue())
    59  			})
    60  		})
    61  
    62  	})
    63  
    64  	Describe("ComputeFileSha1", func() {
    65  		Context("If file does not exist", func() {
    66  			It("returns error", func() {
    67  				checksum = NewSha1Checksum("file/path/to/no/where")
    68  
    69  				sha1, err := checksum.ComputeFileSha1()
    70  				Expect(len(sha1)).To(Equal(0))
    71  				Expect(err).To(HaveOccurred())
    72  			})
    73  		})
    74  
    75  		Context("If file does exist", func() {
    76  			var (
    77  				f   *os.File
    78  				err error
    79  			)
    80  
    81  			BeforeEach(func() {
    82  				f, err = ioutil.TempFile("", "sha1_test_")
    83  				Expect(err).NotTo(HaveOccurred())
    84  				defer f.Close()
    85  				_, err = f.Write([]byte("abc"))
    86  				Expect(err).ToNot(HaveOccurred())
    87  			})
    88  
    89  			AfterEach(func() {
    90  				os.RemoveAll(f.Name())
    91  			})
    92  
    93  			It("returns the sha1 of a file", func() {
    94  				checksum = NewSha1Checksum(f.Name())
    95  
    96  				sha1, err := checksum.ComputeFileSha1()
    97  				Expect(err).NotTo(HaveOccurred())
    98  				Expect(len(sha1)).To(Equal(20))
    99  				Expect(fmt.Sprintf("%x", sha1)).To(Equal("a9993e364706816aba3e25717850c26c9cd0d89d"))
   100  			})
   101  		})
   102  
   103  	})
   104  })