47 lines
1.4 KiB
Go
47 lines
1.4 KiB
Go
package environment
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestPendingEnvironmentDatabaseIDOrder(t *testing.T) {
|
|
databaseURL := os.Getenv("CREATORHUB_POSTGRES_TEST_URL")
|
|
if databaseURL == "" {
|
|
t.Skip("set CREATORHUB_POSTGRES_TEST_URL to run PostgreSQL integration coverage")
|
|
}
|
|
ctx := context.Background()
|
|
store := openFullyMigratedHub(t, ctx, isolatedDatabaseURL(t, databaseURL))
|
|
t.Cleanup(func() { _ = store.Close() })
|
|
if _, err := store.CreateGateway(ctx, "order-gateway", "http://127.0.0.1:8090", "order-gateway-test-token"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
first, err := store.CreateStandaloneEnv(ctx, "order-gateway", Fingerprint{})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
second, err := store.CreateStandaloneEnv(ctx, "order-gateway", Fingerprint{})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if first.ID < 1 || second.ID <= first.ID {
|
|
t.Fatalf("environment IDs must increase: first=%d second=%d", first.ID, second.ID)
|
|
}
|
|
pending, err := store.ListPendingEnvironments(ctx)
|
|
if err != nil || len(pending) != 2 || pending[0].ID != second.ID || pending[1].ID != first.ID {
|
|
t.Fatalf("pending environments must be newest first: %#v err=%v", pending, err)
|
|
}
|
|
data, err := json.Marshal(second)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
var response struct {
|
|
ID int64 `json:"id"`
|
|
}
|
|
if err := json.Unmarshal(data, &response); err != nil || response.ID != second.ID {
|
|
t.Fatalf("database ID missing from environment JSON: %s err=%v", data, err)
|
|
}
|
|
}
|