Skip to content

Commit dd357fa

Browse files
chore/golangci lint batch v4 (#65)
Add more linters and make code pass these checks.
1 parent a5edd53 commit dd357fa

37 files changed

Lines changed: 384 additions & 197 deletions

.golangci.yml

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -29,27 +29,27 @@ linters:
2929
- gocheckcompilerdirectives
3030
- gochecknoinits
3131
- gochecksumtype
32-
# - gocognit
33-
# - goconst
34-
# - gocritic
35-
# - gocyclo
36-
# - godot
37-
# - gomoddirectives
38-
# - gomodguard
39-
# - goprintffuncname
40-
# - gosec
41-
# - gosmopolitan
42-
# - govet
43-
# - grouper
44-
# - importas
45-
# - inamedparam
46-
# - ineffassign
47-
# - interfacebloat
48-
# - lll
49-
# - loggercheck
50-
# - maintidx
51-
# - makezero
52-
# - mirror
32+
- gocognit
33+
- goconst
34+
- gocritic
35+
- gocyclo
36+
- godot
37+
- gomoddirectives
38+
- gomodguard
39+
- goprintffuncname
40+
- gosec
41+
- gosmopolitan
42+
- govet
43+
- grouper
44+
- importas
45+
- inamedparam
46+
- ineffassign
47+
- interfacebloat
48+
- lll
49+
- loggercheck
50+
- maintidx
51+
- makezero
52+
- mirror
5353
# - misspell
5454
# - musttag
5555
# - nakedret
@@ -85,6 +85,8 @@ linters:
8585
# - wrapcheck
8686
- zerologlint
8787
settings:
88+
lll:
89+
line-length: 160
8890
errcheck:
8991
check-type-assertions: true
9092
verbose: true

cmd/migrate/main.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,15 @@ func main() {
5050

5151
config.LoadConfiguration()
5252

53-
appDb := db.NewDbConnection(config.Config)
54-
55-
defer appDb.Close()
56-
5753
if err := goose.SetDialect(dialect); err != nil {
5854
log.Fatal(err)
5955
}
6056

57+
appDb := db.NewDbConnection(config.Config)
58+
defer appDb.Close()
59+
6160
if err := goose.Run(command, appDb, *dir, args[1:]...); err != nil {
62-
log.Fatalf("migrate run: %v", err)
61+
log.Fatalf("migrate run: %v", err) // nolint:gocritic
6362
}
6463
}
6564

e2e-tests/browser_extension/browser_extension_2fa_request_test.go

Lines changed: 64 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,17 @@ func (s *BrowserExtensionTwoFactorAuthTestSuite) TestRequest2FaToken() {
2828

2929
var tokenRequest *e2e_tests.AuthTokenRequestResponse
3030
request2FaTokenPayload := []byte(`{"domain":"https://facebook.com/path/nested"}`)
31-
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token", request2FaTokenPayload, &tokenRequest)
31+
e2e_tests.DoAPISuccessPost(s.T(),
32+
"browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token",
33+
request2FaTokenPayload,
34+
&tokenRequest)
3235

3336
s.Equal(browserExtension.Id, tokenRequest.ExtensionId)
3437

3538
var tokenRequestById *e2e_tests.AuthTokenRequestResponse
36-
e2e_tests.DoAPISuccessGet(s.T(), "browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id, &tokenRequestById)
39+
e2e_tests.DoAPISuccessGet(s.T(),
40+
"browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id,
41+
&tokenRequestById)
3742
s.Equal(tokenRequest.Id, tokenRequestById.Id)
3843
s.Equal("https://facebook.com", tokenRequestById.Domain)
3944
}
@@ -42,13 +47,21 @@ func (s *BrowserExtensionTwoFactorAuthTestSuite) TestFindAll2FaRequestsForBrowse
4247
browserExtension := e2e_tests.CreateBrowserExtension(s.T(), "go-ext")
4348

4449
facebook2FaTokenRequest := []byte(`{"domain":"facebook.com"}`)
45-
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token", facebook2FaTokenRequest, nil)
50+
e2e_tests.DoAPISuccessPost(s.T(),
51+
"browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token",
52+
facebook2FaTokenRequest,
53+
nil)
4654

4755
google2FaTokenRequest := []byte(`{"domain":"google.com"}`)
48-
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token", google2FaTokenRequest, nil)
56+
e2e_tests.DoAPISuccessPost(s.T(),
57+
"browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token",
58+
google2FaTokenRequest,
59+
nil)
4960

5061
var tokenRequestsCollection []*e2e_tests.AuthTokenRequestResponse
51-
e2e_tests.DoAPISuccessGet(s.T(), "browser_extensions/"+browserExtension.Id+"/2fa_requests", &tokenRequestsCollection)
62+
e2e_tests.DoAPISuccessGet(s.T(),
63+
"browser_extensions/"+browserExtension.Id+"/2fa_requests",
64+
&tokenRequestsCollection)
5265

5366
s.Len(tokenRequestsCollection, 2)
5467
}
@@ -57,31 +70,51 @@ func (s *BrowserExtensionTwoFactorAuthTestSuite) TestClose2FaTokenRequest() {
5770
var tokenRequest *e2e_tests.AuthTokenRequestResponse
5871
browserExtension := e2e_tests.CreateBrowserExtension(s.T(), "go-ext")
5972
tokenRequestPayload := []byte(`{"domain":"facebook.com"}`)
60-
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token", tokenRequestPayload, &tokenRequest)
73+
e2e_tests.DoAPISuccessPost(s.T(),
74+
"browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token",
75+
tokenRequestPayload,
76+
&tokenRequest)
6177
closeTokenRequestPayload := []byte(`{"status":"completed"}`)
62-
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id+"/commands/close_2fa_request", closeTokenRequestPayload, nil)
78+
e2e_tests.DoAPISuccessPost(s.T(),
79+
"browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id+"/commands/close_2fa_request",
80+
closeTokenRequestPayload,
81+
nil)
6382

6483
var closedTokenRequest *e2e_tests.AuthTokenRequestResponse
65-
e2e_tests.DoAPISuccessGet(s.T(), "browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id, &closedTokenRequest)
84+
e2e_tests.DoAPISuccessGet(s.T(),
85+
"browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id,
86+
&closedTokenRequest)
6687
s.Equal("completed", closedTokenRequest.Status)
6788
}
6889

6990
func (s *BrowserExtensionTwoFactorAuthTestSuite) TestCloseNotExisting2FaTokenRequest() {
70-
notExistingTokenRequestId := uuid.New()
91+
notExistingTokenRequestId := uuid.New().String()
7192
browserExtension := e2e_tests.CreateBrowserExtension(s.T(), "go-ext")
93+
beID := browserExtension.Id
7294

7395
closeTokenRequestPayload := []byte(`{"status":"completed"}`)
74-
e2e_tests.DoAPIPostAndAssertCode(s.T(), 404, "browser_extensions/"+browserExtension.Id+"/2fa_requests/"+notExistingTokenRequestId.String()+"/commands/close_2fa_request", closeTokenRequestPayload, nil)
96+
uri := "browser_extensions/" + beID + "/2fa_requests/" + notExistingTokenRequestId + "/commands/close_2fa_request"
97+
e2e_tests.DoAPIPostAndAssertCode(s.T(),
98+
404,
99+
uri,
100+
closeTokenRequestPayload,
101+
nil)
75102
}
76103

77104
func (s *BrowserExtensionTwoFactorAuthTestSuite) TestDoNotReturnClosed2FaRequests() {
78105
var tokenRequest *e2e_tests.AuthTokenRequestResponse
79106
browserExtension := e2e_tests.CreateBrowserExtension(s.T(), "go-ext")
80107
tokenRequestPayload := []byte(`{"domain":"facebook.com"}`)
81-
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token", tokenRequestPayload, &tokenRequest)
108+
e2e_tests.DoAPISuccessPost(s.T(),
109+
"browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token",
110+
tokenRequestPayload,
111+
&tokenRequest)
82112

83113
closeTokenRequestPayload := []byte(`{"status":"completed"}`)
84-
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id+"/commands/close_2fa_request", closeTokenRequestPayload, nil)
114+
e2e_tests.DoAPISuccessPost(s.T(),
115+
"browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id+"/commands/close_2fa_request",
116+
closeTokenRequestPayload,
117+
nil)
85118

86119
var response []*e2e_tests.AuthTokenRequestResponse
87120
e2e_tests.DoAPISuccessGet(s.T(), "browser_extensions/"+browserExtension.Id+"/2fa_requests", &response)
@@ -92,10 +125,16 @@ func (s *BrowserExtensionTwoFactorAuthTestSuite) TestTerminate2FaRequest() {
92125
var tokenRequest *e2e_tests.AuthTokenRequestResponse
93126
browserExtension := e2e_tests.CreateBrowserExtension(s.T(), "go-ext")
94127
tokenRequestPayload := []byte(`{"domain":"facebook.com"}`)
95-
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token", tokenRequestPayload, &tokenRequest)
128+
e2e_tests.DoAPISuccessPost(s.T(),
129+
"browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token",
130+
tokenRequestPayload,
131+
&tokenRequest)
96132

97133
closeTokenRequestPayload := []byte(`{"status":"terminated"}`)
98-
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id+"/commands/close_2fa_request", closeTokenRequestPayload, nil)
134+
e2e_tests.DoAPISuccessPost(s.T(),
135+
"browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id+"/commands/close_2fa_request",
136+
closeTokenRequestPayload,
137+
nil)
99138

100139
var response *e2e_tests.AuthTokenRequestResponse
101140
e2e_tests.DoAPISuccessGet(s.T(), "browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id, &response)
@@ -109,12 +148,20 @@ func (s *BrowserExtensionTwoFactorAuthTestSuite) TestClose2FaRequest() {
109148

110149
var tokenRequest *e2e_tests.AuthTokenRequestResponse
111150
request2FaTokenPayload := []byte(`{"domain":"domain.com"}`)
112-
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token", request2FaTokenPayload, &tokenRequest)
151+
e2e_tests.DoAPISuccessPost(s.T(),
152+
"browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token",
153+
request2FaTokenPayload,
154+
&tokenRequest)
113155

114156
closeTokenRequestPayload := []byte(`{"status":"completed"}`)
115-
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id+"/commands/close_2fa_request", closeTokenRequestPayload, nil)
157+
e2e_tests.DoAPISuccessPost(s.T(),
158+
"browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id+"/commands/close_2fa_request",
159+
closeTokenRequestPayload,
160+
nil)
116161

117162
var closedTokenRequest *e2e_tests.AuthTokenRequestResponse
118-
e2e_tests.DoAPISuccessGet(s.T(), "browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id, &closedTokenRequest)
163+
e2e_tests.DoAPISuccessGet(s.T(),
164+
"browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id,
165+
&closedTokenRequest)
119166
s.Equal("completed", closedTokenRequest.Status)
120167
}

e2e-tests/browser_extension/browser_extension_2fa_test.go

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,21 @@ func (s *TwoFactorAuthTestSuite) TestBrowserExtensionAuthFullFlow() {
4141

4242
tokenRequest := e2e_tests.Request2FaToken(s.T(), "facebook.com", browserExtension.Id)
4343

44-
extensionTokenRequestWebsocketListener := e2e_tests.NewWebsocketTestListener("browser_extensions/" + browserExtension.Id + "/2fa_requests/" + tokenRequest.Id)
44+
extensionTokenRequestWebsocketListener := e2e_tests.NewWebsocketTestListener(
45+
"browser_extensions/" + browserExtension.Id + "/2fa_requests/" + tokenRequest.Id)
4546
extensionTokenRequestWebsocketConnection := extensionTokenRequestWebsocketListener.StartListening()
4647
defer extensionTokenRequestWebsocketConnection.Close()
4748

48-
e2e_tests.Send2FaTokenToExtension(s.T(), browserExtension.Id, device.Id, tokenRequest.Id, "2fa-token")
49+
e2e_tests.Send2FaTokenToExtension(s.T(),
50+
browserExtension.Id,
51+
device.Id,
52+
tokenRequest.Id,
53+
"2fa-token")
4954

50-
expected2FaTokenWebsocket := createBrowserExtensionReceived2FaTokenMessage(s.T(), browserExtension.Id, device.Id, tokenRequest.Id)
55+
expected2FaTokenWebsocket := createBrowserExtensionReceived2FaTokenMessage(s.T(),
56+
browserExtension.Id,
57+
device.Id,
58+
tokenRequest.Id)
5159
extensionTokenRequestWebsocketListener.AssertMessageHasBeenReceived(s.T(), expected2FaTokenWebsocket)
5260
}
5361

@@ -76,7 +84,11 @@ func createBrowserExtensionReceived2FaTokenMessage(t *testing.T, extensionId, de
7684
return string(message)
7785
}
7886

79-
func createPairingSuccessWebsocketMessage(t *testing.T, browserExtension *e2e_tests.BrowserExtensionResponse, device *e2e_tests.DeviceResponse, devicePubKey string) string {
87+
func createPairingSuccessWebsocketMessage(
88+
t *testing.T,
89+
browserExtension *e2e_tests.BrowserExtensionResponse,
90+
device *e2e_tests.DeviceResponse,
91+
devicePubKey string) string {
8092
t.Helper()
8193

8294
expectedPairingWebsocketMessageRaw := &struct {
@@ -99,7 +111,10 @@ func createPairingSuccessWebsocketMessage(t *testing.T, browserExtension *e2e_te
99111
return string(message)
100112
}
101113

102-
func assertBrowserExtensionHasPairedDevice(t *testing.T, browserExtension *e2e_tests.BrowserExtensionResponse, device *e2e_tests.DeviceResponse) {
114+
func assertBrowserExtensionHasPairedDevice(
115+
t *testing.T,
116+
browserExtension *e2e_tests.BrowserExtensionResponse,
117+
device *e2e_tests.DeviceResponse) {
103118
t.Helper()
104119
var browserExtensionDevices []*e2e_tests.DeviceResponse
105120
e2e_tests.DoAPISuccessGet(t, "browser_extensions/"+browserExtension.Id+"/devices", &browserExtensionDevices)
@@ -108,7 +123,10 @@ func assertBrowserExtensionHasPairedDevice(t *testing.T, browserExtension *e2e_t
108123
assert.Equal(t, device.Id, browserExtensionDevices[0].Id)
109124
}
110125

111-
func assertDeviceHasPairedExtension(t *testing.T, device *e2e_tests.DeviceResponse, browserExtension *e2e_tests.BrowserExtensionResponse) {
126+
func assertDeviceHasPairedExtension(
127+
t *testing.T,
128+
device *e2e_tests.DeviceResponse,
129+
browserExtension *e2e_tests.BrowserExtensionResponse) {
112130
t.Helper()
113131
var deviceBrowserExtensions []*e2e_tests.BrowserExtensionResponse
114132
e2e_tests.DoAPISuccessGet(t, "mobile/devices/"+device.Id+"/browser_extensions", &deviceBrowserExtensions)

e2e-tests/browser_extension/browser_extension_pairing_test.go

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,11 @@ func (s *BrowserExtensionPairingTestSuite) TestRemoveBrowserExtensionPairedDevic
9595
e2e_tests.PairDeviceWithBrowserExtension(s.T(), devicePubKey, browserExt, device)
9696

9797
e2e_tests.DoAPISuccessDelete(s.T(), "/browser_extensions/"+browserExt.Id+"/devices/"+device.Id)
98-
response := e2e_tests.DoAPIRequest(s.T(), "/browser_extensions/"+browserExt.Id+"/devices/"+device.Id, http.MethodDelete, nil /*payload*/, nil /*resp*/)
98+
response := e2e_tests.DoAPIRequest(s.T(),
99+
"/browser_extensions/"+browserExt.Id+"/devices/"+device.Id,
100+
http.MethodDelete,
101+
nil, /*payload*/
102+
nil /*resp*/)
99103

100104
s.Equal(404, response.StatusCode)
101105
}
@@ -160,7 +164,9 @@ func (s *BrowserExtensionPairingTestSuite) TestGetPairedDevicesByNotExistingExte
160164

161165
notExistingExtensionId := uuid.New()
162166
var firstExtensionDevices []*e2e_tests.ExtensionPairedDeviceResponse
163-
e2e_tests.DoAPISuccessGet(s.T(), "/browser_extensions/"+notExistingExtensionId.String()+"/devices/", &firstExtensionDevices)
167+
e2e_tests.DoAPISuccessGet(s.T(),
168+
"/browser_extensions/"+notExistingExtensionId.String()+"/devices/",
169+
&firstExtensionDevices)
164170
s.Empty(firstExtensionDevices)
165171
}
166172

@@ -197,10 +203,16 @@ func (s *BrowserExtensionPairingTestSuite) TestCannotPairSameDeviceAndExtensionT
197203
payloadJson, err := json.Marshal(payload)
198204
s.Require().NoError(err)
199205

200-
e2e_tests.DoAPIPostAndAssertCode(s.T(), 409, "/mobile/devices/"+device.Id+"/browser_extensions", payloadJson, pairingResult)
206+
e2e_tests.DoAPIPostAndAssertCode(s.T(),
207+
409,
208+
"/mobile/devices/"+device.Id+"/browser_extensions",
209+
payloadJson,
210+
pairingResult)
201211
}
202212

203-
func getExtensionPairedDevices(t *testing.T, browserExt *e2e_tests.BrowserExtensionResponse) []*e2e_tests.ExtensionPairedDeviceResponse {
213+
func getExtensionPairedDevices(
214+
t *testing.T,
215+
browserExt *e2e_tests.BrowserExtensionResponse) []*e2e_tests.ExtensionPairedDeviceResponse {
204216
t.Helper()
205217
var extensionDevices []*e2e_tests.ExtensionPairedDeviceResponse
206218
e2e_tests.DoAPISuccessGet(t, "/browser_extensions/"+browserExt.Id+"/devices/", &extensionDevices)

e2e-tests/browser_extension/browser_extension_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,10 @@ func createBrowserExtension(t *testing.T, name string) *http.Response {
9191

9292
pubKey := crypto.PublicKeyToBase64(keyPair.PublicKey)
9393

94-
payload := []byte(fmt.Sprintf(`{"name":"%s","browser_name":"go-browser","browser_version":"0.1","public_key":"%s"}`, name, pubKey))
94+
payload := []byte(fmt.Sprintf(
95+
`{"name":"%s","browser_name":"go-browser","browser_version":"0.1","public_key":"%s"}`,
96+
name,
97+
pubKey))
9598

9699
return e2e_tests.DoAPIRequest(t, "/browser_extensions", http.MethodPost, payload, nil)
97100
}

e2e-tests/helpers.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,10 @@ func CreateBrowserExtension(t *testing.T, name string) *BrowserExtensionResponse
3030

3131
pubKey := crypto.PublicKeyToBase64(keyPair.PublicKey)
3232

33-
payload := []byte(fmt.Sprintf(`{"name":"%s","browser_name":"go-browser","browser_version":"0.1","public_key":"%s"}`, name, pubKey))
33+
payload := []byte(
34+
fmt.Sprintf(
35+
`{"name":"%s","browser_name":"go-browser","browser_version":"0.1","public_key":"%s"}`,
36+
name, pubKey))
3437

3538
browserExt := new(BrowserExtensionResponse)
3639

@@ -42,7 +45,9 @@ func CreateBrowserExtension(t *testing.T, name string) *BrowserExtensionResponse
4245
func CreateBrowserExtensionWithPublicKey(t *testing.T, name, publicKey string) *BrowserExtensionResponse {
4346
t.Helper()
4447

45-
payload := []byte(fmt.Sprintf(`{"name":"%s","browser_name":"go-browser","browser_version":"0.1","public_key":"%s"}`, name, publicKey))
48+
payload := []byte(
49+
fmt.Sprintf(`{"name":"%s","browser_name":"go-browser","browser_version":"0.1","public_key":"%s"}`,
50+
name, publicKey))
4651

4752
browserExt := new(BrowserExtensionResponse)
4853

@@ -51,7 +56,11 @@ func CreateBrowserExtensionWithPublicKey(t *testing.T, name, publicKey string) *
5156
return browserExt
5257
}
5358

54-
func PairDeviceWithBrowserExtension(t *testing.T, devicePubKey string, browserExtension *BrowserExtensionResponse, device *DeviceResponse) *PairingResultResponse {
59+
func PairDeviceWithBrowserExtension(
60+
t *testing.T,
61+
devicePubKey string,
62+
browserExtension *BrowserExtensionResponse,
63+
device *DeviceResponse) *PairingResultResponse {
5564
t.Helper()
5665

5766
payload := struct {

e2e-tests/icons/icons_collection_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,10 @@ func (s *IconsCollectionsTestSuite) TestUpdateIconsCollection() {
6565
`)
6666

6767
var updatedIconsCollection *iconsCollectionResponse
68-
e2e_tests.DoAdminSuccessPut(s.T(), "mobile/icons/collections/"+iconsCollection.Id, updatePayload, &updatedIconsCollection)
68+
e2e_tests.DoAdminSuccessPut(s.T(),
69+
"mobile/icons/collections/"+iconsCollection.Id,
70+
updatePayload,
71+
&updatedIconsCollection)
6972

7073
s.Equal("meta", updatedIconsCollection.Name)
7174
s.Equal([]string{"icon-1", "icon-2"}, updatedIconsCollection.Icons)

0 commit comments

Comments
 (0)