139 lines
4.8 KiB
Go
139 lines
4.8 KiB
Go
package go_pgp
|
|
|
|
import (
|
|
"path/filepath"
|
|
"testing"
|
|
)
|
|
|
|
func TestWritePublicEntityData(t *testing.T) {
|
|
initTest()
|
|
err := WritePublicEntityData(testSenderEntity, "ä/ö/ü.@")
|
|
if err == nil {
|
|
t.Errorf("TestWritePublicEntityData: test case 1: the file 'ä/ö/ü.@' should not have been written")
|
|
t.FailNow()
|
|
}
|
|
|
|
filePath := filepath.Join(t.TempDir(), "public.pgp")
|
|
err = WritePublicEntityData(testSenderEntity, filePath)
|
|
if err != nil {
|
|
t.Errorf("TestWritePublicEntityData: test case 2: failed to write public entity data")
|
|
t.FailNow()
|
|
}
|
|
|
|
el, err := ReadKeyRingFromFile(filePath)
|
|
if err != nil || len(el.EntityList) == 0 {
|
|
t.Errorf("TestWritePublicEntityData: test case 3: failed to read public entity data")
|
|
t.FailNow()
|
|
}
|
|
|
|
importedIdentity := el.EntityList[0].PrimaryIdentity()
|
|
originalIdentity := testSenderEntity.PrimaryIdentity()
|
|
if importedIdentity.Name != originalIdentity.Name {
|
|
t.Errorf("TestWritePublicEntityData: test case 4: expected primary identity name '%s' but got '%s'", originalIdentity.Name, importedIdentity.Name)
|
|
}
|
|
|
|
if err = WritePublicEntityData(nil, filePath); err == nil {
|
|
t.Error("TestWritePublicEntityData: test case 5: an undefined entity shoud not be exportable")
|
|
}
|
|
}
|
|
|
|
func TestWritePrivateEntityData(t *testing.T) {
|
|
initTest()
|
|
filePath := filepath.Join(t.TempDir(), "private.pgp")
|
|
err := WritePrivateEntityData(testSenderEntity, filePath)
|
|
if err != nil {
|
|
t.Errorf("TestWritePrivateEntityData: test case 1: failed to write public entity data")
|
|
t.FailNow()
|
|
}
|
|
|
|
el, err := ReadKeyRingFromFile(filePath)
|
|
if err != nil || len(el.EntityList) == 0 {
|
|
t.Errorf("TestWritePrivateEntityData: test case 2: failed to read public entity data")
|
|
t.FailNow()
|
|
}
|
|
|
|
entity := el.EntityList[0]
|
|
importedIdentity := entity.PrimaryIdentity()
|
|
originalIdentity := testSenderEntity.PrimaryIdentity()
|
|
if importedIdentity.Name != originalIdentity.Name {
|
|
t.Errorf("TestWritePrivateEntityData: test case 3: expected primary identity name '%s' but got '%s'", originalIdentity.Name, importedIdentity.Name)
|
|
}
|
|
|
|
if entity.PrivateKey == nil {
|
|
t.Errorf("TestWritePrivateEntityData: test case 4: private key is missing")
|
|
}
|
|
|
|
if err = WritePrivateEntityData(nil, filePath); err == nil {
|
|
t.Error("TestWritePrivateEntityData: test case 5: an undefined entity shoud not be exportable")
|
|
}
|
|
}
|
|
|
|
func TestWriteArmoredPublicEntityData(t *testing.T) {
|
|
initTest()
|
|
filePath := filepath.Join(t.TempDir(), "public.pgp")
|
|
err := WriteArmoredPublicEntityData(testSenderEntity, filePath)
|
|
if err != nil {
|
|
t.Errorf("TestWriteArmoredPublicEntityData: test case 1: failed to write public entity data")
|
|
t.FailNow()
|
|
}
|
|
|
|
el, err := ReadArmoredKeyRingFromFile(filePath)
|
|
if err != nil || len(el.EntityList) == 0 {
|
|
t.Errorf("TestWriteArmoredPublicEntityData: test case 2: failed to read public entity data")
|
|
t.FailNow()
|
|
}
|
|
|
|
importedIdentity := el.EntityList[0].PrimaryIdentity()
|
|
originalIdentity := testSenderEntity.PrimaryIdentity()
|
|
if importedIdentity.Name != originalIdentity.Name {
|
|
t.Errorf("TestWriteArmoredPublicEntityData: test case 3: expected primary identity name '%s' but got '%s'", originalIdentity.Name, importedIdentity.Name)
|
|
}
|
|
|
|
if err = WriteArmoredPublicEntityData(nil, filePath); err == nil {
|
|
t.Error("TestWriteArmoredPublicEntityData: test case 4: an undefined entity shoud not be exportable")
|
|
}
|
|
}
|
|
|
|
func TestWriteArmoredPrivateEntityData(t *testing.T) {
|
|
initTest()
|
|
filePath := filepath.Join(t.TempDir(), "private.pgp")
|
|
err := WriteArmoredPrivateEntityData(testSenderEntity, filePath)
|
|
if err != nil {
|
|
t.Errorf("TestWriteArmoredPrivateEntityData: test case 1: failed to write public entity data")
|
|
t.FailNow()
|
|
}
|
|
|
|
el, err := ReadArmoredKeyRingFromFile(filePath)
|
|
if err != nil || len(el.EntityList) == 0 {
|
|
t.Errorf("TestWriteArmoredPrivateEntityData: test case 2: failed to read public entity data")
|
|
t.FailNow()
|
|
}
|
|
|
|
entity := el.EntityList[0]
|
|
importedIdentity := entity.PrimaryIdentity()
|
|
originalIdentity := testSenderEntity.PrimaryIdentity()
|
|
if importedIdentity.Name != originalIdentity.Name {
|
|
t.Errorf("TestWriteArmoredPrivateEntityData: test case 3: expected primary identity name '%s' but got '%s'", originalIdentity.Name, importedIdentity.Name)
|
|
}
|
|
|
|
if entity.PrivateKey == nil {
|
|
t.Errorf("TestWriteArmoredPrivateEntityData: test case 4: private key is missing")
|
|
}
|
|
|
|
if err = WriteArmoredPrivateEntityData(nil, filePath); err == nil {
|
|
t.Error("TestWriteArmoredPrivateEntityData: test case 5: an undefined entity shoud not be exportable")
|
|
}
|
|
}
|
|
|
|
func TestExtractPublicEntityData(t *testing.T) {
|
|
if _, err := ExtractPublicEntityData(nil); err == nil {
|
|
t.Errorf("TestExtractPublicEntityData: test case 1: no key should be extractable from a 'nil' entity")
|
|
}
|
|
}
|
|
|
|
func TestExtractPrivateEntityData(t *testing.T) {
|
|
if _, err := ExtractPrivateEntityData(nil); err == nil {
|
|
t.Errorf("TestExtractPrivateEntityData: test case 1: no key should be extractable from a 'nil' entity")
|
|
}
|
|
}
|