* add store methods for verification * add verify rest and auth * lint: fix double conversion of userID key * test for middleware, fix log without auth info * make all scripts with -e
64 lines
1.7 KiB
Go
64 lines
1.7 KiB
Go
package api
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/go-chi/chi"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/umputun/remark/app/rest"
|
|
"github.com/umputun/remark/app/store"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestMiddleware_AppInfo(t *testing.T) {
|
|
router := chi.NewRouter()
|
|
router.With(AppInfo("remark42", "12345")).Get("/blah", func(w http.ResponseWriter, r *http.Request) {
|
|
w.WriteHeader(200)
|
|
w.Write([]byte("blah blah"))
|
|
})
|
|
ts := httptest.NewServer(router)
|
|
defer ts.Close()
|
|
|
|
resp, err := http.Get(ts.URL + "/blah")
|
|
require.Nil(t, err)
|
|
assert.Equal(t, 200, resp.StatusCode)
|
|
|
|
b, err := ioutil.ReadAll(resp.Body)
|
|
assert.NoError(t, err)
|
|
|
|
assert.Equal(t, "blah blah", string(b))
|
|
assert.Equal(t, "remark42", resp.Header.Get("App-Name"))
|
|
assert.Equal(t, "12345", resp.Header.Get("App-Version"))
|
|
assert.Equal(t, "Umputun", resp.Header.Get("Org"))
|
|
}
|
|
|
|
func TestMiddleware_GetBodyAndUser(t *testing.T) {
|
|
req, err := http.NewRequest("GET", "http://example.com/request", strings.NewReader("body"))
|
|
require.Nil(t, err)
|
|
|
|
body, user := getBodyAndUser(req, []LoggerFlag{LogAll})
|
|
assert.Equal(t, "body", body)
|
|
assert.Equal(t, "", user, "no user")
|
|
|
|
req = rest.SetUserInfo(req, store.User{ID: "id1", Name: "user1"})
|
|
body, user = getBodyAndUser(req, []LoggerFlag{LogAll})
|
|
assert.Equal(t, ` - id1 "user1"`, user, "no user")
|
|
|
|
body, user = getBodyAndUser(req, nil)
|
|
assert.Equal(t, "", body)
|
|
assert.Equal(t, "", user, "no user")
|
|
|
|
body, user = getBodyAndUser(req, []LoggerFlag{LogNone})
|
|
assert.Equal(t, "", body)
|
|
assert.Equal(t, "", user, "no user")
|
|
|
|
body, user = getBodyAndUser(req, []LoggerFlag{LogUser})
|
|
assert.Equal(t, "", body)
|
|
assert.Equal(t, ` - id1 "user1"`, user, "no user")
|
|
}
|