mirror of https://github.com/omar-polo/gmid.git
add runtime tests for the server
This commit is contained in:
parent
76fd55f437
commit
364f10dbcd
8
Makefile
8
Makefile
|
@ -27,5 +27,11 @@ clean:
|
||||||
iri_test: iri_test.o iri.o utf8.o
|
iri_test: iri_test.o iri.o utf8.o
|
||||||
${CC} iri_test.o iri.o utf8.o -o iri_test ${LDFLAGS}
|
${CC} iri_test.o iri.o utf8.o -o iri_test ${LDFLAGS}
|
||||||
|
|
||||||
test: iri_test
|
test: gmid iri_test
|
||||||
|
@echo "IRI tests"
|
||||||
|
@echo "=============================="
|
||||||
./iri_test
|
./iri_test
|
||||||
|
@echo
|
||||||
|
@echo "server tests"
|
||||||
|
@echo "=============================="
|
||||||
|
cd test && ./test.sh
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIEpDCCAowCCQDkH9rq5++pQzANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAls
|
||||||
|
b2NhbGhvc3QwHhcNMjEwMTE3MTA0MzMzWhcNMjIwMTE3MTA0MzMzWjAUMRIwEAYD
|
||||||
|
VQQDDAlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCp
|
||||||
|
YzeKNqZequOdFjv/YiPgTLcAA4WQZavRbej1dDqgusRcc8/zk9hwzESeI+u87GTE
|
||||||
|
knryxYHrGuW7ZVZWPgjQ8f7KZrvN0WlZo1eL2dqyOZDr+wZh7E9H8VFR/Gu6NzXX
|
||||||
|
9/pQPvIWj71hc4WhzwnS950lv7vzp92ul4NeqzTQKwcd+nwLMsOg2iAt6Ncw7uKc
|
||||||
|
36hWr/gXOvZBciqjb2r1o8Kf5rBFPexMi97IRrM1JQDV74lLTxuGSAdIpYnF9CcG
|
||||||
|
gxvzPj3ws3WW/x3rQaqJEfjm31Mvf+Rr0ZSNcLstBpj9LaRojYCneEjB8xj3ClV9
|
||||||
|
szl5yarAItfLti/tj0SQ0rqJGyUgKZYkfIB+DbnSjYXo4YsQ+Be5q2AmHRcChFuL
|
||||||
|
zkjLpPLAgS2bXjANKntA60PC9fAhz4sNMglaWC1PnIdGsE+1RjZ64ItQPmTRGWPS
|
||||||
|
FC7GP6RQSYLStdfscl6/WGYU3ey97Q9V2Z1HpOQzxGiUhejZJeUjIUdQEkjCaMkl
|
||||||
|
RffGEQyHJVjokb7owxTmaGNG9+I7yXWXiYXaA3QIKC9nGT04kLqOeJEqljhjmhiL
|
||||||
|
coC7nZzRHWCtLU3o4mSB4DGNnzrOLichpZrB+3qP2lL4NiEoHUb+/NSZULtUt4XN
|
||||||
|
acg1T4+skXVO9W/efTvw67Sfv2L857z6rjXjOgX/ywIDAQABMA0GCSqGSIb3DQEB
|
||||||
|
CwUAA4ICAQBE1XFORAn8v16EanSHYcdep05V1ouPuI1Zpw6pgKdFkJoFt/Wz6dw4
|
||||||
|
XyOMDxiUpXUz0rDwmL5hFnv0cHue22JECgwynpyE88GANEvE1qn9WeZI22h6+nE9
|
||||||
|
0H02f5mq2JKifRtLvSltjrhrmoL82RH4bD16v8tybygupetIcFcmRUM98vfPTYxc
|
||||||
|
+xHdeJpfrHEn0GAuy59oypGKsa4IjHFGSCt1sFCjfVJauqrvswcbk2FABAlyYHQ6
|
||||||
|
h8ldtvEnuDSmH5otYg7TRlJqjoK7gFlG+Yt8bcK5ZSOtx5nFk2+uqKUem7iA9cW/
|
||||||
|
caPG6Lllv8B0hBS9dwO9oFalee2fYdzF5GjnEqkllg4DOlr/fblGSpg1U9xLn5ur
|
||||||
|
+KmYtUipeT1Oz1wbsAsI+lUNIFo60JZMEGmwpf0Hcdahtm6lZzbhvzH7SGXivzV5
|
||||||
|
ALUf0vy8hnpWDzMBy7pHde3CSoLWSEOhPt6Tx2DOfA/ZvrOiOxpYovQGx/Gs7zLY
|
||||||
|
Luemesq7Vzd1hLFacCVnYin1b2VGjUT1ibs210WRzZ1C6XaflcB/eQUmGZXisO0k
|
||||||
|
vqWQGNykjN1V4shDRt8q3dqbcVIIAITYgh3mIq6UQZY1uzEfZYc0lJs4/n64y2jG
|
||||||
|
ORdRlwBgFCNise1UrxUsNdYw/tTClqZ36E6bntKR4pkZczqeVH66pQ==
|
||||||
|
-----END CERTIFICATE-----
|
|
@ -0,0 +1,10 @@
|
||||||
|
daemon off
|
||||||
|
ipv6 off
|
||||||
|
port 10965
|
||||||
|
|
||||||
|
server "localhost" {
|
||||||
|
cert "cert.pem"
|
||||||
|
key "key.pem"
|
||||||
|
root "docs"
|
||||||
|
cgi ""
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
# hello world
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
printf "20 text/gemini\r\n"
|
||||||
|
printf "# hello world\n"
|
|
@ -0,0 +1,28 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
# GeminiGet, aka gg
|
||||||
|
# USAGE: ./gg path [port]
|
||||||
|
|
||||||
|
import os
|
||||||
|
import socket
|
||||||
|
import ssl
|
||||||
|
import urllib.parse
|
||||||
|
import sys
|
||||||
|
|
||||||
|
hostname = 'localhost'
|
||||||
|
path = sys.argv[1]
|
||||||
|
|
||||||
|
port = 1965
|
||||||
|
if len(sys.argv) > 2:
|
||||||
|
port = int(sys.argv[2])
|
||||||
|
|
||||||
|
s = socket.create_connection((hostname, port))
|
||||||
|
context = ssl.SSLContext()
|
||||||
|
context.check_hostname = False
|
||||||
|
context.verify_mode = ssl.CERT_NONE
|
||||||
|
s = context.wrap_socket(s, server_hostname = hostname)
|
||||||
|
s.sendall(("gemini://" + hostname + ":" + str(port) + path + "\r\n").encode('UTF-8'))
|
||||||
|
|
||||||
|
fp = s.makefile("rb")
|
||||||
|
for line in fp.read().splitlines():
|
||||||
|
print(line.decode('UTF-8'))
|
|
@ -0,0 +1,52 @@
|
||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
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
|
||||||
|
PqNUZ1DUexadHtagYSo/hhWDNPDt
|
||||||
|
-----END PRIVATE KEY-----
|
|
@ -0,0 +1,9 @@
|
||||||
|
daemon off
|
||||||
|
ipv6 off
|
||||||
|
port 10965
|
||||||
|
|
||||||
|
server "localhost" {
|
||||||
|
cert "cert.pem"
|
||||||
|
key "key.pem"
|
||||||
|
root "docs"
|
||||||
|
}
|
|
@ -0,0 +1,50 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# sha256 of "20 text/gemini\r\n# hello world\n"
|
||||||
|
ok_res=6989d9b0e082c79edb8f625ebb77ddcb07764d3dd0c7c5ae60a27a50a33f6a15
|
||||||
|
|
||||||
|
# sha256 of docs/script
|
||||||
|
script_res=00bf8349336a4a1896f9e98dda67c8264f70b767343351247db96b4546f8d872
|
||||||
|
|
||||||
|
get() {
|
||||||
|
./gg.py "$1" 10965
|
||||||
|
}
|
||||||
|
|
||||||
|
# check "path" "expected-sha256"
|
||||||
|
check() {
|
||||||
|
got=`get "$1" | sha256`
|
||||||
|
if [ "$got" '!=' "$2" ]; then
|
||||||
|
echo "FAIL $1 (with_cgi: $with_cgi)"
|
||||||
|
quit
|
||||||
|
else
|
||||||
|
echo "PASS $1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
quit() {
|
||||||
|
pkill gmid
|
||||||
|
exit ${1:-1}
|
||||||
|
}
|
||||||
|
|
||||||
|
with_cgi="no"
|
||||||
|
./../gmid -c no-cgi.conf 2>/dev/null &
|
||||||
|
|
||||||
|
check "/" $ok_res
|
||||||
|
check "/index.gmi" $ok_res
|
||||||
|
check "/script" $script_res
|
||||||
|
|
||||||
|
if ! pkill gmid; then
|
||||||
|
echo "Is gmid still running?"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
wait
|
||||||
|
|
||||||
|
with_cgi="yes"
|
||||||
|
./../gmid -c cgi.conf 2>/dev/null &
|
||||||
|
|
||||||
|
check "/" $ok_res
|
||||||
|
check "/index.gmi" $ok_res
|
||||||
|
check "/script" $ok_res
|
||||||
|
|
||||||
|
quit 0
|
Loading…
Reference in New Issue