summary refs log tree commit diff stats
path: root/http_test.go
diff options
context:
space:
mode:
authorBen Morrison <ben@gbmor.dev>2019-05-19 23:45:48 -0400
committerBen Morrison <ben@gbmor.dev>2019-05-20 02:09:20 -0400
commit747f4fb70ff61d3f8a7bb1bed896a913b0999450 (patch)
tree9ed792cbcfba664ebd6d1123f9e7ffdf7fc21105 /http_test.go
parentf9d8193e1bdce33716b109ac2aea879a8c9b1038 (diff)
downloadgetwtxt-747f4fb70ff61d3f8a7bb1bed896a913b0999450.tar.gz
middleware func to attach remote ip to context
Diffstat (limited to 'http_test.go')
-rw-r--r--http_test.go126
1 files changed, 126 insertions, 0 deletions
diff --git a/http_test.go b/http_test.go
new file mode 100644
index 0000000..4ae7ae6
--- /dev/null
+++ b/http_test.go
@@ -0,0 +1,126 @@
+package main
+
+import (
+	"bytes"
+	"fmt"
+	"io/ioutil"
+	"log"
+	"net/http"
+	"net/http/httptest"
+	"os"
+	"testing"
+)
+
+var testport = fmt.Sprintf(":%v", confObj.port)
+
+func initTestConf() {
+	initConfig()
+	logToNull()
+}
+
+func logToNull() {
+	hush, err := os.Open("/dev/null")
+	if err != nil {
+		log.Printf("%v\n", err)
+	}
+	log.SetOutput(hush)
+}
+
+// these will be expanded later. currently, they only
+// test for a 200 status code.
+func Test_indexHandler(t *testing.T) {
+	initTestConf()
+	t.Run("indexHandler", func(t *testing.T) {
+		w := httptest.NewRecorder()
+		req := httptest.NewRequest("GET", "localhost"+testport+"/", nil)
+		indexHandler(w, req)
+		resp := w.Result()
+		if resp.StatusCode != http.StatusOK {
+			t.Errorf(fmt.Sprintf("%v", resp.StatusCode))
+		}
+	})
+}
+func Test_apiBaseHandler(t *testing.T) {
+	initTestConf()
+	t.Run("apiBaseHandler", func(t *testing.T) {
+		w := httptest.NewRecorder()
+		req := httptest.NewRequest("GET", "localhost"+testport+"/api", nil)
+		indexHandler(w, req)
+		resp := w.Result()
+		if resp.StatusCode != http.StatusOK {
+			t.Errorf(fmt.Sprintf("%v", resp.StatusCode))
+		}
+	})
+}
+func Test_apiFormatHandler(t *testing.T) {
+	initTestConf()
+	t.Run("apiFormatHandler", func(t *testing.T) {
+		w := httptest.NewRecorder()
+		req := httptest.NewRequest("GET", "localhost"+testport+"/api/plain", nil)
+		indexHandler(w, req)
+		resp := w.Result()
+		if resp.StatusCode != http.StatusOK {
+			t.Errorf(fmt.Sprintf("%v", resp.StatusCode))
+		}
+	})
+}
+func Test_apiEndpointHandler(t *testing.T) {
+	initTestConf()
+	t.Run("apiEndpointHandler", func(t *testing.T) {
+		w := httptest.NewRecorder()
+		req := httptest.NewRequest("GET", "localhost"+testport+"/api/plain/users", nil)
+		indexHandler(w, req)
+		resp := w.Result()
+		if resp.StatusCode != http.StatusOK {
+			t.Errorf(fmt.Sprintf("%v", resp.StatusCode))
+		}
+	})
+}
+func Test_apiTagsBaseHandler(t *testing.T) {
+	initTestConf()
+	t.Run("apiTagsBaseHandler", func(t *testing.T) {
+		w := httptest.NewRecorder()
+		req := httptest.NewRequest("GET", "localhost"+testport+"/api/plain/tags", nil)
+		indexHandler(w, req)
+		resp := w.Result()
+		if resp.StatusCode != http.StatusOK {
+			t.Errorf(fmt.Sprintf("%v", resp.StatusCode))
+		}
+	})
+}
+func Test_apiTagsHandler(t *testing.T) {
+	initTestConf()
+	t.Run("indexHandler", func(t *testing.T) {
+		w := httptest.NewRecorder()
+		req := httptest.NewRequest("GET", "localhost"+testport+"/api/plain/tags/tag", nil)
+		indexHandler(w, req)
+		resp := w.Result()
+		if resp.StatusCode != http.StatusOK {
+			t.Errorf(fmt.Sprintf("%v", resp.StatusCode))
+		}
+	})
+}
+func Test_cssHandler(t *testing.T) {
+	initTestConf()
+
+	name := "CSS Handler Test"
+	css, err := ioutil.ReadFile("assets/style.css")
+	if err != nil {
+		t.Errorf("Couldn't read assets/style.css: %v\n", err)
+	}
+
+	w := httptest.NewRecorder()
+	req := httptest.NewRequest("GET", "localhost"+testport+"/css", nil)
+
+	t.Run(name, func(t *testing.T) {
+		cssHandler(w, req)
+		resp := w.Result()
+		body, _ := ioutil.ReadAll(resp.Body)
+		if resp.StatusCode != 200 {
+			t.Errorf("cssHandler(): %v\n", resp.StatusCode)
+		}
+		if !bytes.Equal(body, css) {
+			t.Errorf("cssHandler(): Byte mismatch\n")
+		}
+	})
+}