mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-07-27 13:57:46 +00:00
System tests for mirror create/update with internal PGP implementation
This commit is contained in:
+80
-23
@@ -15,6 +15,7 @@ import (
|
|||||||
|
|
||||||
"golang.org/x/crypto/openpgp"
|
"golang.org/x/crypto/openpgp"
|
||||||
"golang.org/x/crypto/openpgp/clearsign"
|
"golang.org/x/crypto/openpgp/clearsign"
|
||||||
|
openpgp_errors "golang.org/x/crypto/openpgp/errors"
|
||||||
"golang.org/x/crypto/openpgp/packet"
|
"golang.org/x/crypto/openpgp/packet"
|
||||||
"golang.org/x/crypto/ssh/terminal"
|
"golang.org/x/crypto/ssh/terminal"
|
||||||
)
|
)
|
||||||
@@ -25,6 +26,11 @@ var (
|
|||||||
_ Verifier = &GoVerifier{}
|
_ Verifier = &GoVerifier{}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Internal errors
|
||||||
|
var (
|
||||||
|
errWrongPasshprase = errors.New("unable to decrypt the key, passphrase is wrong")
|
||||||
|
)
|
||||||
|
|
||||||
// GoSigner is implementation of Signer interface using Go internal OpenPGP library
|
// GoSigner is implementation of Signer interface using Go internal OpenPGP library
|
||||||
type GoSigner struct {
|
type GoSigner struct {
|
||||||
keyRef string
|
keyRef string
|
||||||
@@ -106,41 +112,92 @@ func (g *GoSigner) Init() error {
|
|||||||
return fmt.Errorf("looks like there are no keys in gpg, please create one (official manual: http://www.gnupg.org/gph/en/manual.html)")
|
return fmt.Errorf("looks like there are no keys in gpg, please create one (official manual: http://www.gnupg.org/gph/en/manual.html)")
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: pick key by id
|
if g.keyRef == "" {
|
||||||
g.signer = g.secretKeyring[0]
|
// no key reference, pick the first key
|
||||||
|
g.signer = g.secretKeyring[0]
|
||||||
|
} else {
|
||||||
|
pickKeyLoop:
|
||||||
|
for _, signer := range g.secretKeyring {
|
||||||
|
key := KeyFromUint64(signer.PrimaryKey.KeyId)
|
||||||
|
if key.Matches(Key(g.keyRef)) {
|
||||||
|
g.signer = signer
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
if g.signer.PrivateKey.Encrypted {
|
for name := range signer.Identities {
|
||||||
if g.passphrase == "" {
|
if strings.Contains(name, g.keyRef) {
|
||||||
i := 0
|
g.signer = signer
|
||||||
for name := range g.signer.Identities {
|
break pickKeyLoop
|
||||||
if i == 0 {
|
|
||||||
fmt.Printf("openpgp: Passphrase is required to unlock private key \"%s\"\n", name)
|
|
||||||
} else {
|
|
||||||
fmt.Printf(" aka \"%s\"\n", name)
|
|
||||||
}
|
}
|
||||||
i++
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: retry passphrase entry
|
|
||||||
fmt.Print("\nEnter passphrase: ")
|
|
||||||
var bytePassphrase []byte
|
|
||||||
bytePassphrase, err = terminal.ReadPassword(int(syscall.Stdin))
|
|
||||||
if err != nil {
|
|
||||||
return errors.Wrap(err, "error reading passphare")
|
|
||||||
}
|
|
||||||
|
|
||||||
g.passphrase = string(bytePassphrase)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
err = g.signer.PrivateKey.Decrypt([]byte(g.passphrase))
|
if g.signer == nil {
|
||||||
|
return errors.Errorf("couldn't find key for key reference %v", g.keyRef)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if g.signer.PrivateKey.Encrypted {
|
||||||
|
i := 0
|
||||||
|
for name := range g.signer.Identities {
|
||||||
|
if i == 0 {
|
||||||
|
fmt.Printf("openpgp: Passphrase is required to unlock private key \"%s\"\n", name)
|
||||||
|
} else {
|
||||||
|
fmt.Printf(" aka \"%s\"\n", name)
|
||||||
|
}
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
|
||||||
|
if g.passphrase == "" {
|
||||||
|
if g.batch {
|
||||||
|
return errors.New("key is locked with passphrase, but no passphrase was given in batch mode")
|
||||||
|
}
|
||||||
|
|
||||||
|
for attempt := 0; attempt < 3; attempt++ {
|
||||||
|
fmt.Print("\nEnter passphrase: ")
|
||||||
|
var bytePassphrase []byte
|
||||||
|
bytePassphrase, err = terminal.ReadPassword(int(syscall.Stdin))
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrap(err, "error reading passphare")
|
||||||
|
}
|
||||||
|
|
||||||
|
g.passphrase = string(bytePassphrase)
|
||||||
|
|
||||||
|
err = g.decryptKey()
|
||||||
|
if err == nil || err != errWrongPasshprase {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Print("\nWrong passphrase, please try again.\n")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
err = g.decryptKey()
|
||||||
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "error unlocking private key")
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (g *GoSigner) decryptKey() error {
|
||||||
|
err := g.signer.PrivateKey.Decrypt([]byte(g.passphrase))
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if e, ok := err.(openpgp_errors.StructuralError); ok {
|
||||||
|
if string(e) == "private key checksum failure" {
|
||||||
|
return errWrongPasshprase
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return errors.Wrap(err, "error unlocking private key")
|
||||||
|
}
|
||||||
|
|
||||||
// DetachedSign signs file with detached signature in ASCII format
|
// DetachedSign signs file with detached signature in ASCII format
|
||||||
func (g *GoSigner) DetachedSign(source string, destination string) error {
|
func (g *GoSigner) DetachedSign(source string, destination string) error {
|
||||||
fmt.Printf("openpgp: signing file '%s'...\n", filepath.Base(source))
|
fmt.Printf("openpgp: signing file '%s'...\n", filepath.Base(source))
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
Downloading http://mirror.yandex.ru/debian/dists/wheezy-backports/InRelease...
|
||||||
|
openpgp: RSA key ID 8B48AD6246925553
|
||||||
|
openpgp: Good signature from "Debian Archive Automatic Signing Key (7.0/wheezy) <ftpmaster@debian.org>"
|
||||||
|
openpgp: RSA key ID 7638D0442B90D010
|
||||||
|
openpgp: Good signature from "Debian Archive Automatic Signing Key (8/jessie) <ftpmaster@debian.org>"
|
||||||
|
|
||||||
|
Mirror [mirror9]: http://mirror.yandex.ru/debian/ wheezy-backports successfully added.
|
||||||
|
You can run 'aptly mirror update mirror9' to download repository contents.
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
opengpg: failure opening keyring '${HOME}/.gnupg/aptlytest.gpg': open ${HOME}/.gnupg/aptlytest.gpg: no such file or directory
|
||||||
|
Looks like your keyring with trusted keys is empty. You might consider importing some keys.
|
||||||
|
Downloading http://mirror.yandex.ru/debian-backports/dists/squeeze-backports/InRelease...
|
||||||
|
openpgp: Signature made Sun, 13 Mar 2016 12:02:54 MSK using RSA key ID 8B48AD6246925553
|
||||||
|
openpgp: Can't check signature: public key not found
|
||||||
|
Downloading http://mirror.yandex.ru/debian-backports/dists/squeeze-backports/Release...
|
||||||
|
Downloading http://mirror.yandex.ru/debian-backports/dists/squeeze-backports/Release.gpg...
|
||||||
|
openpgp: Signature made Sun, 13 Mar 2016 12:02:54 MSK using RSA key ID 8B48AD6246925553
|
||||||
|
openpgp: Can't check signature: public key not found
|
||||||
|
ERROR: unable to fetch mirror: failed to verify detached signature: openpgp: signature made by unknown entity
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
Downloading http://mirror.yandex.ru/debian/dists/wheezy/InRelease...
|
||||||
|
Downloading http://mirror.yandex.ru/debian/dists/wheezy/Release...
|
||||||
|
Downloading http://mirror.yandex.ru/debian/dists/wheezy/Release.gpg...
|
||||||
|
openpgp: RSA key ID 8B48AD6246925553
|
||||||
|
openpgp: Good signature from "Debian Archive Automatic Signing Key (7.0/wheezy) <ftpmaster@debian.org>"
|
||||||
|
openpgp: RSA key ID 7638D0442B90D010
|
||||||
|
openpgp: Good signature from "Debian Archive Automatic Signing Key (8/jessie) <ftpmaster@debian.org>"
|
||||||
|
|
||||||
|
Mirror [mirror11]: http://mirror.yandex.ru/debian/ wheezy successfully added.
|
||||||
|
You can run 'aptly mirror update mirror11' to download repository contents.
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
|
||||||
|
|
||||||
|
Building download queue...
|
||||||
|
Download queue: 84 items (138.29 MiB)
|
||||||
|
Downloading & parsing package files...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/InRelease...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/Packages.bz2...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/Release...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/Release.gpg...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/jags_4.0.0-1~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/jags_4.0.0-1~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/jags_4.0.0-1~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/littler_0.3.2-1~jessiecran.0_all.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/python-rpy-doc_1.0.3-30~jessiecran.0_all.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/python-rpy2_2.5.6-1~jessiecran.3.2.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/python-rpy2_2.5.6-1~jessiecran.3.2.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/python-rpy2_2.5.6-1~jessiecran.3.2.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/python-rpy_1.0.3-30~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/python-rpy_1.0.3-30~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/python-rpy_1.0.3-30~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-base-core-dbg_3.3.3-1~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-base-core-dbg_3.3.3-1~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-base-core-dbg_3.3.3-1~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-base-core_3.3.3-1~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-base-core_3.3.3-1~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-base-core_3.3.3-1~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-base-dev_3.3.3-1~jessiecran.0_all.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-base-html_3.3.3-1~jessiecran.0_all.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-base_3.3.3-1~jessiecran.0_all.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-boot_1.3-18-1~jessiecran.0_all.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-boot_1.3-18-2~jessiecran.0_all.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-class_7.3-14-1~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-class_7.3-14-1~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-class_7.3-14-1~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-cluster_2.0.5-1~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-cluster_2.0.5-1~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-cluster_2.0.5-1~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-coda_0.18-1-1~jessiecran.0_all.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-codetools_0.2-14-1~jessiecran.0_all.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-codetools_0.2-15-1~jessiecran.0_all.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-foreign_0.8.67-1~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-foreign_0.8.67-1~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-foreign_0.8.67-1~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-kernsmooth_2.23-15-2~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-kernsmooth_2.23-15-2~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-kernsmooth_2.23-15-2~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-lattice_0.20-34-1~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-lattice_0.20-34-1~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-lattice_0.20-34-1~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-littler_0.3.2-1~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-littler_0.3.2-1~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-littler_0.3.2-1~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-mass_7.3-45-1~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-mass_7.3-45-1~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-mass_7.3-45-1~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-matrix_1.2-8-1~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-matrix_1.2-8-1~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-matrix_1.2-8-1~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-mgcv_1.8-16-1~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-mgcv_1.8-16-1~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-mgcv_1.8-16-1~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-nlme_3.1.131-2~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-nlme_3.1.131-2~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-nlme_3.1.131-2~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-nnet_7.3-12-1~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-nnet_7.3-12-1~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-nnet_7.3-12-1~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-rjags_4-6-1~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-rjags_4-6-1~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-rjags_4-6-1~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-rodbc_1.3-14-1~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-rodbc_1.3-14-1~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-rodbc_1.3-14-1~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-rpart_4.1-10-2~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-rpart_4.1-10-2~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-rpart_4.1-10-2~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-spatial_7.3-11-1~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-spatial_7.3-11-1~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-spatial_7.3-11-1~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-survival_2.40-1-1~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-survival_2.40-1-1~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-cran-survival_2.40-1-1~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-doc-html_3.3.3-1~jessiecran.0_all.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-doc-info_3.3.3-1~jessiecran.0_all.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-doc-pdf_3.3.3-1~jessiecran.0_all.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-mathlib_3.3.3-1~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-mathlib_3.3.3-1~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-mathlib_3.3.3-1~jessiecran.0_i386.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/r-recommended_3.3.3-1~jessiecran.0_all.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/rkward-data_0.6.5-1~jessiecran.0_all.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/rkward_0.6.5-1~jessiecran.0_amd64.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/rkward_0.6.5-1~jessiecran.0_armel.deb...
|
||||||
|
Downloading https://cloud.r-project.org/bin/linux/debian/jessie-cran3/rkward_0.6.5-1~jessiecran.0_i386.deb...
|
||||||
|
Mirror `flat` has been successfully updated.
|
||||||
|
openpgp: Good signature from "Johannes Ranke (CRAN Debian archive) <jranke@uni-bremen.de>"
|
||||||
|
openpgp: DSA key ID 06F90DE5381BA480
|
||||||
@@ -357,3 +357,41 @@ class CreateMirror28Test(BaseTest):
|
|||||||
|
|
||||||
self.check_output()
|
self.check_output()
|
||||||
self.check_cmd_output("aptly mirror show mirror28", "mirror_show", match_prepare=removeDates)
|
self.check_cmd_output("aptly mirror show mirror28", "mirror_show", match_prepare=removeDates)
|
||||||
|
|
||||||
|
|
||||||
|
class CreateMirror29Test(BaseTest):
|
||||||
|
"""
|
||||||
|
create mirror: repo with InRelease verification (internal GPG implementation)
|
||||||
|
"""
|
||||||
|
runCmd = "aptly mirror create --keyring=aptlytest.gpg mirror9 http://mirror.yandex.ru/debian/ wheezy-backports"
|
||||||
|
configOverride = {"gpgProvider": "internal"}
|
||||||
|
fixtureGpg = True
|
||||||
|
|
||||||
|
def outputMatchPrepare(_, s):
|
||||||
|
return re.sub(r'Signature made .* using', '', s)
|
||||||
|
|
||||||
|
|
||||||
|
class CreateMirror30Test(BaseTest):
|
||||||
|
"""
|
||||||
|
create mirror: repo with InRelease verification, failure (internal GPG implementation)
|
||||||
|
"""
|
||||||
|
runCmd = "aptly mirror create --keyring=aptlytest.gpg mirror10 http://mirror.yandex.ru/debian-backports/ squeeze-backports"
|
||||||
|
configOverride = {"gpgProvider": "internal"}
|
||||||
|
gold_processor = BaseTest.expand_environ
|
||||||
|
fixtureGpg = False
|
||||||
|
expectedCode = 1
|
||||||
|
|
||||||
|
def outputMatchPrepare(_, s):
|
||||||
|
return re.sub(r'Signature made .* using', '', s)
|
||||||
|
|
||||||
|
|
||||||
|
class CreateMirror31Test(BaseTest):
|
||||||
|
"""
|
||||||
|
create mirror: repo with Release + Release.gpg verification (internal GPG implementation)
|
||||||
|
"""
|
||||||
|
runCmd = "aptly mirror create --keyring=aptlytest.gpg mirror11 http://mirror.yandex.ru/debian/ wheezy"
|
||||||
|
configOverride = {"gpgProvider": "internal"}
|
||||||
|
fixtureGpg = True
|
||||||
|
|
||||||
|
def outputMatchPrepare(_, s):
|
||||||
|
return re.sub(r'Signature made .* using', '', s)
|
||||||
|
|||||||
@@ -327,3 +327,19 @@ class UpdateMirror19Test(BaseTest):
|
|||||||
|
|
||||||
def output_processor(self, output):
|
def output_processor(self, output):
|
||||||
return "\n".join(line for line in output.split("\n") if ".deb" not in line)
|
return "\n".join(line for line in output.split("\n") if ".deb" not in line)
|
||||||
|
|
||||||
|
|
||||||
|
class UpdateMirror20Test(BaseTest):
|
||||||
|
"""
|
||||||
|
update mirrors: flat repository (internal GPG implementation)
|
||||||
|
"""
|
||||||
|
fixtureGpg = True
|
||||||
|
fixtureCmds = [
|
||||||
|
"aptly mirror create --keyring=aptlytest.gpg -architectures=amd64 flat https://cloud.r-project.org/bin/linux/debian jessie-cran3/",
|
||||||
|
]
|
||||||
|
configOverride = {"gpgProvider": "internal"}
|
||||||
|
runCmd = "aptly mirror update --keyring=aptlytest.gpg flat"
|
||||||
|
outputMatchPrepare = filterOutSignature
|
||||||
|
|
||||||
|
def output_processor(self, output):
|
||||||
|
return "\n".join(sorted(output.split("\n")))
|
||||||
|
|||||||
Reference in New Issue
Block a user