| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package resource_test
- import (
- "bytes"
- "encoding/json"
- "io/ioutil"
- "os"
- "os/exec"
- "path/filepath"
- "github.com/google/go-containerregistry/pkg/name"
- "github.com/google/go-containerregistry/pkg/v1"
- "github.com/google/go-containerregistry/pkg/v1/random"
- "github.com/google/go-containerregistry/pkg/v1/remote"
- "github.com/google/go-containerregistry/pkg/v1/tarball"
- . "github.com/onsi/ginkgo"
- . "github.com/onsi/gomega"
- "github.com/concourse/registry-image-resource"
- )
- var _ = Describe("Out", func() {
- var srcDir string
- var req struct {
- Source resource.Source
- Params resource.PutParams
- }
- var res struct {
- Version resource.Version
- Metadata []resource.MetadataField
- }
- BeforeEach(func() {
- var err error
- srcDir, err = ioutil.TempDir("", "docker-image-out-dir")
- Expect(err).ToNot(HaveOccurred())
- })
- AfterEach(func() {
- Expect(os.RemoveAll(srcDir)).To(Succeed())
- })
- JustBeforeEach(func() {
- cmd := exec.Command(bins.Out, srcDir)
- payload, err := json.Marshal(req)
- Expect(err).ToNot(HaveOccurred())
- outBuf := new(bytes.Buffer)
- cmd.Stdin = bytes.NewBuffer(payload)
- cmd.Stdout = outBuf
- cmd.Stderr = GinkgoWriter
- err = cmd.Run()
- Expect(err).ToNot(HaveOccurred())
- err = json.Unmarshal(outBuf.Bytes(), &res)
- Expect(err).ToNot(HaveOccurred())
- })
- Describe("pushing an OCI image tarball", func() {
- var randomImage v1.Image
- BeforeEach(func() {
- req.Source = resource.Source{
- Repository: dockerPushRepo,
- Tag: "latest",
- Username: dockerUsername,
- Password: dockerPassword,
- }
- checkDockerUserConfigured()
- tag, err := name.NewTag(req.Source.Name(), name.WeakValidation)
- Expect(err).ToNot(HaveOccurred())
- randomImage, err = random.Image(1024, 1)
- Expect(err).ToNot(HaveOccurred())
- err = tarball.WriteToFile(filepath.Join(srcDir, "image.tar"), tag, randomImage)
- Expect(err).ToNot(HaveOccurred())
- req.Params.Image = "image.tar"
- })
- It("works", func() {
- name, err := name.ParseReference(req.Source.Name(), name.WeakValidation)
- Expect(err).ToNot(HaveOccurred())
- image, err := remote.Image(name)
- Expect(err).ToNot(HaveOccurred())
- pushedDigest, err := image.Digest()
- Expect(err).ToNot(HaveOccurred())
- randomDigest, err := randomImage.Digest()
- Expect(err).ToNot(HaveOccurred())
- Expect(pushedDigest).To(Equal(randomDigest))
- })
- })
- })
|