Files assert auth, namespace results, and faster port test
parent
6ca0a90134
commit
09b2a94dd8
|
|
@ -40,9 +40,7 @@ paths:
|
||||||
requestBody:
|
requestBody:
|
||||||
description: "An entity where all fields are optional and modified is disallowed"
|
description: "An entity where all fields are optional and modified is disallowed"
|
||||||
content:
|
content:
|
||||||
application/json:
|
$ref: "#/components/schemas/oneContent"
|
||||||
schema:
|
|
||||||
$ref: "#/components/schemas/one"
|
|
||||||
responses:
|
responses:
|
||||||
200:
|
200:
|
||||||
$ref: "#/components/schemas/200"
|
$ref: "#/components/schemas/200"
|
||||||
|
|
@ -57,9 +55,7 @@ paths:
|
||||||
requestBody:
|
requestBody:
|
||||||
description: "An entity where all fields are optional and modified is disallowed"
|
description: "An entity where all fields are optional and modified is disallowed"
|
||||||
content:
|
content:
|
||||||
application/json:
|
$ref: "#/components/schemas/oneContent"
|
||||||
schema:
|
|
||||||
$ref: "#/components/schemas/one"
|
|
||||||
responses:
|
responses:
|
||||||
200:
|
200:
|
||||||
$ref: "#/components/schemas/200"
|
$ref: "#/components/schemas/200"
|
||||||
|
|
@ -74,9 +70,7 @@ paths:
|
||||||
requestBody:
|
requestBody:
|
||||||
description: "An entity where all fields are optional and modified is disallowed"
|
description: "An entity where all fields are optional and modified is disallowed"
|
||||||
content:
|
content:
|
||||||
application/json:
|
$ref: "#/components/schemas/oneContent"
|
||||||
schema:
|
|
||||||
$ref: "#/components/schemas/one"
|
|
||||||
responses:
|
responses:
|
||||||
200:
|
200:
|
||||||
$ref: "#/components/schemas/200"
|
$ref: "#/components/schemas/200"
|
||||||
|
|
@ -133,6 +127,11 @@ components:
|
||||||
$ref: "#/components/schemas/one"
|
$ref: "#/components/schemas/one"
|
||||||
|
|
||||||
schemas:
|
schemas:
|
||||||
|
oneContent:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/one"
|
||||||
|
|
||||||
one:
|
one:
|
||||||
$ref: "./swagger.yaml#/components/schemas/one"
|
$ref: "./swagger.yaml#/components/schemas/one"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,12 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func files(_ storage.Graph, w http.ResponseWriter, r *http.Request) error {
|
func files(_ storage.Graph, w http.ResponseWriter, r *http.Request) error {
|
||||||
r.URL.Path = strings.TrimPrefix(r.URL.Path, config.New().FilePrefix)
|
namespace, err := getNamespace(r)
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, err.Error(), http.StatusBadRequest)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
r.URL.Path = strings.TrimPrefix(r.URL.Path, path.Join(config.New().FilePrefix, namespace))
|
||||||
if len(r.URL.Path) < 2 {
|
if len(r.URL.Path) < 2 {
|
||||||
http.NotFound(w, r)
|
http.NotFound(w, r)
|
||||||
return nil
|
return nil
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,29 @@ func TestFiles(t *testing.T) {
|
||||||
t.Logf("config: %+v", config.New())
|
t.Logf("config: %+v", config.New())
|
||||||
handler := jsonHandler(storage.Graph{})
|
handler := jsonHandler(storage.Graph{})
|
||||||
|
|
||||||
|
prefix := path.Join(config.New().FilePrefix, "col")
|
||||||
|
qparam := "namespace=col"
|
||||||
|
|
||||||
|
t.Run("bad qparam doesnt have namespace", func(t *testing.T) {
|
||||||
|
r := httptest.NewRequest(http.MethodGet, fmt.Sprintf("%s/fake", prefix), nil)
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
handler.ServeHTTP(w, r)
|
||||||
|
if w.Code != http.StatusBadRequest {
|
||||||
|
t.Fatalf("%d: %s", w.Code, w.Body.Bytes())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("bad prefix doesnt have namespace", func(t *testing.T) {
|
||||||
|
r := httptest.NewRequest(http.MethodGet, fmt.Sprintf("%s/fake?%s", config.New().FilePrefix, qparam), nil)
|
||||||
|
w := httptest.NewRecorder()
|
||||||
|
handler.ServeHTTP(w, r)
|
||||||
|
if w.Code != http.StatusNotFound {
|
||||||
|
t.Fatalf("%d: %s", w.Code, w.Body.Bytes())
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
t.Run("get fake file 404", func(t *testing.T) {
|
t.Run("get fake file 404", func(t *testing.T) {
|
||||||
r := httptest.NewRequest(http.MethodGet, fmt.Sprintf("%s/fake", config.New().FilePrefix), nil)
|
r := httptest.NewRequest(http.MethodGet, fmt.Sprintf("%s/fake?%s", prefix, qparam), nil)
|
||||||
w := httptest.NewRecorder()
|
w := httptest.NewRecorder()
|
||||||
handler.ServeHTTP(w, r)
|
handler.ServeHTTP(w, r)
|
||||||
if w.Code != http.StatusNotFound {
|
if w.Code != http.StatusNotFound {
|
||||||
|
|
@ -61,7 +82,7 @@ func TestFiles(t *testing.T) {
|
||||||
}
|
}
|
||||||
f.Write([]byte("hello, world"))
|
f.Write([]byte("hello, world"))
|
||||||
f.Close()
|
f.Close()
|
||||||
r := httptest.NewRequest(http.MethodGet, fmt.Sprintf("%s?direct=true", path.Join(config.New().FilePrefix, path.Base(f.Name()))), nil)
|
r := httptest.NewRequest(http.MethodGet, fmt.Sprintf("%s?direct=true&%s", path.Join(prefix, path.Base(f.Name())), qparam), nil)
|
||||||
w := httptest.NewRecorder()
|
w := httptest.NewRecorder()
|
||||||
t.Logf("URL = %q", r.URL.String())
|
t.Logf("URL = %q", r.URL.String())
|
||||||
handler.ServeHTTP(w, r)
|
handler.ServeHTTP(w, r)
|
||||||
|
|
@ -92,14 +113,14 @@ func TestFiles(t *testing.T) {
|
||||||
}))
|
}))
|
||||||
defer s.Close()
|
defer s.Close()
|
||||||
|
|
||||||
r := httptest.NewRequest(http.MethodPost, fmt.Sprintf("%s?direct=true", path.Join(config.New().FilePrefix, name)), strings.NewReader(s.URL))
|
r := httptest.NewRequest(http.MethodPost, fmt.Sprintf("%s?direct=true&%s", path.Join(prefix, name), qparam), strings.NewReader(s.URL))
|
||||||
w := httptest.NewRecorder()
|
w := httptest.NewRecorder()
|
||||||
handler.ServeHTTP(w, r)
|
handler.ServeHTTP(w, r)
|
||||||
if w.Code != http.StatusOK {
|
if w.Code != http.StatusOK {
|
||||||
t.Fatalf("%d: %s", w.Code, w.Body.Bytes())
|
t.Fatalf("%d: %s", w.Code, w.Body.Bytes())
|
||||||
}
|
}
|
||||||
|
|
||||||
r = httptest.NewRequest(http.MethodGet, path.Join(config.New().FilePrefix, name), nil)
|
r = httptest.NewRequest(http.MethodGet, path.Join(prefix, name)+"?"+qparam, nil)
|
||||||
w = httptest.NewRecorder()
|
w = httptest.NewRecorder()
|
||||||
handler.ServeHTTP(w, r)
|
handler.ServeHTTP(w, r)
|
||||||
if w.Code != http.StatusOK {
|
if w.Code != http.StatusOK {
|
||||||
|
|
@ -118,7 +139,7 @@ func TestFiles(t *testing.T) {
|
||||||
f.Write([]byte("hello, world"))
|
f.Write([]byte("hello, world"))
|
||||||
f.Close()
|
f.Close()
|
||||||
|
|
||||||
r := httptest.NewRequest(http.MethodPost, path.Join(config.New().FilePrefix, path.Base(f.Name())), strings.NewReader(`bad link teehee`))
|
r := httptest.NewRequest(http.MethodPost, path.Join(prefix, path.Base(f.Name()))+"?"+qparam, strings.NewReader(`bad link teehee`))
|
||||||
w := httptest.NewRecorder()
|
w := httptest.NewRecorder()
|
||||||
handler.ServeHTTP(w, r)
|
handler.ServeHTTP(w, r)
|
||||||
if w.Code == http.StatusOK {
|
if w.Code == http.StatusOK {
|
||||||
|
|
@ -139,7 +160,7 @@ func TestFiles(t *testing.T) {
|
||||||
w2.Write([]byte("hello, world"))
|
w2.Write([]byte("hello, world"))
|
||||||
writer.Close()
|
writer.Close()
|
||||||
|
|
||||||
r := httptest.NewRequest(http.MethodPost, path.Join(config.New().FilePrefix, name), b)
|
r := httptest.NewRequest(http.MethodPost, path.Join(prefix, name)+"?"+qparam, b)
|
||||||
r.Header.Set("Content-Type", writer.FormDataContentType())
|
r.Header.Set("Content-Type", writer.FormDataContentType())
|
||||||
w := httptest.NewRecorder()
|
w := httptest.NewRecorder()
|
||||||
handler.ServeHTTP(w, r)
|
handler.ServeHTTP(w, r)
|
||||||
|
|
@ -147,7 +168,7 @@ func TestFiles(t *testing.T) {
|
||||||
t.Fatalf("%d: %s", w.Code, w.Body.Bytes())
|
t.Fatalf("%d: %s", w.Code, w.Body.Bytes())
|
||||||
}
|
}
|
||||||
|
|
||||||
r = httptest.NewRequest(http.MethodGet, path.Join(config.New().FilePrefix, name), nil)
|
r = httptest.NewRequest(http.MethodGet, path.Join(prefix, name)+"?"+qparam, nil)
|
||||||
w = httptest.NewRecorder()
|
w = httptest.NewRecorder()
|
||||||
handler.ServeHTTP(w, r)
|
handler.ServeHTTP(w, r)
|
||||||
if w.Code != http.StatusOK {
|
if w.Code != http.StatusOK {
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"local/dndex/storage"
|
"local/dndex/storage"
|
||||||
|
"local/dndex/storage/entity"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
"os"
|
"os"
|
||||||
|
|
@ -29,7 +30,11 @@ func TestPort(t *testing.T) {
|
||||||
if err := g.Delete(context.TODO(), "col", map[string]string{}); err != nil {
|
if err := g.Delete(context.TODO(), "col", map[string]string{}); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
fillDB(t, g)
|
for _, name := range []string{"A", "B", "C"} {
|
||||||
|
if err := g.Insert(context.TODO(), "col", entity.One{Name: name}); err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
handler := jsonHandler(g)
|
handler := jsonHandler(g)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -431,7 +431,7 @@ func TestWho(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func fillDB(t *testing.T, g storage.Graph) []entity.One {
|
func fillDB(t *testing.T, g storage.Graph) []entity.One {
|
||||||
ones := make([]entity.One, 25)
|
ones := make([]entity.One, 13)
|
||||||
for i := range ones {
|
for i := range ones {
|
||||||
ones[i] = randomOne()
|
ones[i] = randomOne()
|
||||||
if i > 0 {
|
if i > 0 {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue