89 lines
2.3 KiB
Go
89 lines
2.3 KiB
Go
// +build integration
|
|
|
|
package server
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"fmt"
|
|
"net/http"
|
|
"net/url"
|
|
"testing"
|
|
|
|
"github.com/google/uuid"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
var serverUrl = "localhost:80"
|
|
|
|
func TestStatus(t *testing.T) {
|
|
url := url.URL{
|
|
Scheme: "http",
|
|
Host: serverUrl,
|
|
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")
|
|
|
|
var status StatusResponse
|
|
err = json.NewDecoder(resp.Body).Decode(&status)
|
|
assert.NoError(t, err, "json decode must not return error")
|
|
|
|
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")
|
|
}
|
|
|
|
// helper for register test
|
|
func register(name string) (register RegisterResponse, err error) {
|
|
url := url.URL{
|
|
Scheme: "http",
|
|
Host: serverUrl,
|
|
Path: "register",
|
|
}
|
|
|
|
// Marshal the register data struct
|
|
data := RegisterData{Name: name}
|
|
marshalled, err := json.Marshal(data)
|
|
|
|
// Set up the request
|
|
req, err := http.NewRequest("POST", url.String(), bytes.NewReader(marshalled))
|
|
req.Header.Set("Content-Type", "application/json")
|
|
|
|
// Do the request
|
|
client := &http.Client{}
|
|
if resp, err := client.Do(req); err != nil {
|
|
return RegisterResponse{}, err
|
|
} else {
|
|
defer resp.Body.Close()
|
|
|
|
// Handle any errors
|
|
if resp.StatusCode != http.StatusOK {
|
|
return RegisterResponse{}, fmt.Errorf("Status request returned %d", resp.StatusCode)
|
|
} else {
|
|
// Decode the reply
|
|
err = json.NewDecoder(resp.Body).Decode(®ister)
|
|
}
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
func TestRegister(t *testing.T) {
|
|
a := uuid.New().String()
|
|
reg1, err := register(a)
|
|
assert.NoError(t, err, "Register must not return error")
|
|
assert.True(t, reg1.Success, "Register must return success")
|
|
assert.NotZero(t, len(reg1.Id), "Register must return registration ID")
|
|
|
|
b := uuid.New().String()
|
|
reg2, err := register(b)
|
|
assert.NoError(t, err, "Register must not return error")
|
|
assert.True(t, reg2.Success, "Register must return success")
|
|
assert.NotZero(t, len(reg2.Id), "Register must return registration ID")
|
|
|
|
reg2, err = register(a)
|
|
assert.NoError(t, err, "Register must not return error")
|
|
assert.False(t, reg2.Success, "Register must return fail for duplicate registration")
|
|
}
|