diff --git a/lib/pgp/pgp_test.go b/lib/pgp/pgp_test.go new file mode 100644 index 0000000..faecf8b --- /dev/null +++ b/lib/pgp/pgp_test.go @@ -0,0 +1,52 @@ +package pfpgp + +import ( + "io/ioutil" + "testing" + "time" +) + +func TestGetKeyInfo(t *testing.T) { + timeFormat := "2006-01-02T15:04:05.000Z" + wt, err := time.Parse(timeFormat, "1970-01-01T00:00:00.000Z") + if err != nil { + t.Fatalf("failed parsing wantTime: %v", err) + } + + tests := []struct { + desc string + keyFile string + email string + wantId string + wantExp time.Time + wantErr bool + }{{ + desc: "Success reading exp/id", + keyFile: "key1.asc", + email: "morrowc@ops-netman.net", + wantId: "AFAB3052A843B36B", + wantExp: wt, + }} + + for _, test := range tests { + key, err := ioutil.ReadFile("testdata/" + test.keyFile) + if err != nil { + t.Fatalf("[%v]: failed to read keyfile (%v): %v", test.desc, test.keyFile, err) + } + + gotId, gotExp, err := GetKeyInfo(string(key), test.email) + switch { + case err != nil && !test.wantErr: + t.Errorf("[%v]: got error when not expecting one: %v", test.desc, err) + case err == nil && test.wantErr: + t.Errorf("[%v]: did not get error when expecting one", test.desc) + case err == nil: + if gotId != test.wantId { + t.Errorf("[%v]: got/want ID differences: %v / %v", test.desc, gotId, test.wantId) + } + if !test.wantExp.Equal(gotExp) { + t.Errorf("[%v]: got/want Exp differences: %v / %v", test.desc, gotExp, test.wantExp) + } + } + } +} diff --git a/lib/pgp/testdata/key1.asc b/lib/pgp/testdata/key1.asc new file mode 100644 index 0000000..8494da2 --- /dev/null +++ b/lib/pgp/testdata/key1.asc @@ -0,0 +1,142 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +=+LjA +-----END PGP PUBLIC KEY BLOCK----- +