package main import ( "io/ioutil" "net/http" "net/http/httptest" "net/url" "os" "testing" "github.com/spf13/viper" ) func TestMain(m *testing.M) { viper.Set("actor_pem", "../misc/testKey.pem") viper.Set("relay_domain", "relay.yukimochi.example.org") initConfig() redisClient.FlushAll().Result() // Load Config code := m.Run() os.Exit(code) } func TestRelayActivity(t *testing.T) { s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { data, _ := ioutil.ReadAll(r.Body) if string(data) != "data" || r.Header.Get("Content-Type") != "application/activity+json" { w.WriteHeader(500) w.Write(nil) } else { w.WriteHeader(202) w.Write(nil) } })) defer s.Close() err := relayActivity(s.URL, "data") if err != nil { t.Fatal("Failed - Data transfar not collect") } } func TestRelayActivityNoHost(t *testing.T) { s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { })) defer s.Close() err := relayActivity("http://nohost.example.jp", "data") if err == nil { t.Fatal("Failed - Error not reported.") } domain, _ := url.Parse("http://nohost.example.jp") data, err := redisClient.HGet("relay:statistics:"+domain.Host, "last_error").Result() if data == "" { t.Fatal("Failed - Error not cached.") } } func TestRelayActivityResp500(t *testing.T) { s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(500) w.Write(nil) })) defer s.Close() err := relayActivity(s.URL, "data") if err == nil { t.Fatal("Failed - Error not reported.") } domain, _ := url.Parse(s.URL) data, err := redisClient.HGet("relay:statistics:"+domain.Host, "last_error").Result() if data == "" { t.Fatal("Failed - Error not cached.") } } func TestRegistorActivity(t *testing.T) { s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { data, _ := ioutil.ReadAll(r.Body) if string(data) != "data" || r.Header.Get("Content-Type") != "application/activity+json" { w.WriteHeader(500) w.Write(nil) } else { w.WriteHeader(202) w.Write(nil) } })) defer s.Close() err := registorActivity(s.URL, "data") if err != nil { t.Fatal("Failed - Data transfar not collect") } } func TestRegistorActivityNoHost(t *testing.T) { s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { })) defer s.Close() err := registorActivity("http://nohost.example.jp", "data") if err == nil { t.Fatal("Failed - Error not reported.") } } func TestRegistorActivityResp500(t *testing.T) { s := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(500) w.Write(nil) })) defer s.Close() err := registorActivity(s.URL, "data") if err == nil { t.Fatal("Failed - Error not reported.") } }