summary refs log tree commit diff stats
path: root/post_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'post_test.go')
-rw-r--r--post_test.go75
1 files changed, 75 insertions, 0 deletions
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)
+				}
+			}
+		})
+	}
+}