mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-06-05 05:20:34 +00:00
58c7358113
These unit-tests cover operations via both PGP providers: built-in `openpgp` and external `gpg`. Next step is to run these tests for gpg1 & gpg2 as separate entities.
112 lines
2.8 KiB
Go
112 lines
2.8 KiB
Go
package pgp
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"runtime"
|
|
|
|
. "gopkg.in/check.v1"
|
|
)
|
|
|
|
type GnupgSuite struct {
|
|
verifier Verifier
|
|
bins string
|
|
}
|
|
|
|
var _ = Suite(&GnupgSuite{})
|
|
|
|
func (s *GnupgSuite) SetUpSuite(c *C) {
|
|
_, _File, _, _ := runtime.Caller(0)
|
|
s.bins = filepath.Join(filepath.Dir(_File), "test-bins")
|
|
}
|
|
|
|
// If gpg == gpg1 = pick gpg
|
|
func (s *GnupgSuite) TestGPG1(c *C) {
|
|
origPath := os.Getenv("PATH")
|
|
os.Setenv("PATH", filepath.Join(s.bins, "gpg1"))
|
|
defer func() { os.Setenv("PATH", origPath) }()
|
|
|
|
signer := NewGpgSigner()
|
|
c.Assert(signer.gpg, Equals, "gpg")
|
|
}
|
|
|
|
// gpg(2) + gpg1 installed = pick gpg1
|
|
func (s *GnupgSuite) TestGPG1Not2(c *C) {
|
|
origPath := os.Getenv("PATH")
|
|
os.Setenv("PATH", filepath.Join(s.bins, "gpg2-and-1"))
|
|
defer func() { os.Setenv("PATH", origPath) }()
|
|
|
|
signer := NewGpgSigner()
|
|
c.Assert(signer.gpg, Equals, "gpg1")
|
|
}
|
|
|
|
// If gpg == gpg2 and no gpg1 is available = error
|
|
func (s *GnupgSuite) TestGPGNothing(c *C) {
|
|
origPath := os.Getenv("PATH")
|
|
os.Setenv("PATH", filepath.Join(s.bins, "gpg2-only"))
|
|
defer func() { os.Setenv("PATH", origPath) }()
|
|
|
|
c.Assert(func() { NewGpgSigner() }, PanicMatches, `Couldn't find a suitable gpg executable.+`)
|
|
}
|
|
|
|
// If gpgv == gpgv1 = pick gpgv
|
|
func (s *GnupgSuite) TestGPGV1(c *C) {
|
|
origPath := os.Getenv("PATH")
|
|
os.Setenv("PATH", filepath.Join(s.bins, "gpgv1")+":"+filepath.Join(s.bins, "gpg1"))
|
|
defer func() { os.Setenv("PATH", origPath) }()
|
|
|
|
verifier := NewGpgVerifier()
|
|
c.Assert(verifier.gpgv, Equals, "gpgv")
|
|
}
|
|
|
|
// gpgv(2) + gpgv1 installed = pick gpgv1
|
|
func (s *GnupgSuite) TestGPGV1Not2(c *C) {
|
|
origPath := os.Getenv("PATH")
|
|
os.Setenv("PATH", filepath.Join(s.bins, "gpgv2-and-1")+":"+filepath.Join(s.bins, "gpg1"))
|
|
defer func() { os.Setenv("PATH", origPath) }()
|
|
|
|
verifier := NewGpgVerifier()
|
|
c.Assert(verifier.gpgv, Equals, "gpgv1")
|
|
}
|
|
|
|
// If gpgv == gpgv2 and no gpgv1 is available = error
|
|
func (s *GnupgSuite) TestGPGVNothing(c *C) {
|
|
origPath := os.Getenv("PATH")
|
|
os.Setenv("PATH", filepath.Join(s.bins, "gpgv2-only")+":"+filepath.Join(s.bins, "gpg1"))
|
|
defer func() { os.Setenv("PATH", origPath) }()
|
|
|
|
c.Assert(func() { NewGpgVerifier() }, PanicMatches, `Couldn't find a suitable gpgv executable.+`)
|
|
}
|
|
|
|
type Gnupg1VerifierSuite struct {
|
|
VerifierSuite
|
|
}
|
|
|
|
var _ = Suite(&Gnupg1VerifierSuite{})
|
|
|
|
func (s *Gnupg1VerifierSuite) SetUpTest(c *C) {
|
|
s.verifier = NewGpgVerifier()
|
|
s.verifier.AddKeyring("./trusted.gpg")
|
|
|
|
c.Assert(s.verifier.InitKeyring(), IsNil)
|
|
}
|
|
|
|
type Gnupg1SignerSuite struct {
|
|
SignerSuite
|
|
}
|
|
|
|
var _ = Suite(&Gnupg1SignerSuite{})
|
|
|
|
func (s *Gnupg1SignerSuite) SetUpTest(c *C) {
|
|
s.signer = NewGpgSigner()
|
|
s.signer.SetBatch(true)
|
|
|
|
s.verifier = &GoVerifier{}
|
|
s.verifier.AddKeyring("./keyrings/aptly.pub")
|
|
s.verifier.AddKeyring("./keyrings/aptly_passphrase.pub")
|
|
|
|
c.Assert(s.verifier.InitKeyring(), IsNil)
|
|
|
|
s.SignerSuite.SetUpTest(c)
|
|
}
|