podman

Форк
0
/
image_sign_test.go 
74 строки · 2.5 Кб
1
package integration
2

3
import (
4
	"os"
5
	"os/exec"
6
	"path/filepath"
7

8
	. "github.com/containers/podman/v5/test/utils"
9
	. "github.com/onsi/ginkgo/v2"
10
	. "github.com/onsi/gomega"
11
)
12

13
// Each of these tests runs with a different GNUPGHOME; gpg-agent blows up
14
// if these run in parallel. We use Serial, not Ordered, because tests in
15
// trust_test.go also rely on gpg and can't coexist with us.
16
var _ = Describe("Podman image sign", Serial, func() {
17
	var origGNUPGHOME string
18

19
	BeforeEach(func() {
20
		SkipIfRemote("podman-remote image sign is not supported")
21
		tempGNUPGHOME := filepath.Join(podmanTest.TempDir, "tmpGPG")
22
		err := os.Mkdir(tempGNUPGHOME, os.ModePerm)
23
		Expect(err).ToNot(HaveOccurred())
24

25
		origGNUPGHOME = os.Getenv("GNUPGHOME")
26
		err = os.Setenv("GNUPGHOME", tempGNUPGHOME)
27
		Expect(err).ToNot(HaveOccurred())
28

29
	})
30

31
	AfterEach(func() {
32
		// There's no way to run gpg without an agent, so, clean up
33
		// after every test. No need to check error status.
34
		cmd := exec.Command("gpgconf", "--kill", "gpg-agent")
35
		cmd.Stdout = GinkgoWriter
36
		cmd.Stderr = GinkgoWriter
37
		_ = cmd.Run()
38

39
		os.Setenv("GNUPGHOME", origGNUPGHOME)
40
	})
41

42
	It("podman sign image", func() {
43
		cmd := exec.Command("gpg", "--import", "sign/secret-key.asc")
44
		cmd.Stdout = GinkgoWriter
45
		cmd.Stderr = GinkgoWriter
46
		err := cmd.Run()
47
		Expect(err).ToNot(HaveOccurred())
48
		sigDir := filepath.Join(podmanTest.TempDir, "test-sign")
49
		err = os.MkdirAll(sigDir, os.ModePerm)
50
		Expect(err).ToNot(HaveOccurred())
51
		session := podmanTest.Podman([]string{"image", "sign", "--directory", sigDir, "--sign-by", "foo@bar.com", "docker://library/alpine"})
52
		session.WaitWithDefaultTimeout()
53
		Expect(session).Should(ExitCleanly())
54
		_, err = os.Stat(filepath.Join(sigDir, "library"))
55
		Expect(err).ToNot(HaveOccurred())
56
	})
57

58
	It("podman sign --all multi-arch image", func() {
59
		cmd := exec.Command("gpg", "--import", "sign/secret-key.asc")
60
		cmd.Stdout = GinkgoWriter
61
		cmd.Stderr = GinkgoWriter
62
		err := cmd.Run()
63
		Expect(err).ToNot(HaveOccurred())
64
		sigDir := filepath.Join(podmanTest.TempDir, "test-sign-multi")
65
		err = os.MkdirAll(sigDir, os.ModePerm)
66
		Expect(err).ToNot(HaveOccurred())
67
		session := podmanTest.Podman([]string{"image", "sign", "--all", "--directory", sigDir, "--sign-by", "foo@bar.com", "docker://library/alpine"})
68
		session.WaitWithDefaultTimeout()
69
		Expect(session).Should(ExitCleanly())
70
		fInfos, err := os.ReadDir(filepath.Join(sigDir, "library"))
71
		Expect(err).ToNot(HaveOccurred())
72
		Expect(len(fInfos)).To(BeNumerically(">", 1), "len(fInfos)")
73
	})
74
})
75

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.