summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorBen Morrison <ben@gbmor.dev>2019-05-22 23:35:37 -0400
committerBen Morrison <ben@gbmor.dev>2019-05-22 23:51:12 -0400
commita6c816217f09e4d462949c2631a88439886ed655 (patch)
tree4469487aa48ebc4315c080ed7b14763da88e1dfd
parentbce52652ceb54b325ac72cc9a173655ec0a80756 (diff)
downloadgetwtxt-a6c816217f09e4d462949c2631a88439886ed655.tar.gz
moved test init funcs to init_test, testing POST
-rw-r--r--handlers_test.go18
-rw-r--r--init_test.go23
-rw-r--r--post_test.go75
3 files changed, 98 insertions, 18 deletions
diff --git a/handlers_test.go b/handlers_test.go
index b409521..63b7c3d 100644
--- a/handlers_test.go
+++ b/handlers_test.go
@@ -4,29 +4,11 @@ import (
 	"bytes"
 	"fmt"
 	"io/ioutil"
-	"log"
 	"net/http"
 	"net/http/httptest"
-	"os"
 	"testing"
 )
 
-var testport = fmt.Sprintf(":%v", confObj.port)
-
-func initTestConf() {
-	initConfig()
-	tmpls = initTemplates()
-	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) {
diff --git a/init_test.go b/init_test.go
new file mode 100644
index 0000000..c13ec21
--- /dev/null
+++ b/init_test.go
@@ -0,0 +1,23 @@
+package main
+
+import (
+	"fmt"
+	"log"
+	"os"
+)
+
+var testport = fmt.Sprintf(":%v", confObj.port)
+
+func initTestConf() {
+	initConfig()
+	tmpls = initTemplates()
+	logToNull()
+}
+
+func logToNull() {
+	hush, err := os.Open("/dev/null")
+	if err != nil {
+		log.Printf("%v\n", err)
+	}
+	log.SetOutput(hush)
+}
diff --git a/post_test.go b/post_test.go
new file mode 100644
index 0000000..9d04c9e
--- /dev/null
+++ b/post_test.go
@@ -0,0 +1,75 @@
+package main
+
+import (
+	"net/http"
+	"net/http/httptest"
+	"net/url"
+	"strings"
+	"testing"
+)
+
+var apiPostUserCases = []struct {
+	name    string
+	nick    string
+	uri     string
+	wantErr bool
+}{
+	{
+		name:    "Known Good User",
+		nick:    "soltempore",
+		uri:     "https://enotty.dk/soltempore.txt",
+		wantErr: false,
+	},
+	{
+		name:    "Missing URI",
+		nick:    "missinguri",
+		uri:     "",
+		wantErr: true,
+	},
+	{
+		name:    "Missing Nickname",
+		nick:    "",
+		uri:     "https://example.com/twtxt.txt",
+		wantErr: true,
+	},
+	{
+		name:    "Missing URI and Nickname",
+		nick:    "",
+		uri:     "",
+		wantErr: true,
+	},
+}
+
+func Test_apiPostUser(t *testing.T) {
+	initTestConf()
+
+	for _, tt := range apiPostUserCases {
+		t.Run(tt.name, func(t *testing.T) {
+			params := url.Values{}
+			params.Set("url", tt.uri)
+			params.Set("nickname", tt.nick)
+
+			req, err := http.NewRequest("POST", "http://localhost"+testport+"/api/plain/users", strings.NewReader(params.Encode()))
+			if err != nil {
+				t.Errorf("%v\n", err)
+			}
+
+			req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
+
+			rr := httptest.NewRecorder()
+			handler := http.HandlerFunc(apiEndpointPOSTHandler)
+
+			handler.ServeHTTP(rr, req)
+
+			if !tt.wantErr {
+				if rr.Code != http.StatusOK {
+					t.Errorf("Received unexpected non-200 response: %v\n", rr.Code)
+				}
+			} else {
+				if rr.Code != http.StatusBadRequest {
+					t.Errorf("Expected 400 Bad Request, but received: %v\n", rr.Code)
+				}
+			}
+		})
+	}
+}