Skip to content

Commit 50c5c7c

Browse files
committed
chore: refactor grpc tests to use a better mocking api
1 parent fab4cf1 commit 50c5c7c

25 files changed

Lines changed: 586 additions & 910 deletions

internal/cli/config_load_test.go

Lines changed: 20 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package cli_test
22

33
import (
4-
"context"
54
"testing"
65

76
"github.com/stretchr/testify/assert"
@@ -16,51 +15,46 @@ import (
1615
// loaded via --config reaches the gRPC request.
1716
func TestConfigLoad_FlagSetsAccountID(t *testing.T) {
1817
env := testutil.NewBareTestEnv(t)
19-
t.Cleanup(env.Cleanup)
2018

2119
cfgPath := testutil.WriteConfigFile(t, t.TempDir(), map[string]any{
2220
"account_id": "account-from-file",
2321
})
2422

25-
var capturedAccountID string
26-
env.Server.ListClustersFunc = func(_ context.Context, req *clusterv1.ListClustersRequest) (*clusterv1.ListClustersResponse, error) {
27-
capturedAccountID = req.GetAccountId()
28-
return &clusterv1.ListClustersResponse{}, nil
29-
}
23+
env.Server.ListClustersCalls.Returns(&clusterv1.ListClustersResponse{}, nil)
3024

3125
_, _, err := testutil.Exec(t, env, "--config", cfgPath, "cluster", "list")
3226
require.NoError(t, err)
33-
assert.Equal(t, "account-from-file", capturedAccountID)
27+
28+
req, ok := env.Server.ListClustersCalls.Last()
29+
require.True(t, ok)
30+
assert.Equal(t, "account-from-file", req.GetAccountId())
3431
}
3532

3633
// TestConfigLoad_EnvVarSetsAccountID verifies that QDRANT_CLOUD_CONFIG env var
3734
// is respected when no --config flag is given.
3835
func TestConfigLoad_EnvVarSetsAccountID(t *testing.T) {
3936
env := testutil.NewBareTestEnv(t)
40-
t.Cleanup(env.Cleanup)
4137

4238
cfgPath := testutil.WriteConfigFile(t, t.TempDir(), map[string]any{
4339
"account_id": "account-from-envvar",
4440
})
4541

4642
t.Setenv("QDRANT_CLOUD_CONFIG", cfgPath)
4743

48-
var capturedAccountID string
49-
env.Server.ListClustersFunc = func(_ context.Context, req *clusterv1.ListClustersRequest) (*clusterv1.ListClustersResponse, error) {
50-
capturedAccountID = req.GetAccountId()
51-
return &clusterv1.ListClustersResponse{}, nil
52-
}
44+
env.Server.ListClustersCalls.Returns(&clusterv1.ListClustersResponse{}, nil)
5345

5446
_, _, err := testutil.Exec(t, env, "cluster", "list")
5547
require.NoError(t, err)
56-
assert.Equal(t, "account-from-envvar", capturedAccountID)
48+
49+
req, ok := env.Server.ListClustersCalls.Last()
50+
require.True(t, ok)
51+
assert.Equal(t, "account-from-envvar", req.GetAccountId())
5752
}
5853

5954
// TestConfigLoad_FlagOverridesEnvVar verifies that --config flag takes
6055
// precedence over QDRANT_CLOUD_CONFIG env var.
6156
func TestConfigLoad_FlagOverridesEnvVar(t *testing.T) {
6257
env := testutil.NewBareTestEnv(t)
63-
t.Cleanup(env.Cleanup)
6458

6559
dir := t.TempDir()
6660
flagCfg := testutil.WriteConfigFile(t, dir, map[string]any{
@@ -73,34 +67,31 @@ func TestConfigLoad_FlagOverridesEnvVar(t *testing.T) {
7367

7468
t.Setenv("QDRANT_CLOUD_CONFIG", envCfg)
7569

76-
var capturedAccountID string
77-
env.Server.ListClustersFunc = func(_ context.Context, req *clusterv1.ListClustersRequest) (*clusterv1.ListClustersResponse, error) {
78-
capturedAccountID = req.GetAccountId()
79-
return &clusterv1.ListClustersResponse{}, nil
80-
}
70+
env.Server.ListClustersCalls.Returns(&clusterv1.ListClustersResponse{}, nil)
8171

8272
_, _, err := testutil.Exec(t, env, "--config", flagCfg, "cluster", "list")
8373
require.NoError(t, err)
84-
assert.Equal(t, "account-from-flag", capturedAccountID)
74+
75+
req, ok := env.Server.ListClustersCalls.Last()
76+
require.True(t, ok)
77+
assert.Equal(t, "account-from-flag", req.GetAccountId())
8578
}
8679

8780
// TestConfigLoad_WithAccountIDTakesPrecedence verifies that WithAccountID (Set)
8881
// takes precedence over a config file loaded via --config (Set > config file).
8982
func TestConfigLoad_WithAccountIDTakesPrecedence(t *testing.T) {
9083
env := testutil.NewTestEnv(t, testutil.WithAccountID("explicit-id"))
91-
t.Cleanup(env.Cleanup)
9284

9385
cfgPath := testutil.WriteConfigFile(t, t.TempDir(), map[string]any{
9486
"account_id": "account-from-file",
9587
})
9688

97-
var capturedAccountID string
98-
env.Server.ListClustersFunc = func(_ context.Context, req *clusterv1.ListClustersRequest) (*clusterv1.ListClustersResponse, error) {
99-
capturedAccountID = req.GetAccountId()
100-
return &clusterv1.ListClustersResponse{}, nil
101-
}
89+
env.Server.ListClustersCalls.Returns(&clusterv1.ListClustersResponse{}, nil)
10290

10391
_, _, err := testutil.Exec(t, env, "--config", cfgPath, "cluster", "list")
10492
require.NoError(t, err)
105-
assert.Equal(t, "explicit-id", capturedAccountID)
93+
94+
req, ok := env.Server.ListClustersCalls.Last()
95+
require.True(t, ok)
96+
assert.Equal(t, "explicit-id", req.GetAccountId())
10697
}

internal/cmd/backup/create_test.go

Lines changed: 23 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package backup_test
22

33
import (
4-
"context"
54
"encoding/json"
65
"testing"
76

@@ -15,50 +14,47 @@ import (
1514

1615
func TestBackupCreate_Success(t *testing.T) {
1716
env := testutil.NewTestEnv(t)
18-
t.Cleanup(env.Cleanup)
19-
20-
env.BackupServer.CreateBackupFunc = func(_ context.Context, req *backupv1.CreateBackupRequest) (*backupv1.CreateBackupResponse, error) {
21-
assert.Equal(t, "test-account-id", req.GetBackup().GetAccountId())
22-
assert.Equal(t, "cluster-abc", req.GetBackup().GetClusterId())
23-
return &backupv1.CreateBackupResponse{
24-
Backup: &backupv1.Backup{Id: "backup-new", ClusterId: "cluster-abc"},
25-
}, nil
26-
}
17+
18+
env.BackupServer.CreateBackupCalls.Returns(&backupv1.CreateBackupResponse{
19+
Backup: &backupv1.Backup{Id: "backup-new", ClusterId: "cluster-abc"},
20+
}, nil)
2721

2822
stdout, _, err := testutil.Exec(t, env, "backup", "create", "--cluster-id=cluster-abc", "--retention-days=7")
2923
require.NoError(t, err)
3024
assert.Contains(t, stdout, "backup-new")
3125
assert.Contains(t, stdout, "cluster-abc")
26+
27+
req, ok := env.BackupServer.CreateBackupCalls.Last()
28+
require.True(t, ok)
29+
assert.Equal(t, "test-account-id", req.GetBackup().GetAccountId())
30+
assert.Equal(t, "cluster-abc", req.GetBackup().GetClusterId())
3231
}
3332

3433
func TestBackupCreate_WithRetention(t *testing.T) {
3534
env := testutil.NewTestEnv(t)
36-
t.Cleanup(env.Cleanup)
3735

38-
var capturedRetention int64
39-
env.BackupServer.CreateBackupFunc = func(_ context.Context, req *backupv1.CreateBackupRequest) (*backupv1.CreateBackupResponse, error) {
40-
if req.GetBackup().GetRetentionPeriod() != nil {
41-
capturedRetention = int64(req.GetBackup().GetRetentionPeriod().AsDuration().Hours()) / 24
42-
}
43-
return &backupv1.CreateBackupResponse{
44-
Backup: &backupv1.Backup{Id: "backup-ret", ClusterId: "cluster-abc"},
45-
}, nil
46-
}
36+
env.BackupServer.CreateBackupCalls.Returns(&backupv1.CreateBackupResponse{
37+
Backup: &backupv1.Backup{Id: "backup-ret", ClusterId: "cluster-abc"},
38+
}, nil)
4739

4840
_, _, err := testutil.Exec(t, env, "backup", "create", "--cluster-id=cluster-abc", "--retention-days=7")
4941
require.NoError(t, err)
42+
43+
req, ok := env.BackupServer.CreateBackupCalls.Last()
44+
require.True(t, ok)
45+
var capturedRetention int64
46+
if req.GetBackup().GetRetentionPeriod() != nil {
47+
capturedRetention = int64(req.GetBackup().GetRetentionPeriod().AsDuration().Hours()) / 24
48+
}
5049
assert.Equal(t, int64(7), capturedRetention)
5150
}
5251

5352
func TestBackupCreate_JSONOutput(t *testing.T) {
5453
env := testutil.NewTestEnv(t)
55-
t.Cleanup(env.Cleanup)
5654

57-
env.BackupServer.CreateBackupFunc = func(_ context.Context, _ *backupv1.CreateBackupRequest) (*backupv1.CreateBackupResponse, error) {
58-
return &backupv1.CreateBackupResponse{
59-
Backup: &backupv1.Backup{Id: "backup-json", ClusterId: "cluster-123"},
60-
}, nil
61-
}
55+
env.BackupServer.CreateBackupCalls.Returns(&backupv1.CreateBackupResponse{
56+
Backup: &backupv1.Backup{Id: "backup-json", ClusterId: "cluster-123"},
57+
}, nil)
6258

6359
stdout, _, err := testutil.Exec(t, env, "backup", "create", "--cluster-id=cluster-123", "--retention-days=7", "--json")
6460
require.NoError(t, err)
@@ -73,27 +69,22 @@ func TestBackupCreate_JSONOutput(t *testing.T) {
7369

7470
func TestBackupCreate_InvalidRetention(t *testing.T) {
7571
env := testutil.NewTestEnv(t)
76-
t.Cleanup(env.Cleanup)
7772

7873
_, _, err := testutil.Exec(t, env, "backup", "create", "--cluster-id=cluster-abc", "--retention-days=0")
7974
require.Error(t, err)
8075
}
8176

8277
func TestBackupCreate_MissingClusterID(t *testing.T) {
8378
env := testutil.NewTestEnv(t)
84-
t.Cleanup(env.Cleanup)
8579

8680
_, _, err := testutil.Exec(t, env, "backup", "create")
8781
require.Error(t, err)
8882
}
8983

9084
func TestBackupCreate_APIError(t *testing.T) {
9185
env := testutil.NewTestEnv(t)
92-
t.Cleanup(env.Cleanup)
9386

94-
env.BackupServer.CreateBackupFunc = func(_ context.Context, _ *backupv1.CreateBackupRequest) (*backupv1.CreateBackupResponse, error) {
95-
return nil, assert.AnError
96-
}
87+
env.BackupServer.CreateBackupCalls.Returns(nil, assert.AnError)
9788

9889
_, _, err := testutil.Exec(t, env, "backup", "create", "--cluster-id=cluster-abc", "--retention-days=7")
9990
require.Error(t, err)

internal/cmd/backup/delete_test.go

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package backup_test
22

33
import (
4-
"context"
54
"testing"
65

76
"github.com/stretchr/testify/assert"
@@ -14,29 +13,24 @@ import (
1413

1514
func TestBackupDelete_WithForce(t *testing.T) {
1615
env := testutil.NewTestEnv(t)
17-
t.Cleanup(env.Cleanup)
1816

19-
var capturedBackupID string
20-
env.BackupServer.DeleteBackupFunc = func(_ context.Context, req *backupv1.DeleteBackupRequest) (*backupv1.DeleteBackupResponse, error) {
21-
assert.Equal(t, "test-account-id", req.GetAccountId())
22-
capturedBackupID = req.GetBackupId()
23-
return &backupv1.DeleteBackupResponse{}, nil
24-
}
17+
env.BackupServer.DeleteBackupCalls.Returns(&backupv1.DeleteBackupResponse{}, nil)
2518

2619
stdout, _, err := testutil.Exec(t, env, "backup", "delete", "backup-abc", "--force")
2720
require.NoError(t, err)
28-
assert.Equal(t, "backup-abc", capturedBackupID)
21+
22+
req, ok := env.BackupServer.DeleteBackupCalls.Last()
23+
require.True(t, ok)
24+
assert.Equal(t, "test-account-id", req.GetAccountId())
25+
assert.Equal(t, "backup-abc", req.GetBackupId())
2926
assert.Contains(t, stdout, "backup-abc")
3027
assert.Contains(t, stdout, "deleted")
3128
}
3229

3330
func TestBackupDelete_APIError(t *testing.T) {
3431
env := testutil.NewTestEnv(t)
35-
t.Cleanup(env.Cleanup)
3632

37-
env.BackupServer.DeleteBackupFunc = func(_ context.Context, _ *backupv1.DeleteBackupRequest) (*backupv1.DeleteBackupResponse, error) {
38-
return nil, assert.AnError
39-
}
33+
env.BackupServer.DeleteBackupCalls.Returns(nil, assert.AnError)
4034

4135
_, _, err := testutil.Exec(t, env, "backup", "delete", "backup-abc", "--force")
4236
require.Error(t, err)

internal/cmd/backup/describe_test.go

Lines changed: 18 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package backup_test
22

33
import (
4-
"context"
54
"encoding/json"
65
"testing"
76

@@ -16,39 +15,36 @@ import (
1615

1716
func TestBackupDescribe_TextOutput(t *testing.T) {
1817
env := testutil.NewTestEnv(t)
19-
t.Cleanup(env.Cleanup)
2018

21-
env.BackupServer.GetBackupFunc = func(_ context.Context, req *backupv1.GetBackupRequest) (*backupv1.GetBackupResponse, error) {
22-
assert.Equal(t, "test-account-id", req.GetAccountId())
23-
assert.Equal(t, "backup-abc", req.GetBackupId())
24-
return &backupv1.GetBackupResponse{
25-
Backup: &backupv1.Backup{
26-
Id: "backup-abc",
27-
Name: "my-backup",
28-
ClusterId: "cluster-123",
29-
Status: backupv1.BackupStatus_BACKUP_STATUS_SUCCEEDED,
30-
CreatedAt: timestamppb.Now(),
31-
},
32-
}, nil
33-
}
19+
env.BackupServer.GetBackupCalls.Returns(&backupv1.GetBackupResponse{
20+
Backup: &backupv1.Backup{
21+
Id: "backup-abc",
22+
Name: "my-backup",
23+
ClusterId: "cluster-123",
24+
Status: backupv1.BackupStatus_BACKUP_STATUS_SUCCEEDED,
25+
CreatedAt: timestamppb.Now(),
26+
},
27+
}, nil)
3428

3529
stdout, _, err := testutil.Exec(t, env, "backup", "describe", "backup-abc")
3630
require.NoError(t, err)
3731
assert.Contains(t, stdout, "backup-abc")
3832
assert.Contains(t, stdout, "my-backup")
3933
assert.Contains(t, stdout, "cluster-123")
4034
assert.Contains(t, stdout, "SUCCEEDED")
35+
36+
req, ok := env.BackupServer.GetBackupCalls.Last()
37+
require.True(t, ok)
38+
assert.Equal(t, "test-account-id", req.GetAccountId())
39+
assert.Equal(t, "backup-abc", req.GetBackupId())
4140
}
4241

4342
func TestBackupDescribe_JSONOutput(t *testing.T) {
4443
env := testutil.NewTestEnv(t)
45-
t.Cleanup(env.Cleanup)
4644

47-
env.BackupServer.GetBackupFunc = func(_ context.Context, _ *backupv1.GetBackupRequest) (*backupv1.GetBackupResponse, error) {
48-
return &backupv1.GetBackupResponse{
49-
Backup: &backupv1.Backup{Id: "backup-json", ClusterId: "cluster-xyz"},
50-
}, nil
51-
}
45+
env.BackupServer.GetBackupCalls.Returns(&backupv1.GetBackupResponse{
46+
Backup: &backupv1.Backup{Id: "backup-json", ClusterId: "cluster-xyz"},
47+
}, nil)
5248

5349
stdout, _, err := testutil.Exec(t, env, "backup", "describe", "backup-json", "--json")
5450
require.NoError(t, err)
@@ -64,11 +60,8 @@ func TestBackupDescribe_JSONOutput(t *testing.T) {
6460

6561
func TestBackupDescribe_APIError(t *testing.T) {
6662
env := testutil.NewTestEnv(t)
67-
t.Cleanup(env.Cleanup)
6863

69-
env.BackupServer.GetBackupFunc = func(_ context.Context, _ *backupv1.GetBackupRequest) (*backupv1.GetBackupResponse, error) {
70-
return nil, assert.AnError
71-
}
64+
env.BackupServer.GetBackupCalls.Returns(nil, assert.AnError)
7265

7366
_, _, err := testutil.Exec(t, env, "backup", "describe", "backup-abc")
7467
require.Error(t, err)

0 commit comments

Comments
 (0)