From 709782cb41b5c7d01edc6498f0c611eaa84e6354 Mon Sep 17 00:00:00 2001 From: Roman Zeyde Date: Tue, 21 Jul 2015 14:16:13 +0300 Subject: [PATCH] tests: add a bit --- sshagent/tests/__init__.py | 0 sshagent/tests/test_formats.py | 39 ++++++++++++++++++++++++++++ sshagent/tests/test_server.py | 5 ++++ sshagent/tests/test_utils.py | 47 ++++++++++++++++++++++++++++++++++ 4 files changed, 91 insertions(+) create mode 100644 sshagent/tests/__init__.py create mode 100644 sshagent/tests/test_formats.py create mode 100644 sshagent/tests/test_server.py create mode 100644 sshagent/tests/test_utils.py diff --git a/sshagent/tests/__init__.py b/sshagent/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/sshagent/tests/test_formats.py b/sshagent/tests/test_formats.py new file mode 100644 index 0000000..b79b015 --- /dev/null +++ b/sshagent/tests/test_formats.py @@ -0,0 +1,39 @@ +import binascii + +from .. import formats + + +def test_fingerprint(): + fp = '5d:41:40:2a:bc:4b:2a:76:b9:71:9d:91:10:17:c5:92' + assert formats.fingerprint('hello') == fp + + +_point = ( + 44423495295951059636974944244307637263954375053872017334547086177777411863925L, # nopep8 + 111713194882028655451852320740440245619792555065469028846314891587105736340201L # nopep8 +) + +_public_key = ( + 'ecdsa-sha2-nistp256 ' + 'AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTY' + 'AAABBBGI2zqveJSB+geQEWG46OvGs2h3+0qu7tIdsH8Wylr' + 'V19vttd7GR5rKvTWJt8b9ErthmnFALelAFKOB/u50jsuk= ' + 'home\n' +) + + +def test_parse_public_key(): + key = formats.import_public_key(_public_key) + assert key['name'] == 'home' + assert key['point'] == _point + + assert key['curve'] == 'nistp256' + assert key['fingerprint'] == '4b:19:bc:0f:c8:7e:dc:fa:1a:e3:c2:ff:6f:e0:80:a2' # nopep8 + assert key['type'] == 'ecdsa-sha2-nistp256' + assert key['size'] == 32 + + +def test_decompress(): + blob = '036236ceabde25207e81e404586e3a3af1acda1dfed2abbbb4876c1fc5b296b575' + result = formats.export_public_key(binascii.unhexlify(blob), label='home') + assert result == _public_key diff --git a/sshagent/tests/test_server.py b/sshagent/tests/test_server.py new file mode 100644 index 0000000..34ecae7 --- /dev/null +++ b/sshagent/tests/test_server.py @@ -0,0 +1,5 @@ +from .. import server + + +def test_socket(): + server.unix_domain_socket_server('name') diff --git a/sshagent/tests/test_utils.py b/sshagent/tests/test_utils.py new file mode 100644 index 0000000..9d88eec --- /dev/null +++ b/sshagent/tests/test_utils.py @@ -0,0 +1,47 @@ +import io +import pytest + +from .. import util + + +def test_bytes2num(): + assert util.bytes2num(b'\x12\x34') == 0x1234 + + +def test_num2bytes(): + assert util.num2bytes(0x1234, size=2) == b'\x12\x34' + + +def test_pack(): + assert util.pack('BHL', 1, 2, 3) == b'\x01\x00\x02\x00\x00\x00\x03' + + +def test_frames(): + msgs = [b'aaa', b'bb', b'c' * 0x12340] + f = util.frame(*msgs) + assert f == b'\x00\x01\x23\x45' + b''.join(msgs) + assert util.read_frame(io.BytesIO(f)) == b''.join(msgs) + + +class SocketMock(object): + def __init__(self): + self.buf = io.BytesIO() + + def sendall(self, data): + self.buf.write(data) + + def recv(self, size): + return self.buf.read(size) + + +def test_send_recv(): + s = SocketMock() + util.send(s, b'123') + util.send(s, data=[42], fmt='B') + assert s.buf.getvalue() == b'123*' + + s.buf.seek(0) + assert util.recv(s, 2) == b'12' + assert util.recv(s, 2) == b'3*' + + pytest.raises(EOFError, util.recv, s, 1)