From 1845fdd75fe3c35b9fd5f4ea20771f6b527b2de5 Mon Sep 17 00:00:00 2001 From: breel Date: Fri, 31 Jul 2020 20:34:31 -0600 Subject: [PATCH] Add a test --- view/who_test.go | 110 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/view/who_test.go b/view/who_test.go index 7a3df51..830c9a4 100644 --- a/view/who_test.go +++ b/view/who_test.go @@ -284,6 +284,37 @@ func TestWho(t *testing.T) { t.Logf("POST POST:\n%s", b) }) + t.Run("post real with spaces, #, and special chars in name", func(t *testing.T) { + reset() + want.Name = "hello world #1 e ę" + want.Connections = nil + b, err := json.Marshal(want) + if err != nil { + t.Fatal(err) + } + url := url.URL{ + Scheme: "http", + Host: "me.me.me", + Path: "/who", + RawQuery: (url.Values{"namespace": []string{"col"}, "id": []string{want.Name}}).Encode(), + } + r := httptest.NewRequest(http.MethodPost, url.String(), bytes.NewReader(b)) + w := httptest.NewRecorder() + handler.ServeHTTP(w, r) + if w.Code != http.StatusOK { + t.Fatalf("%d: %s", w.Code, w.Body.Bytes()) + } + o := entity.One{} + if err := json.Unmarshal(w.Body.Bytes(), &o); err != nil { + t.Fatal(err) + } + if o.Name != want.Name { + t.Fatalf("failed to POST specified name: %+v", o) + } + b, _ = json.MarshalIndent(o, "", " ") + t.Logf("POST POST:\n%q\n%s", url.String(), b) + }) + t.Run("delete real", func(t *testing.T) { reset() r := httptest.NewRequest(http.MethodDelete, "/who?namespace=col&id=NEWBIE"+want.Name, nil) @@ -300,6 +331,85 @@ func TestWho(t *testing.T) { } }) + t.Run("delete real with %20%23 (' #')", func(t *testing.T) { + reset() + + want.Name = "hello world #4" + want.Connections = nil + b, err := json.Marshal(want) + if err != nil { + t.Fatal(err) + } + url := url.URL{ + Scheme: "http", + Host: "me.me.me", + Path: "/who", + RawQuery: "namespace=col&id=hello%20world%20%234", + } + t.Logf("using url %s", url.String()) + r := httptest.NewRequest(http.MethodPost, url.String(), bytes.NewReader(b)) + w := httptest.NewRecorder() + handler.ServeHTTP(w, r) + if w.Code != http.StatusOK { + t.Fatalf("(%d) %s", w.Code, w.Body.Bytes()) + } + + r = httptest.NewRequest(http.MethodDelete, url.String(), nil) + w = httptest.NewRecorder() + handler.ServeHTTP(w, r) + if w.Code != http.StatusOK { + t.Fatalf("%d: %s", w.Code, w.Body.Bytes()) + } + + r = httptest.NewRequest(http.MethodGet, url.String(), nil) + w = httptest.NewRecorder() + handler.ServeHTTP(w, r) + if w.Code != http.StatusNotFound { + t.Fatalf("%d: %s", w.Code, w.Body.Bytes()) + } + + t.Logf("can post+del %s", url.String()) + }) + + t.Run("delete real with special chars", func(t *testing.T) { + reset() + + want.Name = "hello world #1 e ę" + want.Connections = nil + b, err := json.Marshal(want) + if err != nil { + t.Fatal(err) + } + url := url.URL{ + Scheme: "http", + Host: "me.me.me", + Path: "/who", + RawQuery: (url.Values{"namespace": []string{"col"}, "id": []string{want.Name}}).Encode(), + } + r := httptest.NewRequest(http.MethodPost, url.String(), bytes.NewReader(b)) + w := httptest.NewRecorder() + handler.ServeHTTP(w, r) + if w.Code != http.StatusOK { + t.Fatal(w.Code) + } + + r = httptest.NewRequest(http.MethodDelete, url.String(), nil) + w = httptest.NewRecorder() + handler.ServeHTTP(w, r) + if w.Code != http.StatusOK { + t.Fatalf("%d: %s", w.Code, w.Body.Bytes()) + } + + r = httptest.NewRequest(http.MethodGet, url.String(), nil) + w = httptest.NewRecorder() + handler.ServeHTTP(w, r) + if w.Code != http.StatusNotFound { + t.Fatalf("%d: %s", w.Code, w.Body.Bytes()) + } + + t.Logf("can post+del %s", url.String()) + }) + t.Run("delete fake", func(t *testing.T) { reset() r := httptest.NewRequest(http.MethodDelete, "/who?namespace=col&id=FAKER"+want.Name, nil)