remote: a few basic tests
This commit is contained in:
parent
1b8db12fde
commit
e396b88cb5
1
go.mod
1
go.mod
|
@ -63,6 +63,7 @@ require (
|
|||
github.com/sabhiram/go-gitignore v0.0.0-20201211210132-54b8a0bf510f
|
||||
github.com/sirupsen/logrus v1.7.0 // indirect
|
||||
github.com/spf13/cobra v1.1.1
|
||||
github.com/stretchr/testify v1.6.1
|
||||
github.com/ugorji/go v1.2.2 // indirect
|
||||
github.com/ulikunitz/xz v0.5.9 // indirect
|
||||
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad
|
||||
|
|
19
remote/client_test.go
Normal file
19
remote/client_test.go
Normal file
|
@ -0,0 +1,19 @@
|
|||
package remote
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
)
|
||||
|
||||
func createTestClient(h http.HandlerFunc) (*client, *httptest.Server) {
|
||||
s := httptest.NewServer(h)
|
||||
c := &client{
|
||||
httpClient: s.Client(),
|
||||
baseUrl: s.URL,
|
||||
|
||||
retries: 1,
|
||||
tokenId: "testid",
|
||||
token: "testtoken",
|
||||
}
|
||||
return c, s
|
||||
}
|
79
remote/http_test.go
Normal file
79
remote/http_test.go
Normal file
|
@ -0,0 +1,79 @@
|
|||
package remote
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestRequest(t *testing.T) {
|
||||
c, _ := createTestClient(func(rw http.ResponseWriter, r *http.Request) {
|
||||
assert.Equal(t, "application/vnd.pterodactyl.v1+json", r.Header.Get("Accept"))
|
||||
assert.Equal(t, "application/json", r.Header.Get("Content-Type"))
|
||||
assert.Equal(t, "Bearer testid.testtoken", r.Header.Get("Authorization"))
|
||||
assert.Equal(t, "/test", r.URL.Path)
|
||||
|
||||
rw.WriteHeader(http.StatusOK)
|
||||
})
|
||||
r, err := c.requestOnce(context.Background(), "", "/test", nil)
|
||||
assert.NoError(t, err)
|
||||
assert.NotNil(t, r)
|
||||
}
|
||||
|
||||
func TestRequestRetry(t *testing.T) {
|
||||
// Test if the client retries failed requests
|
||||
i := 0
|
||||
c, _ := createTestClient(func(rw http.ResponseWriter, r *http.Request) {
|
||||
if i < 1 {
|
||||
rw.WriteHeader(http.StatusInternalServerError)
|
||||
} else {
|
||||
rw.WriteHeader(http.StatusOK)
|
||||
}
|
||||
i++
|
||||
})
|
||||
c.retries = 2
|
||||
r, err := c.request(context.Background(), "", "", nil)
|
||||
assert.NoError(t, err)
|
||||
assert.NotNil(t, r)
|
||||
assert.Equal(t, http.StatusOK, r.StatusCode)
|
||||
assert.Equal(t, 2, i)
|
||||
|
||||
// Test whether the client returns the last request after retry limit is reached
|
||||
i = 0
|
||||
c, _ = createTestClient(func(rw http.ResponseWriter, r *http.Request) {
|
||||
rw.WriteHeader(http.StatusInternalServerError)
|
||||
i++
|
||||
})
|
||||
c.retries = 2
|
||||
r, err = c.request(context.Background(), "get", "", nil)
|
||||
assert.NoError(t, err)
|
||||
assert.NotNil(t, r)
|
||||
assert.Equal(t, http.StatusInternalServerError, r.StatusCode)
|
||||
assert.Equal(t, 2, i)
|
||||
}
|
||||
|
||||
func TestGet(t *testing.T) {
|
||||
c, _ := createTestClient(func(rw http.ResponseWriter, r *http.Request) {
|
||||
assert.Equal(t, http.MethodGet, r.Method)
|
||||
assert.Len(t, r.URL.Query(), 1)
|
||||
assert.Equal(t, "world", r.URL.Query().Get("hello"))
|
||||
})
|
||||
r, err := c.get(context.Background(), "/test", q{"hello": "world"})
|
||||
assert.NoError(t, err)
|
||||
assert.NotNil(t, r)
|
||||
}
|
||||
|
||||
func TestPost(t *testing.T) {
|
||||
test := map[string]string{
|
||||
"hello": "world",
|
||||
}
|
||||
c, _ := createTestClient(func(rw http.ResponseWriter, r *http.Request) {
|
||||
assert.Equal(t, http.MethodPost, r.Method)
|
||||
|
||||
})
|
||||
r, err := c.post(context.Background(), "/test", test)
|
||||
assert.NoError(t, err)
|
||||
assert.NotNil(t, r)
|
||||
}
|
Loading…
Reference in New Issue
Block a user