Set up two test servers

master
Bob Mottram 2019-06-30 22:20:02 +01:00
parent 8705b9e44c
commit 906e3de1de
4 changed files with 96 additions and 11 deletions

View File

@ -12,9 +12,6 @@ import json
import cgi
from pprint import pprint
from session import createSession
from tests import testHttpsig
from tests import testCache
from tests import testThreads
from webfinger import webfingerMeta
from webfinger import webfingerLookup
from person import personLookup
@ -205,12 +202,6 @@ def runDaemon(domain: str,port=80,https=True,fedList=[],useTor=False) -> None:
return
session = createSession(useTor)
print('Running tests...')
testHttpsig()
testCache()
testThreads()
print('Tests succeeded\n')
serverAddress = ('', port)
httpd = HTTPServer(serverAddress, PubServer)
httpd.domain=domain

View File

@ -31,6 +31,10 @@ from follow import followPerson
from follow import followerOfPerson
from follow import unfollowPerson
from follow import unfollowerOfPerson
from tests import testPostMessageBetweenServers
from tests import runAllTests
runAllTests()
federationList=['mastodon.social','wild.com','trees.com','127.0.0.1']
username='testuser'
@ -75,10 +79,11 @@ setBio(username,domain,'Some personal info')
#outboxJson=createOutbox(username,domain,port,https,2,True,None)
#pprint(outboxJson)
runDaemon(domain,port,https,federationList,useTor)
testPostMessageBetweenServers()
#runDaemon(domain,port,https,federationList,useTor)
#testHttpsig()
#sys.exit()
sys.exit()
#pprint(person)
#print('\n')

View File

@ -264,6 +264,7 @@ def createPostBase(username: str, domain: str, toUrl: str, ccUrl: str, https: bo
postCC=''
newPostId=prefix+'://'+domain+'/users/'+username+'/statuses/'+statusNumber
sensitive=False
summary=None
if subject:
summary=subject
sensitive=True

View File

@ -8,6 +8,8 @@ __status__ = "Production"
import base64
import time
import os
import shutil
from person import createPerson
from Crypto.Hash import SHA256
from httpsig import signPostHeaders
@ -15,6 +17,13 @@ from httpsig import verifyPostHeaders
from cache import storePersonInCache
from cache import getPersonFromCache
from threads import threadWithTrace
from daemon import runDaemon
from session import createSession
from person import createPerson
from posts import deleteAllPosts
from posts import createPublicPost
from follow import followPerson
from follow import followerOfPerson
def testHttpsigBase(withDigest):
print('testHttpsig(' + str(withDigest) + ')')
@ -72,3 +81,82 @@ def testThreads():
thr.kill()
thr.join()
assert thr.isAlive()==False
def createServerAlice(path: str,port: int):
print('Creating test server: Alice on port '+str(port))
if os.path.isdir(path):
shutil.rmtree(path)
os.mkdir(path)
os.chdir(path)
federationList=['127.0.0.1']
username='alice'
domain='127.0.0.1'
https=False
useTor=False
session = createSession(useTor)
privateKeyPem,publicKeyPem,person,wfEndpoint=createPerson(username,domain,port,https,True)
deleteAllPosts(username,domain)
followPerson(username,domain,'bob','127.0.0.1:61936',federationList)
followerOfPerson(username,domain,'bob','127.0.0.1:61936',federationList)
createPublicPost(username, domain, https, "No wise fish would go anywhere without a porpoise", False, True)
createPublicPost(username, domain, https, "Curiouser and curiouser!", False, True)
createPublicPost(username, domain, https, "In the gardens of memory, in the palace of dreams, that is where you and I shall meet", False, True)
print('Server running: Alice')
runDaemon(domain,port,https,federationList,useTor)
def createServerBob(path: str,port: int):
print('Creating test server: Bob on port '+str(port))
if os.path.isdir(path):
shutil.rmtree(path)
os.mkdir(path)
os.chdir(path)
federationList=['127.0.0.1']
username='alice'
domain='127.0.0.1'
https=False
useTor=False
session = createSession(useTor)
privateKeyPem,publicKeyPem,person,wfEndpoint=createPerson(username,domain,port,https,True)
deleteAllPosts(username,domain)
followPerson(username,domain,'alice','127.0.0.1:61935',federationList)
followerOfPerson(username,domain,'alice','127.0.0.1:61935',federationList)
createPublicPost(username, domain, https, "It's your life, live it your way.", False, True)
createPublicPost(username, domain, https, "One of the things I've realised is that I am very simple", False, True)
createPublicPost(username, domain, https, "Quantum physics is a bit of a passion of mine", False, True)
print('Server running: Bob')
runDaemon(domain,port,https,federationList,useTor)
def testPostMessageBetweenServers():
print('Testing sending message from one server to the inbox of another')
baseDir=os.getcwd()
if not os.path.isdir(baseDir+'/.tests'):
os.mkdir(baseDir+'/.tests')
# create the servers
thrAlice = threadWithTrace(target=createServerAlice,args=(baseDir+'/.tests/alice',61935),daemon=True)
thrAlice.start()
assert thrAlice.isAlive()==True
thrBob = threadWithTrace(target=createServerBob,args=(baseDir+'/.tests/bob',61936),daemon=True)
thrBob.start()
assert thrBob.isAlive()==True
time.sleep(10)
# stop the servers
thrAlice.kill()
thrAlice.join()
assert thrAlice.isAlive()==False
thrBob.kill()
thrBob.join()
assert thrBob.isAlive()==False
def runAllTests():
print('Running tests...')
testHttpsig()
testCache()
testThreads()
print('Tests succeeded\n')