Add handle_test.
This commit is contained in:
parent
5e3a9379a0
commit
91700a6049
133
handle_test.go
133
handle_test.go
@ -1,6 +1,137 @@
|
||||
package main
|
||||
|
||||
import "testing"
|
||||
import (
|
||||
"encoding/json"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"net/url"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/yukimochi/Activity-Relay/ActivityPub"
|
||||
keyloader "github.com/yukimochi/Activity-Relay/KeyLoader"
|
||||
)
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
os.Setenv("ACTOR_PEM", "misc/testKey.pem")
|
||||
os.Setenv("RELAY_DOMAIN", "relay.yukimochi.example.org")
|
||||
pemPath := os.Getenv("ACTOR_PEM")
|
||||
relayDomain := os.Getenv("RELAY_DOMAIN")
|
||||
hostkey, _ = keyloader.ReadPrivateKeyRSAfromPath(pemPath)
|
||||
hostname, _ = url.Parse("https://" + relayDomain)
|
||||
Actor = activitypub.GenerateActor(hostname, &hostkey.PublicKey)
|
||||
WebfingerResource = activitypub.GenerateWebfingerResource(hostname, &Actor)
|
||||
|
||||
code := m.Run()
|
||||
os.Exit(code)
|
||||
}
|
||||
|
||||
func TestHandleWebfingerGet(t *testing.T) {
|
||||
s := httptest.NewServer(http.HandlerFunc(handleWebfinger))
|
||||
defer s.Close()
|
||||
|
||||
req, _ := http.NewRequest("GET", s.URL, nil)
|
||||
q := req.URL.Query()
|
||||
q.Add("resource", "acct:relay@"+os.Getenv("RELAY_DOMAIN"))
|
||||
req.URL.RawQuery = q.Encode()
|
||||
client := new(http.Client)
|
||||
r, err := client.Do(req)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed - " + err.Error())
|
||||
}
|
||||
if r.Header.Get("Content-Type") != "application/json" {
|
||||
t.Fatalf("Failed - Content-Type not match.")
|
||||
}
|
||||
if r.StatusCode != 200 {
|
||||
t.Fatalf("Failed - StatusCode is not 200.")
|
||||
}
|
||||
defer r.Body.Close()
|
||||
|
||||
data, _ := ioutil.ReadAll(r.Body)
|
||||
var wfresource activitypub.WebfingerResource
|
||||
err = json.Unmarshal(data, &wfresource)
|
||||
if err != nil {
|
||||
t.Fatalf("WebfingerResource responce is not valid.")
|
||||
}
|
||||
|
||||
domain, _ := url.Parse(wfresource.Links[0].Href)
|
||||
if domain.Host != os.Getenv("RELAY_DOMAIN") {
|
||||
t.Fatalf("WebfingerResource's Host not valid.")
|
||||
}
|
||||
}
|
||||
func TestHandleWebfingerGetBadResource(t *testing.T) {
|
||||
s := httptest.NewServer(http.HandlerFunc(handleWebfinger))
|
||||
defer s.Close()
|
||||
|
||||
req, _ := http.NewRequest("GET", s.URL, nil)
|
||||
q := req.URL.Query()
|
||||
q.Add("resource", "acct:yukimochi@"+os.Getenv("RELAY_DOMAIN"))
|
||||
req.URL.RawQuery = q.Encode()
|
||||
client := new(http.Client)
|
||||
r, err := client.Do(req)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed - " + err.Error())
|
||||
}
|
||||
if r.StatusCode != 404 {
|
||||
t.Fatalf("Failed - StatusCode is not 404.")
|
||||
}
|
||||
}
|
||||
func TestHandleWebfingerInvalidMethod(t *testing.T) {
|
||||
s := httptest.NewServer(http.HandlerFunc(handleWebfinger))
|
||||
defer s.Close()
|
||||
|
||||
req, _ := http.NewRequest("POST", s.URL, nil)
|
||||
client := new(http.Client)
|
||||
r, err := client.Do(req)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed - " + err.Error())
|
||||
}
|
||||
if r.StatusCode != 400 {
|
||||
t.Fatalf("Failed - StatusCode is not 400.")
|
||||
}
|
||||
}
|
||||
func TestHandleActorGet(t *testing.T) {
|
||||
s := httptest.NewServer(http.HandlerFunc(handleActor))
|
||||
defer s.Close()
|
||||
|
||||
r, err := http.Get(s.URL)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed - " + err.Error())
|
||||
}
|
||||
if r.Header.Get("Content-Type") != "application/activity+json" {
|
||||
t.Fatalf("Failed - Content-Type not match.")
|
||||
}
|
||||
if r.StatusCode != 200 {
|
||||
t.Fatalf("Failed - StatusCode is not 200.")
|
||||
}
|
||||
defer r.Body.Close()
|
||||
|
||||
data, _ := ioutil.ReadAll(r.Body)
|
||||
var actor activitypub.Actor
|
||||
err = json.Unmarshal(data, &actor)
|
||||
if err != nil {
|
||||
t.Fatalf("Actor responce is not valid.")
|
||||
}
|
||||
|
||||
domain, _ := url.Parse(actor.ID)
|
||||
if domain.Host != os.Getenv("RELAY_DOMAIN") {
|
||||
t.Fatalf("Actor's Host not valid.")
|
||||
}
|
||||
}
|
||||
|
||||
func TestHandleActorInvalidMethod(t *testing.T) {
|
||||
s := httptest.NewServer(http.HandlerFunc(handleActor))
|
||||
defer s.Close()
|
||||
|
||||
r, err := http.Post(s.URL, "text/plain", nil)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed - " + err.Error())
|
||||
}
|
||||
if r.StatusCode != 400 {
|
||||
t.Fatalf("Failed - StatusCode is not 400.")
|
||||
}
|
||||
}
|
||||
|
||||
func TestContains(t *testing.T) {
|
||||
data := "nil"
|
||||
|
27
misc/testKey.pem
Normal file
27
misc/testKey.pem
Normal file
@ -0,0 +1,27 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEpQIBAAKCAQEAtl1oFS/LyBBlygdHp7bepNFgFvVLehdU31ReuFwt1WYDNEIQ
|
||||
a60tH3CyjpnFw2Hq8z5tRtTIJgMTROBI2CU7wgpC4IEO1jFpl4vRqJ7bcCQBib+6
|
||||
QI+9TCCI2qLgnCObfU8i6HWj4Z5fDMhKrMLMbdjLDVNGy7PRlVGR/b/Ootur4PXF
|
||||
2Xnxp+otum477/vT5SVNcJy6ZbFn//M6wo1ienKTnBOPjvMmz5JR8I6YczGJfmdr
|
||||
IPFdfjz24JT3fyIYRP6jUEo6mAyMIJReBN66LrehOa+tETyMPCHnponrhbrpq49t
|
||||
/0dQmtIorQeD5Yxi3BTbk3mJrd0sxvz5cPwsdQIDAQABAoIBAG8RhrHYsWmBKy2X
|
||||
r3mjNAj4CGkTLswGZ8e5UBNC+RtOjUcHsY6TI7dRYT7ewwcTnRBXBiEsuVYFa3f4
|
||||
jgUu8C1nKIIpuEqWP7RwENp9HjM3isRFxH9LzEQQUKmwp9IREcOJLj6cX5qrZUKY
|
||||
vnpoDjAc6NaN0MGCHHSwAJWme4jN7/0CRIAOhOEesaiUnkTEifIQBzGU83bDKi1Z
|
||||
6WRnq+RS1MyMRVg/yo80UtywSLOIVuyb/trMcEXKNK5pBpJHxEMj1UBJ8j/vEyY6
|
||||
LBs5NtH4miALVE5B5h5x/tP2onlA0uyEI+Pr5kW7UMJrn0Uvl8qGLYYCm9v78Og9
|
||||
AckPmKUCgYEA6MnaJxxhjJI3Og3I28nAse551Ag134jb+V9tl+Pj5WNNUtLKtM/6
|
||||
FIlKsXMLENk6I3Xj55dXSj7tJvNtvi91IdyBLDFtvLaFp2rvvbtyZ6JNVpeZ9dke
|
||||
azPL7JLN86fyGiFVsHw+IcPgFO/4ahtXdDe6tUCwbrKoVUGEwkoRmv8CgYEAyIxx
|
||||
jzcxAR4q8iPIpslc5VaMHcqoW2Zm61Y07B4oFdmqjz+IP1pumJAovQsu+fA5GMtU
|
||||
Bjq2W9xndMwuwOtGRt/Icc2JA8+manUZxNeKajhSypf+Ry6jFMYe7kuEW/iSfhdR
|
||||
jS2os5W6YmjnP5l1KI5q8LXtNWOIIumUmh0m/IsCgYEAiNZ+whbQ0MzyYdHQjEIg
|
||||
X3eLbbQV1vygMgqCZZK0WBbzUQhP19GZc5Dwszao/pJytn2KJoyz5xTuWsMlc3J6
|
||||
LBluZQf5NcEk97DIlIMnUPv68jfTbMzgMKwV5060edHzYqDNuhyOeVKm2iflopnH
|
||||
4q0Pt5P7Ilcq1FLbM0pO5wkCgYEAtEzPq5pLDF467gcN1iUix2zP+9i/E600yk9u
|
||||
tPlHwJ04oiDUNWDwHWk9tvfe/AXkz0299PvEB0JYIMGRJxBe1klKxEWs8Sg2zW8K
|
||||
A9ZkMqsAg/OyP/zF0V9tX3+1N5p62bHNN8fc69epAeCeRqeIlTW1H0PwRxd8xSaK
|
||||
2yNqcZECgYEAgPXPwXxT2qzdSfVp7TrT53kOYEPlkZXkzRZ0h9eRFbUNKRCt5h53
|
||||
qCq1DBOVAtQpKzGR0YGaA/JOMEYm8co2xAJH0Rkf+8GtsEi38Bqf8pzrdLAxQBi8
|
||||
oKk/pmB/LnNw6gDkL7Pi05kBHxa1kSCGmBxTe/5fCbaowTI+p0xkiNU=
|
||||
-----END RSA PRIVATE KEY-----
|
Loading…
x
Reference in New Issue
Block a user