go_pgp/Export_test.go
2024-05-10 22:24:14 +02:00

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")
}
}