Clean up integration tests
This commit is contained in:
parent
376a036067
commit
de1b3c36e2
1 changed files with 26 additions and 61 deletions
|
@ -11,46 +11,35 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
var serverUrl = "localhost:80"
|
var serverUrl = "localhost:80"
|
||||||
|
|
||||||
// Connection is the container for a simple connection to the server
|
func TestStatus(t *testing.T) {
|
||||||
type Connection struct {
|
|
||||||
host string
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewConnection sets up a new connection to a server host
|
|
||||||
func NewConnection(host string) *Connection {
|
|
||||||
return &Connection{
|
|
||||||
host: host,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Status returns the current status of the server
|
|
||||||
func (c *Connection) Status() (status StatusResponse, err error) {
|
|
||||||
url := url.URL{
|
url := url.URL{
|
||||||
Scheme: "http",
|
Scheme: "http",
|
||||||
Host: c.host,
|
Host: serverUrl,
|
||||||
Path: "status",
|
Path: "status",
|
||||||
}
|
}
|
||||||
|
resp, err := http.Get(url.String())
|
||||||
|
assert.NoError(t, err, "http.Get must not return error")
|
||||||
|
assert.Equal(t, http.StatusOK, resp.StatusCode, "http.Get must return StatusOK")
|
||||||
|
|
||||||
if resp, err := http.Get(url.String()); err != nil {
|
var status StatusResponse
|
||||||
return StatusResponse{}, err
|
err = json.NewDecoder(resp.Body).Decode(&status)
|
||||||
} else if resp.StatusCode != http.StatusOK {
|
assert.NoError(t, err, "json decode must not return error")
|
||||||
return StatusResponse{}, fmt.Errorf("Status request returned %d", resp.StatusCode)
|
|
||||||
} else {
|
|
||||||
err = json.NewDecoder(resp.Body).Decode(&status)
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
assert.NoError(t, err, "Status must not return error")
|
||||||
|
assert.True(t, status.Ready, "Server must return ready")
|
||||||
|
assert.NotZero(t, len(status.Version), "Version must not be empty")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register registers a new account on the server
|
// helper for register test
|
||||||
func (c *Connection) Register(name string) (register RegisterResponse, err error) {
|
func register(name string) (register RegisterResponse, err error) {
|
||||||
url := url.URL{
|
url := url.URL{
|
||||||
Scheme: "http",
|
Scheme: "http",
|
||||||
Host: c.host,
|
Host: serverUrl,
|
||||||
Path: "register",
|
Path: "register",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,44 +70,20 @@ func (c *Connection) Register(name string) (register RegisterResponse, err error
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestStatus(t *testing.T) {
|
|
||||||
conn := NewConnection(serverUrl)
|
|
||||||
|
|
||||||
if status, err := conn.Status(); err != nil {
|
|
||||||
t.Errorf("Status returned error: %s", err)
|
|
||||||
} else if !status.Ready {
|
|
||||||
t.Error("Server did not return that it was ready")
|
|
||||||
} else if len(status.Version) == 0 {
|
|
||||||
t.Error("Server returned blank version")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestRegister(t *testing.T) {
|
func TestRegister(t *testing.T) {
|
||||||
conn := NewConnection(serverUrl)
|
|
||||||
|
|
||||||
a := uuid.New().String()
|
a := uuid.New().String()
|
||||||
reg1, err := conn.Register(a)
|
reg1, err := register(a)
|
||||||
if err != nil {
|
assert.NoError(t, err, "Register must not return error")
|
||||||
t.Errorf("Register returned error: %s", err)
|
assert.True(t, reg1.Success, "Register must return success")
|
||||||
} else if !reg1.Success {
|
assert.NotZero(t, len(reg1.Id), "Register must return registration ID")
|
||||||
t.Error("Server did not success for Register")
|
|
||||||
} else if len(reg1.Id) == 0 {
|
|
||||||
t.Error("Server returned empty registration ID")
|
|
||||||
}
|
|
||||||
|
|
||||||
b := uuid.New().String()
|
b := uuid.New().String()
|
||||||
reg2, err := conn.Register(b)
|
reg2, err := register(b)
|
||||||
if err != nil {
|
assert.NoError(t, err, "Register must not return error")
|
||||||
t.Errorf("Register returned error: %s", err)
|
assert.True(t, reg2.Success, "Register must return success")
|
||||||
} else if !reg2.Success {
|
assert.NotZero(t, len(reg2.Id), "Register must return registration ID")
|
||||||
t.Error("Server did not success for Register")
|
|
||||||
} else if len(reg2.Id) == 0 {
|
|
||||||
t.Error("Server returned empty registration ID")
|
|
||||||
}
|
|
||||||
|
|
||||||
if reg2, err := conn.Register(a); err != nil {
|
reg2, err = register(a)
|
||||||
t.Errorf("Register returned error: %s", err)
|
assert.NoError(t, err, "Register must not return error")
|
||||||
} else if reg2.Success {
|
assert.False(t, reg2.Success, "Register must return fail for duplicate registration")
|
||||||
t.Error("Server should have failed to register duplicate name")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue