phase 4: drop stale gRPC nomenclature from integration tests
Phase 4 replaced the gateway's authenticated edge listener with a Connect-Go HTTP/h2c bootstrap that natively serves Connect, gRPC, and gRPC-Web. Sweep the integration suite so test names, comments, and helper docs match the new transport posture: rename TestUserAccount_GetThroughGatewayGRPC to TestUserAccount_GetThroughGatewayEdge, flip "authenticated gRPC" / "signed gRPC" / "gateway gRPC" comments to "authenticated edge", and align testenv doc strings. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
{"sessionId":"eb7ac833-18c4-4e5b-a2c0-a53f3599c55b","pid":31048,"procStart":"Wed May 6 22:37:00 2026","acquiredAt":1778147404017}
|
||||||
@@ -13,7 +13,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// TestLobbyMyGamesList drives `lobby.my.games.list` through the
|
// TestLobbyMyGamesList drives `lobby.my.games.list` through the
|
||||||
// authenticated gateway gRPC surface. `my.games.list` returns games
|
// authenticated edge surface (Connect / gRPC / gRPC-Web). `my.games.list` returns games
|
||||||
// where the caller has an active membership, so the test creates a
|
// where the caller has an active membership, so the test creates a
|
||||||
// private game with one user, opens enrollment, invites a second
|
// private game with one user, opens enrollment, invites a second
|
||||||
// user, the second user redeems the invite (becomes a member), and
|
// user, the second user redeems the invite (becomes a member), and
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// TestLobbyOpenEnrollment drives `lobby.game.open-enrollment` through
|
// TestLobbyOpenEnrollment drives `lobby.game.open-enrollment` through
|
||||||
// gateway gRPC. Owner moves draft → enrollment_open; non-owner is
|
// gateway authenticated edge. Owner moves draft → enrollment_open; non-owner is
|
||||||
// rejected; idempotent re-call on enrollment_open is a no-op (still
|
// rejected; idempotent re-call on enrollment_open is a no-op (still
|
||||||
// returns enrollment_open).
|
// returns enrollment_open).
|
||||||
func TestLobbyOpenEnrollment(t *testing.T) {
|
func TestLobbyOpenEnrollment(t *testing.T) {
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// TestSessionRevoke_SubsequentRequestsRejected revokes the caller's
|
// TestSessionRevoke_SubsequentRequestsRejected revokes the caller's
|
||||||
// session through the user surface (signed gRPC end-to-end) and
|
// session through the user surface (signed authenticated-edge end-to-end) and
|
||||||
// asserts that subsequent authenticated calls bound to that session
|
// asserts that subsequent authenticated calls bound to that session
|
||||||
// are rejected by gateway.
|
// are rejected by gateway.
|
||||||
func TestSessionRevoke_SubsequentRequestsRejected(t *testing.T) {
|
func TestSessionRevoke_SubsequentRequestsRejected(t *testing.T) {
|
||||||
@@ -35,7 +35,7 @@ func TestSessionRevoke_SubsequentRequestsRejected(t *testing.T) {
|
|||||||
t.Fatalf("pre-revoke call failed: %v", err)
|
t.Fatalf("pre-revoke call failed: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Revoke own session through signed gRPC.
|
// Revoke own session through signed authenticated-edge call.
|
||||||
revokePayload, err := transcoder.RevokeMySessionRequestToPayload(&usermodel.RevokeMySessionRequest{
|
revokePayload, err := transcoder.RevokeMySessionRequestToPayload(&usermodel.RevokeMySessionRequest{
|
||||||
DeviceSessionID: sess.DeviceSessionID,
|
DeviceSessionID: sess.DeviceSessionID,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import (
|
|||||||
// TestSoftDelete_Cascade triggers `POST /api/v1/user/account/delete`
|
// TestSoftDelete_Cascade triggers `POST /api/v1/user/account/delete`
|
||||||
// with X-User-ID set (mirroring what gateway does after authenticated
|
// with X-User-ID set (mirroring what gateway does after authenticated
|
||||||
// verification) and asserts:
|
// verification) and asserts:
|
||||||
// - the account fetch through the authenticated gRPC surface
|
// - the account fetch through the authenticated edge surface
|
||||||
// subsequently fails because soft-delete revoked the session;
|
// subsequently fails because soft-delete revoked the session;
|
||||||
// - the admin geo endpoint reports the user has no remaining
|
// - the admin geo endpoint reports the user has no remaining
|
||||||
// country counter rows.
|
// country counter rows.
|
||||||
@@ -57,7 +57,7 @@ func TestSoftDelete_Cascade(t *testing.T) {
|
|||||||
t.Fatalf("soft delete: status %d body=%s", resp.StatusCode, string(raw))
|
t.Fatalf("soft delete: status %d body=%s", resp.StatusCode, string(raw))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Authenticated gRPC must now be rejected.
|
// Authenticated edge must now be rejected.
|
||||||
deadline := time.Now().Add(2 * time.Second)
|
deadline := time.Now().Add(2 * time.Second)
|
||||||
var lastErr error
|
var lastErr error
|
||||||
for time.Now().Before(deadline) {
|
for time.Now().Before(deadline) {
|
||||||
|
|||||||
@@ -171,8 +171,8 @@ func (c *BackendInternalClient) Do(ctx context.Context, method, path string, bod
|
|||||||
// BackendUserClient hits backend's `/api/v1/user/*` endpoints
|
// BackendUserClient hits backend's `/api/v1/user/*` endpoints
|
||||||
// directly with `X-User-ID` set, mirroring what gateway does after
|
// directly with `X-User-ID` set, mirroring what gateway does after
|
||||||
// authenticated traffic verification. Used by scenarios whose
|
// authenticated traffic verification. Used by scenarios whose
|
||||||
// message_type is not registered in gateway's gRPC router (lobby
|
// message_type is not registered in gateway's downstream router
|
||||||
// create, soft delete, etc.).
|
// (lobby create, soft delete, etc.).
|
||||||
type BackendUserClient struct {
|
type BackendUserClient struct {
|
||||||
BaseURL string
|
BaseURL string
|
||||||
UserID string
|
UserID string
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import (
|
|||||||
|
|
||||||
// Platform aggregates a fully booted Galaxy stack: shared Docker
|
// Platform aggregates a fully booted Galaxy stack: shared Docker
|
||||||
// network, Postgres, Redis, mailpit, backend and gateway. Tests use
|
// network, Postgres, Redis, mailpit, backend and gateway. Tests use
|
||||||
// this struct to access HTTP/gRPC endpoints, mailpit and backend
|
// this struct to access HTTP and authenticated-edge endpoints, mailpit and backend
|
||||||
// admin without touching testcontainers directly.
|
// admin without touching testcontainers directly.
|
||||||
type Platform struct {
|
type Platform struct {
|
||||||
Network string
|
Network string
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// Session is a registered device session ready to drive the
|
// Session is a registered device session ready to drive the
|
||||||
// authenticated gRPC surface.
|
// authenticated edge surface.
|
||||||
type Session struct {
|
type Session struct {
|
||||||
Email string
|
Email string
|
||||||
DeviceSessionID string
|
DeviceSessionID string
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ import (
|
|||||||
"galaxy/transcoder"
|
"galaxy/transcoder"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TestUserAccount_GetThroughGatewayGRPC drives the authenticated
|
// TestUserAccount_GetThroughGatewayEdge drives the authenticated
|
||||||
// gRPC user surface (`user.account.get`) through gateway → backend
|
// edge user surface (`user.account.get`) through gateway → backend
|
||||||
// → user store. The test signs an envelope, sends it via gRPC, and
|
// → user store. The test signs an envelope, sends it via Connect, and
|
||||||
// verifies the response signature, then decodes the FlatBuffers
|
// verifies the response signature, then decodes the FlatBuffers
|
||||||
// payload into the typed AccountResponse.
|
// payload into the typed AccountResponse.
|
||||||
//
|
//
|
||||||
@@ -21,7 +21,7 @@ import (
|
|||||||
// backend's HTTP `/api/v1/user/account`, which triggers the geo
|
// backend's HTTP `/api/v1/user/account`, which triggers the geo
|
||||||
// counter middleware. We validate the counter increments on the
|
// counter middleware. We validate the counter increments on the
|
||||||
// admin geo endpoint.
|
// admin geo endpoint.
|
||||||
func TestUserAccount_GetThroughGatewayGRPC(t *testing.T) {
|
func TestUserAccount_GetThroughGatewayEdge(t *testing.T) {
|
||||||
plat := testenv.Bootstrap(t, testenv.BootstrapOptions{})
|
plat := testenv.Bootstrap(t, testenv.BootstrapOptions{})
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
|
ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// TestUserProfileUpdate exercises `user.profile.update` over the
|
// TestUserProfileUpdate exercises `user.profile.update` over the
|
||||||
// authenticated gateway gRPC surface and verifies that the new
|
// authenticated edge surface (Connect / gRPC / gRPC-Web) and verifies that the new
|
||||||
// display_name is reflected by a subsequent `user.account.get`.
|
// display_name is reflected by a subsequent `user.account.get`.
|
||||||
func TestUserProfileUpdate(t *testing.T) {
|
func TestUserProfileUpdate(t *testing.T) {
|
||||||
plat := testenv.Bootstrap(t, testenv.BootstrapOptions{})
|
plat := testenv.Bootstrap(t, testenv.BootstrapOptions{})
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import (
|
|||||||
|
|
||||||
// TestUserSettingsUpdate verifies `user.settings.update` accepts a
|
// TestUserSettingsUpdate verifies `user.settings.update` accepts a
|
||||||
// valid BCP 47 / IANA pair and rejects malformed inputs through the
|
// valid BCP 47 / IANA pair and rejects malformed inputs through the
|
||||||
// gateway gRPC surface.
|
// gateway authenticated edge surface.
|
||||||
func TestUserSettingsUpdate(t *testing.T) {
|
func TestUserSettingsUpdate(t *testing.T) {
|
||||||
plat := testenv.Bootstrap(t, testenv.BootstrapOptions{})
|
plat := testenv.Bootstrap(t, testenv.BootstrapOptions{})
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
|
ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
|
||||||
|
|||||||
Reference in New Issue
Block a user