Skip to content

Commit 5012135

Browse files
committed
refactor(api): remove deprecated Namespace#DevicesCount
1 parent c819c60 commit 5012135

File tree

12 files changed

+110
-285
lines changed

12 files changed

+110
-285
lines changed

api/services/device.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ func (s *service) ListDevices(ctx context.Context, req *requests.DeviceList) ([]
5151
}
5252

5353
if req.TenantID != "" {
54-
ns, err := s.store.NamespaceGet(ctx, req.TenantID, s.store.Options().CountAcceptedDevices())
54+
ns, err := s.store.NamespaceGet(ctx, req.TenantID)
5555
if err != nil {
5656
return nil, 0, NewErrNamespaceNotFound(req.TenantID, err)
5757
}
@@ -226,7 +226,7 @@ func (s *service) OfflineDevice(ctx context.Context, uid models.UID) error {
226226

227227
// UpdateDeviceStatus updates the device status.
228228
func (s *service) UpdateDeviceStatus(ctx context.Context, tenant string, uid models.UID, status models.DeviceStatus) error {
229-
namespace, err := s.store.NamespaceGet(ctx, tenant, s.store.Options().CountAcceptedDevices())
229+
namespace, err := s.store.NamespaceGet(ctx, tenant)
230230
if err != nil {
231231
return NewErrNamespaceNotFound(tenant, err)
232232
}

api/services/device_test.go

Lines changed: 79 additions & 145 deletions
Large diffs are not rendered by default.

api/services/member.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ func (s *service) AddNamespaceMember(ctx context.Context, req *requests.Namespac
106106
}
107107
}
108108

109-
return s.store.NamespaceGet(ctx, req.TenantID, s.store.Options().CountAcceptedDevices(), s.store.Options().EnrichMembersData())
109+
return s.store.NamespaceGet(ctx, req.TenantID, s.store.Options().EnrichMembersData())
110110
}
111111

112112
// addMember returns a transaction callback that adds a member and sends an invite if the instance is cloud.
@@ -229,7 +229,7 @@ func (s *service) RemoveNamespaceMember(ctx context.Context, req *requests.Names
229229
Error("failed to uncache the token")
230230
}
231231

232-
return s.store.NamespaceGet(ctx, req.TenantID, s.store.Options().CountAcceptedDevices(), s.store.Options().EnrichMembersData())
232+
return s.store.NamespaceGet(ctx, req.TenantID, s.store.Options().EnrichMembersData())
233233
}
234234

