@@ -0,0 +1,111 @@
|
||||
package acceptance
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
code := m.Run()
|
||||
if err := writeReport(testConfig); err != nil && code == 0 {
|
||||
code = 1
|
||||
}
|
||||
os.Exit(code)
|
||||
}
|
||||
|
||||
func TestFixtureSeedLoader(t *testing.T) {
|
||||
c := cfg(t)
|
||||
ctx := context.Background()
|
||||
newFixtureLoader(c).SeedIfConfigured(t, ctx)
|
||||
}
|
||||
|
||||
func TestPublicSmoke(t *testing.T) {
|
||||
c := cfg(t)
|
||||
ctx := context.Background()
|
||||
client := newClient(c)
|
||||
|
||||
t.Run("happy path user info", func(t *testing.T) {
|
||||
token := loginUser(t, ctx, client, c)
|
||||
envelope, raw, status, err := client.WithToken(token).Get(ctx, "/v1/public/user/info", nil)
|
||||
if err != nil {
|
||||
t.Fatalf("request failed: %v", err)
|
||||
}
|
||||
assertOK(t, envelope, raw, status)
|
||||
recordCase(t, "public", http.MethodGet, "/v1/public/user/info", "200 envelope")
|
||||
})
|
||||
|
||||
t.Run("error path missing auth", func(t *testing.T) {
|
||||
envelope, raw, status, err := client.Get(ctx, "/v1/public/user/info", nil)
|
||||
if err != nil {
|
||||
t.Fatalf("request failed: %v", err)
|
||||
}
|
||||
assertAPIError(t, envelope, raw, status)
|
||||
recordCase(t, "public", http.MethodGet, "/v1/public/user/info", "non-200 envelope without auth")
|
||||
})
|
||||
}
|
||||
|
||||
func TestAdminSmoke(t *testing.T) {
|
||||
c := cfg(t)
|
||||
ctx := context.Background()
|
||||
client := newClient(c)
|
||||
|
||||
t.Run("happy path current admin", func(t *testing.T) {
|
||||
token := loginAdmin(t, ctx, client, c)
|
||||
envelope, raw, status, err := client.WithToken(token).Get(ctx, "/v1/admin/user/current", nil)
|
||||
if err != nil {
|
||||
t.Fatalf("request failed: %v", err)
|
||||
}
|
||||
assertOK(t, envelope, raw, status)
|
||||
recordCase(t, "admin", http.MethodGet, "/v1/admin/user/current", "200 envelope")
|
||||
})
|
||||
|
||||
t.Run("error path missing auth", func(t *testing.T) {
|
||||
envelope, raw, status, err := client.Get(ctx, "/v1/admin/user/current", nil)
|
||||
if err != nil {
|
||||
t.Fatalf("request failed: %v", err)
|
||||
}
|
||||
assertAPIError(t, envelope, raw, status)
|
||||
recordCase(t, "admin", http.MethodGet, "/v1/admin/user/current", "non-200 envelope without auth")
|
||||
})
|
||||
}
|
||||
|
||||
func TestNodeSmoke(t *testing.T) {
|
||||
c := cfg(t)
|
||||
ctx := context.Background()
|
||||
client := newClient(c)
|
||||
loader := newFixtureLoader(c)
|
||||
|
||||
t.Run("happy path server config", func(t *testing.T) {
|
||||
secret, err := loader.NodeSecret(ctx)
|
||||
if err != nil {
|
||||
t.Fatalf("load node secret: %v", err)
|
||||
}
|
||||
secret = requireSecret(t, "node secret", secret)
|
||||
query := url.Values{}
|
||||
query.Set("secret_key", secret)
|
||||
query.Set("protocols", c.NodeProtocol)
|
||||
envelope, raw, status, err := client.Get(ctx, "/v2/server/"+c.NodeServerID, query)
|
||||
if err != nil {
|
||||
t.Fatalf("request failed: %v", err)
|
||||
}
|
||||
assertOK(t, envelope, raw, status)
|
||||
recordCase(t, "node", http.MethodGet, "/v2/server/{server_id}", "200 envelope")
|
||||
})
|
||||
|
||||
t.Run("error path invalid secret", func(t *testing.T) {
|
||||
query := url.Values{}
|
||||
query.Set("secret_key", "invalid-"+c.RunID)
|
||||
query.Set("protocols", c.NodeProtocol)
|
||||
_, raw, status, err := client.Get(ctx, "/v1/server/config", query)
|
||||
if err != nil {
|
||||
t.Fatalf("request failed: %v", err)
|
||||
}
|
||||
if status != http.StatusForbidden {
|
||||
t.Fatalf("http status = %d, want 403; body=%s", status, sanitizeBody(raw))
|
||||
}
|
||||
recordCase(t, "node", http.MethodGet, "/v1/server/config", "403 with invalid secret")
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user