check_test.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package resource_test
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "os/exec"
  6. . "github.com/onsi/ginkgo"
  7. . "github.com/onsi/gomega"
  8. resource "github.com/concourse/registry-image-resource"
  9. )
  10. var _ = Describe("Check", func() {
  11. var req struct {
  12. Source resource.Source
  13. Version *resource.Version
  14. }
  15. var res []resource.Version
  16. JustBeforeEach(func() {
  17. cmd := exec.Command(bins.Check)
  18. payload, err := json.Marshal(req)
  19. Expect(err).ToNot(HaveOccurred())
  20. outBuf := new(bytes.Buffer)
  21. cmd.Stdin = bytes.NewBuffer(payload)
  22. cmd.Stdout = outBuf
  23. cmd.Stderr = GinkgoWriter
  24. err = cmd.Run()
  25. Expect(err).ToNot(HaveOccurred())
  26. err = json.Unmarshal(outBuf.Bytes(), &res)
  27. Expect(err).ToNot(HaveOccurred())
  28. })
  29. Context("when invoked with no cursor version", func() {
  30. BeforeEach(func() {
  31. req.Source = resource.Source{
  32. Repository: "concourse/test-image-static",
  33. RawTag: "latest",
  34. }
  35. req.Version = nil
  36. })
  37. It("returns the current digest", func() {
  38. Expect(res).To(Equal([]resource.Version{
  39. {Digest: "sha256:64a6988c58cbdd634198f56452e8f8945e5b54a4bbca4bff7e960e1c830671ff"},
  40. }))
  41. })
  42. })
  43. Context("when invoked with an up-to-date cursor version", func() {
  44. BeforeEach(func() {
  45. req.Source = resource.Source{
  46. Repository: "concourse/test-image-static",
  47. RawTag: "latest",
  48. }
  49. req.Version = &resource.Version{
  50. Digest: "sha256:64a6988c58cbdd634198f56452e8f8945e5b54a4bbca4bff7e960e1c830671ff",
  51. }
  52. })
  53. It("returns the given digest", func() {
  54. Expect(res).To(Equal([]resource.Version{
  55. {Digest: "sha256:64a6988c58cbdd634198f56452e8f8945e5b54a4bbca4bff7e960e1c830671ff"},
  56. }))
  57. })
  58. })
  59. Context("when invoked with a valid but out-of-date cursor version", func() {
  60. BeforeEach(func() {
  61. req.Source = resource.Source{
  62. Repository: "concourse/test-image-static",
  63. RawTag: "latest",
  64. }
  65. req.Version = &resource.Version{
  66. // this was previously pushed to the 'latest' tag
  67. Digest: "sha256:031567a617423a84ad68b62267c30693185bd2b92c2668732efc8c70b036bd3a",
  68. }
  69. })
  70. It("returns the previous digest and the current digest", func() {
  71. Expect(res).To(Equal([]resource.Version{
  72. {Digest: "sha256:031567a617423a84ad68b62267c30693185bd2b92c2668732efc8c70b036bd3a"},
  73. {Digest: "sha256:64a6988c58cbdd634198f56452e8f8945e5b54a4bbca4bff7e960e1c830671ff"},
  74. }))
  75. })
  76. })
  77. Context("when invoked with an invalid cursor version", func() {
  78. BeforeEach(func() {
  79. req.Source = resource.Source{
  80. Repository: "concourse/test-image-static",
  81. RawTag: "latest",
  82. }
  83. req.Version = &resource.Version{
  84. // (note the end)
  85. Digest: "sha256:031567a617423a84ad68b62267c30693185bd2b92c2668732efc8c70deadbeef",
  86. }
  87. })
  88. It("returns only the current digest", func() {
  89. Expect(res).To(Equal([]resource.Version{
  90. {Digest: "sha256:64a6988c58cbdd634198f56452e8f8945e5b54a4bbca4bff7e960e1c830671ff"},
  91. }))
  92. })
  93. })
  94. })