mirror of https://github.com/fluxcd/flux2.git
Add gpg key path and passphrase as args
Signed-off-by: Somtochi Onyekwere <somtochionyekwere@gmail.com>pull/1854/head
parent
b9ceceada4
commit
0beab87f5b
@ -0,0 +1,37 @@
|
|||||||
|
package git
|
||||||
|
|
||||||
|
// Option is a some configuration that modifies options for a commit.
|
||||||
|
type Option interface {
|
||||||
|
// ApplyToCommit applies this configuration to a given commit option.
|
||||||
|
ApplyToCommit(*CommitOptions)
|
||||||
|
}
|
||||||
|
|
||||||
|
// CommitOptions contains options for making a commit.
|
||||||
|
type CommitOptions struct {
|
||||||
|
*GPGSigningInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
// GPGSigningInfo contains information for signing a commit.
|
||||||
|
type GPGSigningInfo struct {
|
||||||
|
PrivateKeyPath string
|
||||||
|
Passphrase string
|
||||||
|
KeyID string
|
||||||
|
}
|
||||||
|
|
||||||
|
type GpgSigningOption struct {
|
||||||
|
*GPGSigningInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w GpgSigningOption) ApplyToCommit(in *CommitOptions) {
|
||||||
|
in.GPGSigningInfo = w.GPGSigningInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
func WithGpgSigningOption(path, passphrase, keyID string) Option {
|
||||||
|
return GpgSigningOption{
|
||||||
|
GPGSigningInfo: &GPGSigningInfo{
|
||||||
|
PrivateKeyPath: path,
|
||||||
|
Passphrase: passphrase,
|
||||||
|
KeyID: keyID,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,66 @@
|
|||||||
|
// +build unit
|
||||||
|
|
||||||
|
package gogit
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/fluxcd/flux2/internal/bootstrap/git"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestGetOpenPgpEntity(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
keyPath string
|
||||||
|
passphrase string
|
||||||
|
id string
|
||||||
|
expectErr bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "no default key id given",
|
||||||
|
keyPath: "testdata/private.key",
|
||||||
|
passphrase: "flux",
|
||||||
|
id: "",
|
||||||
|
expectErr: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "key id given",
|
||||||
|
keyPath: "testdata/private.key",
|
||||||
|
passphrase: "flux",
|
||||||
|
id: "0619327DBD777415",
|
||||||
|
expectErr: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "wrong key id",
|
||||||
|
keyPath: "testdata/private.key",
|
||||||
|
passphrase: "flux",
|
||||||
|
id: "0619327DBD777416",
|
||||||
|
expectErr: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "wrong password",
|
||||||
|
keyPath: "testdata/private.key",
|
||||||
|
passphrase: "fluxe",
|
||||||
|
id: "0619327DBD777415",
|
||||||
|
expectErr: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
gpgInfo := git.GPGSigningInfo{
|
||||||
|
PrivateKeyPath: tt.keyPath,
|
||||||
|
Passphrase: tt.passphrase,
|
||||||
|
KeyID: tt.id,
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := getOpenPgpEntity(gpgInfo)
|
||||||
|
if err != nil && !tt.expectErr {
|
||||||
|
t.Errorf("unexpected error: %s", err)
|
||||||
|
}
|
||||||
|
if err == nil && tt.expectErr {
|
||||||
|
t.Errorf("expected error when %s", tt.name)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
Loading…
Reference in New Issue