235235
func (s *service) LeaveNamespace(ctx context.Context, req *requests.LeaveNamespace) (*models.UserAuthResponse, error) {

api/services/member_test.go

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -462,10 +462,9 @@ func TestAddNamespaceMember(t *testing.T) {
462462
On("WithTransaction", ctx, mock.Anything).
463463
Return(nil).
464464
Once()
465-
queryOptionsMock.On("CountAcceptedDevices").Return(nil).Once()
466465
queryOptionsMock.On("EnrichMembersData").Return(nil).Once()
467466
storeMock.
468-
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000", mock.AnythingOfType("store.NamespaceQueryOption"), mock.AnythingOfType("store.NamespaceQueryOption")).
467+
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000", mock.AnythingOfType("store.NamespaceQueryOption")).
469468
Return(
470469
&models.Namespace{
471470
TenantID: "00000000-0000-4000-0000-000000000000",
@@ -557,10 +556,9 @@ func TestAddNamespaceMember(t *testing.T) {
557556
On("WithTransaction", ctx, mock.Anything).
558557
Return(nil).
559558
Once()
560-
queryOptionsMock.On("CountAcceptedDevices").Return(nil).Once()
561559
queryOptionsMock.On("EnrichMembersData").Return(nil).Once()
562560
storeMock.
563-
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000", mock.AnythingOfType("store.NamespaceQueryOption"), mock.AnythingOfType("store.NamespaceQueryOption")).
561+
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000", mock.AnythingOfType("store.NamespaceQueryOption")).
564562
Return(
565563
&models.Namespace{
566564
TenantID: "00000000-0000-4000-0000-000000000000",
@@ -704,10 +702,9 @@ func TestAddNamespaceMember(t *testing.T) {
704702
On("WithTransaction", ctx, mock.Anything).
705703
Return(nil).
706704
Once()
707-
queryOptionsMock.On("CountAcceptedDevices").Return(nil).Once()
708705
queryOptionsMock.On("EnrichMembersData").Return(nil).Once()
709706
storeMock.
710-
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000", mock.AnythingOfType("store.NamespaceQueryOption"), mock.AnythingOfType("store.NamespaceQueryOption")).
707+
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000", mock.AnythingOfType("store.NamespaceQueryOption")).
711708
Return(&models.Namespace{
712709
TenantID: "00000000-0000-4000-0000-000000000000",
713710
Name: "namespace",
@@ -1512,10 +1509,9 @@ func TestRemoveNamespaceMember(t *testing.T) {
15121509
On("NamespaceRemoveMember", ctx, "00000000-0000-4000-0000-000000000000", "000000000000000000000001").
15131510
Return(nil).
15141511
Once()
1515-
queryOptionsMock.On("CountAcceptedDevices").Return(nil).Once()
15161512
queryOptionsMock.On("EnrichMembersData").Return(nil).Once()
15171513
storeMock.
1518-
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000", mock.AnythingOfType("store.NamespaceQueryOption"), mock.AnythingOfType("store.NamespaceQueryOption")).
1514+
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000", mock.AnythingOfType("store.NamespaceQueryOption")).
15191515
Return(&models.Namespace{
15201516
TenantID: "00000000-0000-4000-0000-000000000000",
15211517
Name: "namespace",

api/services/namespace.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ func (s *service) CreateNamespace(ctx context.Context, req *requests.NamespaceCr
101101
}
102102

103103
func (s *service) ListNamespaces(ctx context.Context, req *requests.NamespaceList) ([]models.Namespace, int, error) {
104-
namespaces, count, err := s.store.NamespaceList(ctx, req.Paginator, req.Filters, s.store.Options().CountAcceptedDevices(), s.store.Options().EnrichMembersData())
104+
namespaces, count, err := s.store.NamespaceList(ctx, req.Paginator, req.Filters, s.store.Options().EnrichMembersData())
105105
if err != nil {
106106
return nil, 0, NewErrNamespaceList(err)
107107
}
@@ -115,7 +115,7 @@ func (s *service) ListNamespaces(ctx context.Context, req *requests.NamespaceLis
115115
//
116116
// GetNamespace returns a models.Namespace and an error. When error is not nil, the models.Namespace is nil.
117117
func (s *service) GetNamespace(ctx context.Context, tenantID string) (*models.Namespace, error) {
118-
namespace, err := s.store.NamespaceGet(ctx, tenantID, s.store.Options().CountAcceptedDevices(), s.store.Options().EnrichMembersData())
118+
namespace, err := s.store.NamespaceGet(ctx, tenantID, s.store.Options().EnrichMembersData())
119119
if err != nil || namespace == nil {
120120
return nil, NewErrNamespaceNotFound(tenantID, err)
121121
}
@@ -130,7 +130,7 @@ func (s *service) GetNamespace(ctx context.Context, tenantID string) (*models.Na
130130
// When cloud and billing is enabled, it will try to delete the namespace's billing information from the billing
131131
// service if it exists.
132132
func (s *service) DeleteNamespace(ctx context.Context, tenantID string) error {
133-
ns, err := s.store.NamespaceGet(ctx, tenantID, s.store.Options().CountAcceptedDevices())
133+
ns, err := s.store.NamespaceGet(ctx, tenantID)
134134
if err != nil {
135135
return NewErrNamespaceNotFound(tenantID, err)
136136
}
@@ -164,7 +164,7 @@ func (s *service) EditNamespace(ctx context.Context, req *requests.NamespaceEdit
164164
}
165165
}
166166

167-
return s.store.NamespaceGet(ctx, req.Tenant, s.store.Options().CountAcceptedDevices(), s.store.Options().EnrichMembersData())
167+
return s.store.NamespaceGet(ctx, req.Tenant, s.store.Options().EnrichMembersData())
168168
}
169169

170170
// EditSessionRecordStatus defines if the sessions will be recorded.

api/services/namespace_test.go

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,9 @@ func TestListNamespaces(t *testing.T) {
4949
},
5050
ctx: ctx,
5151
requiredMocks: func() {
52-
queryOptionsMock.On("CountAcceptedDevices").Return(nil).Once()
5352
queryOptionsMock.On("EnrichMembersData").Return(nil).Once()
5453
storeMock.
55-
On("NamespaceList", ctx, query.Paginator{Page: 1, PerPage: 10}, query.Filters{}, mock.AnythingOfType("store.NamespaceQueryOption"), mock.AnythingOfType("store.NamespaceQueryOption")).
54+
On("NamespaceList", ctx, query.Paginator{Page: 1, PerPage: 10}, query.Filters{}, mock.AnythingOfType("store.NamespaceQueryOption")).
5655
Return(nil, 0, errors.New("error")).
5756
Once()
5857
},
@@ -70,10 +69,9 @@ func TestListNamespaces(t *testing.T) {
7069
},
7170
ctx: ctx,
7271
requiredMocks: func() {
73-
queryOptionsMock.On("CountAcceptedDevices").Return(nil).Once()
7472
queryOptionsMock.On("EnrichMembersData").Return(nil).Once()
7573
storeMock.
76-
On("NamespaceList", ctx, query.Paginator{Page: 1, PerPage: 10}, query.Filters{}, mock.Anything, mock.Anything).
74+
On("NamespaceList", ctx, query.Paginator{Page: 1, PerPage: 10}, query.Filters{}, mock.Anything).
7775
Return(
7876
[]models.Namespace{
7977
{
@@ -225,10 +223,9 @@ func TestGetNamespace(t *testing.T) {
225223
description: "fails when could not get the namespace",
226224
tenantID: "00000000-0000-4000-0000-000000000000",
227225
requiredMocks: func() {
228-
queryOptionsMock.On("CountAcceptedDevices").Return(nil).Once()
229226
queryOptionsMock.On("EnrichMembersData").Return(nil).Once()
230227
storeMock.
231-
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000", mock.AnythingOfType("store.NamespaceQueryOption"), mock.AnythingOfType("store.NamespaceQueryOption")).
228+
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000", mock.AnythingOfType("store.NamespaceQueryOption")).
232229
Return(nil, errors.New("error")).
233230
Once()
234231
},
@@ -241,10 +238,9 @@ func TestGetNamespace(t *testing.T) {
241238
description: "succeeds - team",
242239
tenantID: "00000000-0000-4000-0000-000000000000",
243240
requiredMocks: func() {
244-
queryOptionsMock.On("CountAcceptedDevices").Return(nil).Once()
245241
queryOptionsMock.On("EnrichMembersData").Return(nil).Once()
246242
storeMock.
247-
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000", mock.AnythingOfType("store.NamespaceQueryOption"), mock.AnythingOfType("store.NamespaceQueryOption")).
243+
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000", mock.AnythingOfType("store.NamespaceQueryOption")).
248244
Return(
249245
&models.Namespace{
250246
Name: "group1",
@@ -284,10 +280,9 @@ func TestGetNamespace(t *testing.T) {
284280
description: "succeeds - personal (with have changed to team temporarily)",
285281
tenantID: "00000000-0000-4000-0000-000000000000",
286282
requiredMocks: func() {
287-
queryOptionsMock.On("CountAcceptedDevices").Return(nil).Once()
288283
queryOptionsMock.On("EnrichMembersData").Return(nil).Once()
289284
storeMock.
290-
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000", mock.AnythingOfType("store.NamespaceQueryOption"), mock.AnythingOfType("store.NamespaceQueryOption")).
285+
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000", mock.AnythingOfType("store.NamespaceQueryOption")).
291286
Return(
292287
&models.Namespace{
293288
Name: "group1",
@@ -1124,10 +1119,9 @@ func TestEditNamespace(t *testing.T) {
11241119
On("NamespaceEdit", ctx, "xxxxx", &models.NamespaceChanges{Name: "newname"}).
11251120
Return(nil).
11261121
Once()
1127-
queryOptionsMock.On("CountAcceptedDevices").Return(nil).Once()
11281122
queryOptionsMock.On("EnrichMembersData").Return(nil).Once()
11291123
storeMock.
1130-
On("NamespaceGet", ctx, "xxxxx", mock.AnythingOfType("store.NamespaceQueryOption"), mock.AnythingOfType("store.NamespaceQueryOption")).
1124+
On("NamespaceGet", ctx, "xxxxx", mock.AnythingOfType("store.NamespaceQueryOption")).
11311125
Return(
11321126
&models.Namespace{
11331127
TenantID: "xxxxx",
@@ -1153,10 +1147,9 @@ func TestEditNamespace(t *testing.T) {
11531147
On("NamespaceEdit", ctx, "xxxxx", &models.NamespaceChanges{Name: "newname"}).
11541148
Return(nil).
11551149
Once()
1156-
queryOptionsMock.On("CountAcceptedDevices").Return(nil).Once()
11571150
queryOptionsMock.On("EnrichMembersData").Return(nil).Once()
11581151
storeMock.
1159-
On("NamespaceGet", ctx, "xxxxx", mock.AnythingOfType("store.NamespaceQueryOption"), mock.AnythingOfType("store.NamespaceQueryOption")).
1152+
On("NamespaceGet", ctx, "xxxxx", mock.AnythingOfType("store.NamespaceQueryOption")).
11601153
Return(
11611154
&models.Namespace{
11621155
TenantID: "xxxxx",
@@ -1195,8 +1188,6 @@ func TestEditNamespace(t *testing.T) {
11951188

11961189
func TestDeleteNamespace(t *testing.T) {
11971190
storeMock := new(storemock.Store)
1198-
queryOptionsMock := new(storemock.QueryOptions)
1199-
storeMock.On("Options").Return(queryOptionsMock)
12001191

12011192
ctx := context.TODO()
12021193

@@ -1210,9 +1201,8 @@ func TestDeleteNamespace(t *testing.T) {
12101201
description: "fails when namespace does not exist",
12111202
tenantID: "00000000-0000-4000-0000-000000000000",
12121203
requiredMocks: func() {
1213-
queryOptionsMock.On("CountAcceptedDevices").Return(nil).Once()
12141204
storeMock.
1215-
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000", mock.AnythingOfType("store.NamespaceQueryOption")).
1205+
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000").
12161206
Return(nil, errors.New("error")).
12171207
Once()
12181208
},
@@ -1222,9 +1212,8 @@ func TestDeleteNamespace(t *testing.T) {
12221212
description: "fails when store delete fails",
12231213
tenantID: "00000000-0000-4000-0000-000000000000",
12241214
requiredMocks: func() {
1225-
queryOptionsMock.On("CountAcceptedDevices").Return(nil).Once()
12261215
storeMock.
1227-
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000", mock.AnythingOfType("store.NamespaceQueryOption")).
1216+
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000").
12281217
Return(&models.Namespace{TenantID: "00000000-0000-4000-0000-000000000000"}, nil).
12291218
Once()
12301219
envMock.
@@ -1246,9 +1235,8 @@ func TestDeleteNamespace(t *testing.T) {
12461235
description: "succeeds",
12471236
tenantID: "00000000-0000-4000-0000-000000000000",
12481237
requiredMocks: func() {
1249-
queryOptionsMock.On("CountAcceptedDevices").Return(nil).Once()
12501238
storeMock.
1251-
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000", mock.AnythingOfType("store.NamespaceQueryOption")).
1239+
On("NamespaceGet", ctx, "00000000-0000-4000-0000-000000000000").
12521240
Return(&models.Namespace{TenantID: "00000000-0000-4000-0000-000000000000"}, nil).
12531241
Once()
12541242
envMock.

api/store/mocks/query_options.go

Lines changed: 0 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/store/mongo/namespace_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -207,9 +207,8 @@ func TestNamespaceGet(t *testing.T) {
207207
Status: models.MemberStatusPending,
208208
},
209209
},
210-
MaxDevices: -1,
211-
Settings: &models.NamespaceSettings{SessionRecord: true},
212-
DevicesCount: 0,
210+
MaxDevices: -1,
211+
Settings: &models.NamespaceSettings{SessionRecord: true},
213212
},
214213
err: nil,
215214
},

api/store/mongo/query-options.go

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -42,24 +42,6 @@ func (*queryOptions) WithDeviceStatus(status models.DeviceStatus) store.QueryOpt
4242
}
4343
}
4444

45-
func (*queryOptions) CountAcceptedDevices() store.NamespaceQueryOption {
46-
return func(ctx context.Context, ns *models.Namespace) error {
47-
db, ok := ctx.Value("db").(*mongo.Database)
48-
if !ok {
49-
return errors.New("db not found in context")
50-
}
51-
52-
countDevice, err := db.Collection("devices").CountDocuments(ctx, bson.M{"tenant_id": ns.TenantID, "status": "accepted"})
53-
if err != nil {
54-
return FromMongoError(err)
55-
}
56-
57-
ns.DevicesCount = int(countDevice)
58-
59-
return nil
60-
}
61-
}
62-
6345
func (*queryOptions) EnrichMembersData() store.NamespaceQueryOption {
6446
return func(ctx context.Context, ns *models.Namespace) error {
6547
db, ok := ctx.Value("db").(*mongo.Database)

api/store/mongo/query-options_test.go

Lines changed: 0 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -10,55 +10,6 @@ import (
1010
"github.com/stretchr/testify/require"
1111
)
1212

13-
func TestCountAcceptedDevices(t *testing.T) {
14-
type Expected struct {
15-
count int
16-
err error
17-
}
18-
19-
cases := []struct {
20-
description string
21-
tenant string
22-
ctx func() context.Context
23-
fixtures []string
24-
expected Expected
25-
}{
26-
{
27-
description: "fails when context does not have db in values",
28-
tenant: "00000000-0000-4000-0000-000000000000",
29-
ctx: func() context.Context {
30-
return context.Background()
31-
},
32-
fixtures: []string{fixtureNamespaces, fixtureDevices},
33-
expected: Expected{count: 0, err: errors.New("db not found in context")},
34-
},
35-
{
36-
description: "succeeds",
37-
tenant: "00000000-0000-4000-0000-000000000000",
38-
ctx: func() context.Context {
39-
return context.WithValue(context.Background(), "db", db) //nolint:revive
40-
},
41-
fixtures: []string{fixtureNamespaces, fixtureDevices},
42-
expected: Expected{count: 3, err: nil},
43-
},
44-
}
45-
46-
for _, tc := range cases {
47-
t.Run(tc.description, func(tt *testing.T) {
48-
ctx := tc.ctx()
49-
50-
require.NoError(tt, srv.Apply(tc.fixtures...))
51-
tt.Cleanup(func() {
52-
require.NoError(tt, srv.Reset())
53-
})
54-
55-
ns := &models.Namespace{TenantID: "00000000-0000-4000-0000-000000000000"}
56-
err := s.Options().CountAcceptedDevices()(ctx, ns)
57-
require.Equal(tt, tc.expected, Expected{ns.DevicesCount, err})
58-
})
59-
}
60-
}
61-
6213
func TestEnrichMembersData(t *testing.T) {
6314
type Expected struct {
6415
emails []string

0 commit comments

Comments
 (0)