@@ -15,11 +15,15 @@ import (
1515func TestConfigSync_DryRun (t * testing.T ) {
1616 env := setupEnv (t )
1717
18- // Create a config with a new route to sync.
19- syncYAML := `version: "1"
18+ svcID := "e2e-sync-dryrun-svc"
19+ createTestServiceViaCLI (t , env , svcID )
20+ t .Cleanup (func () { deleteServiceViaAdmin (t , svcID ) })
21+
22+ syncYAML := fmt .Sprintf (`version: "1"
2023routes:
2124 - id: e2e-sync-dryrun-route
2225 name: e2e-sync-dryrun-route
26+ service_id: %s
2327 paths:
2428 - /sync-dryrun
2529 upstream:
@@ -28,30 +32,32 @@ routes:
2832 - host: "127.0.0.1"
2933 port: 8080
3034 weight: 1
31- `
35+ ` , svcID )
3236 tmpFile := filepath .Join (t .TempDir (), "sync-dryrun.yaml" )
3337 require .NoError (t , os .WriteFile (tmpFile , []byte (syncYAML ), 0644 ))
3438
35- // --dry-run should show what would change without applying.
3639 stdout , stderr , err := runA7WithEnv (env , "config" , "sync" , "-f" , tmpFile , "--dry-run" , "-g" , gatewayGroup )
3740 require .NoError (t , err , "stdout=%s stderr=%s" , stdout , stderr )
3841
39- // The route should NOT exist after dry-run.
4042 _ , _ , getErr := runA7WithEnv (env , "route" , "get" , "e2e-sync-dryrun-route" , "-g" , gatewayGroup )
4143 assert .Error (t , getErr , "dry-run should not create resources" )
4244}
4345
4446func TestConfigSync_CreateAndCleanup (t * testing.T ) {
4547 env := setupEnv (t )
48+ svcID := "e2e-sync-create-svc"
4649 routeID := "e2e-sync-create-route"
47- t .Cleanup (func () { deleteRouteViaAdmin (t , routeID ) })
50+ createTestServiceViaCLI (t , env , svcID )
51+ t .Cleanup (func () {
52+ deleteRouteViaAdmin (t , routeID )
53+ deleteServiceViaAdmin (t , svcID )
54+ })
4855
49- // Create a minimal config with just the new route
50- // and use --delete=false to avoid removing existing resources.
5156 minimalYAML := fmt .Sprintf (`version: "1"
5257routes:
5358 - id: %s
5459 name: %s
60+ service_id: %s
5561 paths:
5662 - /sync-create-test
5763 upstream:
@@ -60,31 +66,32 @@ routes:
6066 - host: "127.0.0.1"
6167 port: 8080
6268 weight: 1
63- ` , routeID , routeID )
69+ ` , routeID , routeID , svcID )
6470
6571 syncFile := filepath .Join (t .TempDir (), "sync-create.yaml" )
6672 require .NoError (t , os .WriteFile (syncFile , []byte (minimalYAML ), 0644 ))
6773
68- // Sync with --delete=false so we only create, not remove existing resources.
6974 stdout , stderr , err := runA7WithEnv (env , "config" , "sync" , "-f" , syncFile , "--delete=false" , "-g" , gatewayGroup )
7075 require .NoError (t , err , "stdout=%s stderr=%s" , stdout , stderr )
7176 assert .Contains (t , stdout , "Sync completed" )
7277
73- // Verify route was created.
7478 stdout , stderr , err = runA7WithEnv (env , "route" , "get" , routeID , "-g" , gatewayGroup )
7579 require .NoError (t , err , stderr )
7680 assert .Contains (t , stdout , routeID )
7781}
7882
7983func TestConfigSync_DeleteFalse (t * testing.T ) {
8084 env := setupEnv (t )
85+ svcID := "e2e-sync-nodelete-svc"
8186 routeID := "e2e-sync-nodelete-route"
82- t .Cleanup (func () { deleteRouteViaAdmin (t , routeID ) })
87+ createTestServiceViaCLI (t , env , svcID )
88+ t .Cleanup (func () {
89+ deleteRouteViaAdmin (t , routeID )
90+ deleteServiceViaAdmin (t , svcID )
91+ })
8392
84- // First create a route via CLI.
85- createTestRouteViaCLI (t , env , routeID )
93+ createTestRouteWithServiceViaCLI (t , env , routeID , svcID )
8694
87- // Now sync an empty config with --delete=false.
8895 emptyYAML := `version: "1"
8996`
9097 syncFile := filepath .Join (t .TempDir (), "sync-empty.yaml" )
@@ -93,21 +100,23 @@ func TestConfigSync_DeleteFalse(t *testing.T) {
93100 stdout , stderr , err := runA7WithEnv (env , "config" , "sync" , "-f" , syncFile , "--delete=false" , "-g" , gatewayGroup )
94101 require .NoError (t , err , "stdout=%s stderr=%s" , stdout , stderr )
95102
96- // Route should STILL exist because --delete=false.
97103 stdout , stderr , err = runA7WithEnv (env , "route" , "get" , routeID , "-g" , gatewayGroup )
98104 require .NoError (t , err , stderr )
99105 assert .Contains (t , stdout , routeID )
100106}
101107
102108func TestConfigSync_FullRoundtrip (t * testing.T ) {
103109 env := setupEnv (t )
110+ svcID := "e2e-sync-roundtrip-svc"
104111 routeID := "e2e-sync-roundtrip-route"
105- t .Cleanup (func () { deleteRouteViaAdmin (t , routeID ) })
112+ createTestServiceViaCLI (t , env , svcID )
113+ t .Cleanup (func () {
114+ deleteRouteViaAdmin (t , routeID )
115+ deleteServiceViaAdmin (t , svcID )
116+ })
106117
107- // Step 1: Create route via CLI.
108- createTestRouteViaCLI (t , env , routeID )
118+ createTestRouteWithServiceViaCLI (t , env , routeID , svcID )
109119
110- // Step 2: Dump current config.
111120 dumpFile := filepath .Join (t .TempDir (), "roundtrip-dump.yaml" )
112121 _ , stderr , err := runA7WithEnv (env , "config" , "dump" , "-g" , gatewayGroup , "-f" , dumpFile )
113122 require .NoError (t , err , stderr )
@@ -116,11 +125,9 @@ func TestConfigSync_FullRoundtrip(t *testing.T) {
116125 require .NoError (t , err )
117126 assert .Contains (t , string (data ), routeID )
118127
119- // Step 3: Diff should show no differences.
120128 stdout , stderr , err := runA7WithEnv (env , "config" , "diff" , "-f" , dumpFile , "-g" , gatewayGroup )
121129 require .NoError (t , err , "stdout=%s stderr=%s" , stdout , stderr )
122130
123- // Step 4: Sync same config — should be a no-op.
124131 stdout , stderr , err = runA7WithEnv (env , "config" , "sync" , "-f" , dumpFile , "-g" , gatewayGroup )
125132 require .NoError (t , err , "stdout=%s stderr=%s" , stdout , stderr )
126133 assert .Contains (t , stdout , "Sync completed" )
0 commit comments