diff options
-rw-r--r-- | handlers_test.go | 18 | ||||
-rw-r--r-- | init_test.go | 23 | ||||
-rw-r--r-- | post_test.go | 75 |
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) + } + } + }) + } +} |