Files
PGPy-3_13_patch/tests/test_04_PGPKeyring.py
2014-09-30 18:38:10 -07:00

120 lines
4.4 KiB
Python

""" test the functionality of PGPKeyring
"""
import glob
from pgpy import PGPKeyring
from pgpy import PGPMessage
from pgpy import PGPSignature
from pgpy.types import Fingerprint
class TestPGPKeyring(object):
kr = PGPKeyring()
def test_load(self):
kc = []
for kf in glob.glob('tests/testdata/*test.asc') + glob.glob('tests/testdata/signatures/*.key.asc'):
with open(kf, 'r') as kff:
kc.append(kff.read())
keys = self.kr.load(kc)
# keys
assert all(isinstance(k, Fingerprint) for k in keys)
# __len__
assert len(keys) == 10
assert len(self.kr) == 16
# __contains__
# RSA von TestKey
selectors = ["F429 4BC8 094A 7E05 85C8 5E86 3747 3B37 58C4 4F36", "37473B3758C44F36", "58C44F36",
"RSA von TestKey", "rsa@test.key"]
for selector in selectors:
assert selector in self.kr
# DSA von TestKey
selectors = ["EBC8 8A94 ACB1 10F1 BE3F E3C1 2B47 4BB0 2084 C712", "2B474BB02084C712", "2084C712",
"DSA von TestKey", "dsa@test.key"]
for selector in selectors:
assert selector in self.kr
# fingerprints filtering
# we have 10 keys
assert len(self.kr.fingerprints()) == 10
# 10 public halves, 6 private halves
assert len(self.kr.fingerprints(keyhalf='public')) == 10
assert len(self.kr.fingerprints(keyhalf='private')) == 6
# we have 5 primary keys; 5 public and 2 private
assert len(self.kr.fingerprints(keytype='primary')) == 5
assert len(self.kr.fingerprints(keytype='primary', keyhalf='public')) == 5
assert len(self.kr.fingerprints(keytype='primary', keyhalf='private')) == 2
# and the other 5; 5 public and 4 private
assert len(self.kr.fingerprints(keytype='sub')) == 5
assert len(self.kr.fingerprints(keytype='sub', keyhalf='public')) == 5
assert len(self.kr.fingerprints(keytype='sub', keyhalf='private')) == 4
# now test sorting:
rvt = self.kr._get_keys("RSA von TestKey")
assert len(rvt) == 2
assert not rvt[0].is_public
assert rvt[1].is_public
def test_select_fingerprint(self):
with self.kr.key("F429 4BC8 094A 7E05 85C8 5E86 3747 3B37 58C4 4F36") as rsa:
assert rsa.userids[0].name == "RSA von TestKey"
with self.kr.key("EBC8 8A94 ACB1 10F1 BE3F E3C1 2B47 4BB0 2084 C712") as dsa:
assert dsa.userids[0].name == "DSA von TestKey"
def test_select_keyid(self):
with self.kr.key("37473B3758C44F36") as rsa:
assert rsa.userids[0].name == "RSA von TestKey"
with self.kr.key("2B474BB02084C712") as dsa:
assert dsa.userids[0].name == "DSA von TestKey"
def test_select_shortid(self):
with self.kr.key("58C44F36") as rsa:
assert rsa.userids[0].name == "RSA von TestKey"
with self.kr.key("2084C712") as dsa:
assert dsa.userids[0].name == "DSA von TestKey"
def test_select_name(self):
with self.kr.key("RSA von TestKey") as rsa:
assert rsa.userids[0].name == "RSA von TestKey"
with self.kr.key("DSA von TestKey") as dsa:
assert dsa.userids[0].name == "DSA von TestKey"
def test_select_comment(self):
with self.kr.key("2048-bit RSA") as rsa:
assert rsa.userids[0].name == "RSA von TestKey"
with self.kr.key("2048-bit DSA") as dsa:
assert dsa.userids[0].name == "DSA von TestKey"
def test_select_email(self):
with self.kr.key("rsa@test.key") as rsa:
assert rsa.userids[0].name == "RSA von TestKey"
with self.kr.key("dsa@test.key") as dsa:
assert dsa.userids[0].name == "DSA von TestKey"
def test_select_pgpsignature(self):
sig = PGPSignature()
with open('tests/testdata/signatures/debian-sid.sig.asc', 'r') as sigf:
sig.parse(sigf.read())
with self.kr.key(sig) as sigkey:
assert sigkey.fingerprint.keyid == sig.signer
def test_select_pgpmessage(self):
m1 = PGPMessage()
with open('tests/testdata/messages/message.rsa.cast5.asc', 'r') as m1f:
m1.parse(m1f.read())
with self.kr.key(m1) as rsakey:
assert rsakey.fingerprint == "00EC FAF5 48AE B655 F861 8193 EEE0 97A0 17B9 79CA"
assert rsakey.parent.fingerprint == "F429 4BC8 094A 7E05 85C8 5E86 3747 3B37 58C4 4F36"