Clean up integration tests

This commit is contained in:
Marc Di Luzio 2020-06-04 18:02:41 +01:00
parent 376a036067
commit de1b3c36e2

View file

@ -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")
}
} }