forked from indymedia/epicyon
Move tests to their own file
parent
15c787ce83
commit
8705b9e44c
9
cache.py
9
cache.py
|
@ -47,12 +47,3 @@ def getWebfingerFromCache(handle: str):
|
||||||
return cachedWebfingers[handle]
|
return cachedWebfingers[handle]
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def testCache():
|
|
||||||
print('testCache')
|
|
||||||
personUrl="cat@cardboard.box"
|
|
||||||
personJson={ "id": 123456, "test": "This is a test" }
|
|
||||||
storePersonInCache(personUrl,personJson)
|
|
||||||
result=getPersonFromCache(personUrl)
|
|
||||||
assert result['id']==123456
|
|
||||||
assert result['test']=='This is a test'
|
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,9 @@ import json
|
||||||
import cgi
|
import cgi
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
from session import createSession
|
from session import createSession
|
||||||
from httpsig import testHttpsig
|
from tests import testHttpsig
|
||||||
from cache import testCache
|
from tests import testCache
|
||||||
|
from tests import testThreads
|
||||||
from webfinger import webfingerMeta
|
from webfinger import webfingerMeta
|
||||||
from webfinger import webfingerLookup
|
from webfinger import webfingerLookup
|
||||||
from person import personLookup
|
from person import personLookup
|
||||||
|
@ -21,7 +22,6 @@ from person import personKeyLookup
|
||||||
from person import personOutboxJson
|
from person import personOutboxJson
|
||||||
from inbox import inboxPermittedMessage
|
from inbox import inboxPermittedMessage
|
||||||
from follow import getFollowingFeed
|
from follow import getFollowingFeed
|
||||||
from threads import testThreads
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ import json
|
||||||
import sys
|
import sys
|
||||||
import requests
|
import requests
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
from httpsig import testHttpsig
|
from tests import testHttpsig
|
||||||
from daemon import runDaemon
|
from daemon import runDaemon
|
||||||
import socket
|
import socket
|
||||||
from follow import clearFollows
|
from follow import clearFollows
|
||||||
|
|
34
httpsig.py
34
httpsig.py
|
@ -108,37 +108,3 @@ def verifyPostHeaders(https: bool, publicKeyPem: str, headers: dict, path: str,
|
||||||
return True
|
return True
|
||||||
except (ValueError, TypeError):
|
except (ValueError, TypeError):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def testHttpsigBase(withDigest):
|
|
||||||
print('testHttpsig(' + str(withDigest) + ')')
|
|
||||||
username='socrates'
|
|
||||||
domain='argumentative.social'
|
|
||||||
https=True
|
|
||||||
port=80
|
|
||||||
privateKeyPem,publicKeyPem,person,wfEndpoint=createPerson(username,domain,port,https,False)
|
|
||||||
messageBodyJson = '{"a key": "a value", "another key": "A string"}'
|
|
||||||
if not withDigest:
|
|
||||||
headers = {'host': domain}
|
|
||||||
else:
|
|
||||||
bodyDigest = base64.b64encode(SHA256.new(messageBodyJson.encode()).digest())
|
|
||||||
headers = {'host': domain, 'digest': f'SHA-256={bodyDigest}'}
|
|
||||||
path='/inbox'
|
|
||||||
signatureHeader = signPostHeaders(privateKeyPem, username, domain, path, https, None)
|
|
||||||
headers['signature'] = signatureHeader
|
|
||||||
assert verifyPostHeaders(https, publicKeyPem, headers, '/inbox' ,False, messageBodyJson)
|
|
||||||
assert verifyPostHeaders(https, publicKeyPem, headers, '/parambulator/inbox', False , messageBodyJson) == False
|
|
||||||
assert verifyPostHeaders(https, publicKeyPem, headers, '/inbox', True, messageBodyJson) == False
|
|
||||||
if not withDigest:
|
|
||||||
# fake domain
|
|
||||||
headers = {'host': 'bogon.domain'}
|
|
||||||
else:
|
|
||||||
# correct domain but fake message
|
|
||||||
messageBodyJson = '{"a key": "a value", "another key": "Fake GNUs"}'
|
|
||||||
bodyDigest = base64.b64encode(SHA256.new(messageBodyJson.encode()).digest())
|
|
||||||
headers = {'host': domain, 'digest': f'SHA-256={bodyDigest}'}
|
|
||||||
headers['signature'] = signatureHeader
|
|
||||||
assert verifyPostHeaders(https, publicKeyPem, headers, '/inbox', True, messageBodyJson) == False
|
|
||||||
|
|
||||||
def testHttpsig():
|
|
||||||
testHttpsigBase(False)
|
|
||||||
testHttpsigBase(True)
|
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
__filename__ = "tests.py"
|
||||||
|
__author__ = "Bob Mottram"
|
||||||
|
__license__ = "AGPL3+"
|
||||||
|
__version__ = "0.0.1"
|
||||||
|
__maintainer__ = "Bob Mottram"
|
||||||
|
__email__ = "bob@freedombone.net"
|
||||||
|
__status__ = "Production"
|
||||||
|
|
||||||
|
import base64
|
||||||
|
import time
|
||||||
|
from person import createPerson
|
||||||
|
from Crypto.Hash import SHA256
|
||||||
|
from httpsig import signPostHeaders
|
||||||
|
from httpsig import verifyPostHeaders
|
||||||
|
from cache import storePersonInCache
|
||||||
|
from cache import getPersonFromCache
|
||||||
|
from threads import threadWithTrace
|
||||||
|
|
||||||
|
def testHttpsigBase(withDigest):
|
||||||
|
print('testHttpsig(' + str(withDigest) + ')')
|
||||||
|
username='socrates'
|
||||||
|
domain='argumentative.social'
|
||||||
|
https=True
|
||||||
|
port=80
|
||||||
|
privateKeyPem,publicKeyPem,person,wfEndpoint=createPerson(username,domain,port,https,False)
|
||||||
|
messageBodyJson = '{"a key": "a value", "another key": "A string"}'
|
||||||
|
if not withDigest:
|
||||||
|
headers = {'host': domain}
|
||||||
|
else:
|
||||||
|
bodyDigest = base64.b64encode(SHA256.new(messageBodyJson.encode()).digest())
|
||||||
|
headers = {'host': domain, 'digest': f'SHA-256={bodyDigest}'}
|
||||||
|
path='/inbox'
|
||||||
|
signatureHeader = signPostHeaders(privateKeyPem, username, domain, path, https, None)
|
||||||
|
headers['signature'] = signatureHeader
|
||||||
|
assert verifyPostHeaders(https, publicKeyPem, headers, '/inbox' ,False, messageBodyJson)
|
||||||
|
assert verifyPostHeaders(https, publicKeyPem, headers, '/parambulator/inbox', False , messageBodyJson) == False
|
||||||
|
assert verifyPostHeaders(https, publicKeyPem, headers, '/inbox', True, messageBodyJson) == False
|
||||||
|
if not withDigest:
|
||||||
|
# fake domain
|
||||||
|
headers = {'host': 'bogon.domain'}
|
||||||
|
else:
|
||||||
|
# correct domain but fake message
|
||||||
|
messageBodyJson = '{"a key": "a value", "another key": "Fake GNUs"}'
|
||||||
|
bodyDigest = base64.b64encode(SHA256.new(messageBodyJson.encode()).digest())
|
||||||
|
headers = {'host': domain, 'digest': f'SHA-256={bodyDigest}'}
|
||||||
|
headers['signature'] = signatureHeader
|
||||||
|
assert verifyPostHeaders(https, publicKeyPem, headers, '/inbox', True, messageBodyJson) == False
|
||||||
|
|
||||||
|
def testHttpsig():
|
||||||
|
testHttpsigBase(False)
|
||||||
|
testHttpsigBase(True)
|
||||||
|
|
||||||
|
def testCache():
|
||||||
|
print('testCache')
|
||||||
|
personUrl="cat@cardboard.box"
|
||||||
|
personJson={ "id": 123456, "test": "This is a test" }
|
||||||
|
storePersonInCache(personUrl,personJson)
|
||||||
|
result=getPersonFromCache(personUrl)
|
||||||
|
assert result['id']==123456
|
||||||
|
assert result['test']=='This is a test'
|
||||||
|
|
||||||
|
def testThreadsFunction(param: str):
|
||||||
|
for i in range(10000):
|
||||||
|
time.sleep(2)
|
||||||
|
|
||||||
|
def testThreads():
|
||||||
|
print('testThreads')
|
||||||
|
thr = threadWithTrace(target=testThreadsFunction,args=('test',),daemon=True)
|
||||||
|
thr.start()
|
||||||
|
assert thr.isAlive()==True
|
||||||
|
time.sleep(1)
|
||||||
|
thr.kill()
|
||||||
|
thr.join()
|
||||||
|
assert thr.isAlive()==False
|
14
threads.py
14
threads.py
|
@ -40,17 +40,3 @@ class threadWithTrace(threading.Thread):
|
||||||
|
|
||||||
def kill(self):
|
def kill(self):
|
||||||
self.killed = True
|
self.killed = True
|
||||||
|
|
||||||
def testThreadsFunction(param: str):
|
|
||||||
for i in range(10000):
|
|
||||||
time.sleep(2)
|
|
||||||
|
|
||||||
def testThreads():
|
|
||||||
print('testThreads')
|
|
||||||
thr = threadWithTrace(target=testThreadsFunction,args=('test',),daemon=True)
|
|
||||||
thr.start()
|
|
||||||
assert thr.isAlive()==True
|
|
||||||
time.sleep(1)
|
|
||||||
thr.kill()
|
|
||||||
thr.join()
|
|
||||||
assert thr.isAlive()==False
|
|
||||||
|
|
Loading…
Reference in New Issue