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