Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 23 additions & 21 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,27 +29,27 @@ linters:
- gocheckcompilerdirectives
- gochecknoinits
- gochecksumtype
# - gocognit
# - goconst
# - gocritic
# - gocyclo
# - godot
# - gomoddirectives
# - gomodguard
# - goprintffuncname
# - gosec
# - gosmopolitan
# - govet
# - grouper
# - importas
# - inamedparam
# - ineffassign
# - interfacebloat
# - lll
# - loggercheck
# - maintidx
# - makezero
# - mirror
- gocognit
- goconst
- gocritic
- gocyclo
- godot
- gomoddirectives
- gomodguard
- goprintffuncname
- gosec
- gosmopolitan
- govet
- grouper
- importas
- inamedparam
- ineffassign
- interfacebloat
- lll
- loggercheck
- maintidx
- makezero
- mirror
# - misspell
# - musttag
# - nakedret
Expand Down Expand Up @@ -85,6 +85,8 @@ linters:
# - wrapcheck
- zerologlint
settings:
lll:
line-length: 160
errcheck:
check-type-assertions: true
verbose: true
Expand Down
9 changes: 4 additions & 5 deletions cmd/migrate/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,16 +50,15 @@ func main() {

config.LoadConfiguration()

appDb := db.NewDbConnection(config.Config)

defer appDb.Close()

if err := goose.SetDialect(dialect); err != nil {
log.Fatal(err)
}

appDb := db.NewDbConnection(config.Config)
defer appDb.Close()

if err := goose.Run(command, appDb, *dir, args[1:]...); err != nil {
log.Fatalf("migrate run: %v", err)
log.Fatalf("migrate run: %v", err) // nolint:gocritic
Comment thread
krzysztofdrys marked this conversation as resolved.
}
}

Expand Down
81 changes: 64 additions & 17 deletions e2e-tests/browser_extension/browser_extension_2fa_request_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,17 @@ func (s *BrowserExtensionTwoFactorAuthTestSuite) TestRequest2FaToken() {

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

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

var tokenRequestById *e2e_tests.AuthTokenRequestResponse
e2e_tests.DoAPISuccessGet(s.T(), "browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id, &tokenRequestById)
e2e_tests.DoAPISuccessGet(s.T(),
"browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id,
&tokenRequestById)
s.Equal(tokenRequest.Id, tokenRequestById.Id)
s.Equal("https://facebook.com", tokenRequestById.Domain)
}
Expand All @@ -42,13 +47,21 @@ func (s *BrowserExtensionTwoFactorAuthTestSuite) TestFindAll2FaRequestsForBrowse
browserExtension := e2e_tests.CreateBrowserExtension(s.T(), "go-ext")

facebook2FaTokenRequest := []byte(`{"domain":"facebook.com"}`)
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token", facebook2FaTokenRequest, nil)
e2e_tests.DoAPISuccessPost(s.T(),
"browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token",
facebook2FaTokenRequest,
nil)

google2FaTokenRequest := []byte(`{"domain":"google.com"}`)
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token", google2FaTokenRequest, nil)
e2e_tests.DoAPISuccessPost(s.T(),
"browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token",
google2FaTokenRequest,
nil)

var tokenRequestsCollection []*e2e_tests.AuthTokenRequestResponse
e2e_tests.DoAPISuccessGet(s.T(), "browser_extensions/"+browserExtension.Id+"/2fa_requests", &tokenRequestsCollection)
e2e_tests.DoAPISuccessGet(s.T(),
"browser_extensions/"+browserExtension.Id+"/2fa_requests",
&tokenRequestsCollection)

s.Len(tokenRequestsCollection, 2)
}
Expand All @@ -57,31 +70,51 @@ func (s *BrowserExtensionTwoFactorAuthTestSuite) TestClose2FaTokenRequest() {
var tokenRequest *e2e_tests.AuthTokenRequestResponse
browserExtension := e2e_tests.CreateBrowserExtension(s.T(), "go-ext")
tokenRequestPayload := []byte(`{"domain":"facebook.com"}`)
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token", tokenRequestPayload, &tokenRequest)
e2e_tests.DoAPISuccessPost(s.T(),
"browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token",
tokenRequestPayload,
&tokenRequest)
closeTokenRequestPayload := []byte(`{"status":"completed"}`)
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id+"/commands/close_2fa_request", closeTokenRequestPayload, nil)
e2e_tests.DoAPISuccessPost(s.T(),
"browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id+"/commands/close_2fa_request",
closeTokenRequestPayload,
nil)

var closedTokenRequest *e2e_tests.AuthTokenRequestResponse
e2e_tests.DoAPISuccessGet(s.T(), "browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id, &closedTokenRequest)
e2e_tests.DoAPISuccessGet(s.T(),
"browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id,
&closedTokenRequest)
s.Equal("completed", closedTokenRequest.Status)
}

func (s *BrowserExtensionTwoFactorAuthTestSuite) TestCloseNotExisting2FaTokenRequest() {
notExistingTokenRequestId := uuid.New()
notExistingTokenRequestId := uuid.New().String()
browserExtension := e2e_tests.CreateBrowserExtension(s.T(), "go-ext")
beID := browserExtension.Id

closeTokenRequestPayload := []byte(`{"status":"completed"}`)
e2e_tests.DoAPIPostAndAssertCode(s.T(), 404, "browser_extensions/"+browserExtension.Id+"/2fa_requests/"+notExistingTokenRequestId.String()+"/commands/close_2fa_request", closeTokenRequestPayload, nil)
uri := "browser_extensions/" + beID + "/2fa_requests/" + notExistingTokenRequestId + "/commands/close_2fa_request"
Comment thread
krzysztofdrys marked this conversation as resolved.
e2e_tests.DoAPIPostAndAssertCode(s.T(),
404,
uri,
closeTokenRequestPayload,
nil)
}

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

closeTokenRequestPayload := []byte(`{"status":"completed"}`)
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id+"/commands/close_2fa_request", closeTokenRequestPayload, nil)
e2e_tests.DoAPISuccessPost(s.T(),
"browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id+"/commands/close_2fa_request",
closeTokenRequestPayload,
nil)

var response []*e2e_tests.AuthTokenRequestResponse
e2e_tests.DoAPISuccessGet(s.T(), "browser_extensions/"+browserExtension.Id+"/2fa_requests", &response)
Expand All @@ -92,10 +125,16 @@ func (s *BrowserExtensionTwoFactorAuthTestSuite) TestTerminate2FaRequest() {
var tokenRequest *e2e_tests.AuthTokenRequestResponse
browserExtension := e2e_tests.CreateBrowserExtension(s.T(), "go-ext")
tokenRequestPayload := []byte(`{"domain":"facebook.com"}`)
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token", tokenRequestPayload, &tokenRequest)
e2e_tests.DoAPISuccessPost(s.T(),
"browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token",
tokenRequestPayload,
&tokenRequest)

closeTokenRequestPayload := []byte(`{"status":"terminated"}`)
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id+"/commands/close_2fa_request", closeTokenRequestPayload, nil)
e2e_tests.DoAPISuccessPost(s.T(),
"browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id+"/commands/close_2fa_request",
closeTokenRequestPayload,
nil)

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

var tokenRequest *e2e_tests.AuthTokenRequestResponse
request2FaTokenPayload := []byte(`{"domain":"domain.com"}`)
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token", request2FaTokenPayload, &tokenRequest)
e2e_tests.DoAPISuccessPost(s.T(),
"browser_extensions/"+browserExtension.Id+"/commands/request_2fa_token",
request2FaTokenPayload,
&tokenRequest)

closeTokenRequestPayload := []byte(`{"status":"completed"}`)
e2e_tests.DoAPISuccessPost(s.T(), "browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id+"/commands/close_2fa_request", closeTokenRequestPayload, nil)
e2e_tests.DoAPISuccessPost(s.T(),
"browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id+"/commands/close_2fa_request",
closeTokenRequestPayload,
nil)

var closedTokenRequest *e2e_tests.AuthTokenRequestResponse
e2e_tests.DoAPISuccessGet(s.T(), "browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id, &closedTokenRequest)
e2e_tests.DoAPISuccessGet(s.T(),
"browser_extensions/"+browserExtension.Id+"/2fa_requests/"+tokenRequest.Id,
&closedTokenRequest)
s.Equal("completed", closedTokenRequest.Status)
}
30 changes: 24 additions & 6 deletions e2e-tests/browser_extension/browser_extension_2fa_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,13 +41,21 @@ func (s *TwoFactorAuthTestSuite) TestBrowserExtensionAuthFullFlow() {

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

extensionTokenRequestWebsocketListener := e2e_tests.NewWebsocketTestListener("browser_extensions/" + browserExtension.Id + "/2fa_requests/" + tokenRequest.Id)
extensionTokenRequestWebsocketListener := e2e_tests.NewWebsocketTestListener(
"browser_extensions/" + browserExtension.Id + "/2fa_requests/" + tokenRequest.Id)
extensionTokenRequestWebsocketConnection := extensionTokenRequestWebsocketListener.StartListening()
defer extensionTokenRequestWebsocketConnection.Close()

e2e_tests.Send2FaTokenToExtension(s.T(), browserExtension.Id, device.Id, tokenRequest.Id, "2fa-token")
e2e_tests.Send2FaTokenToExtension(s.T(),
browserExtension.Id,
device.Id,
tokenRequest.Id,
"2fa-token")

expected2FaTokenWebsocket := createBrowserExtensionReceived2FaTokenMessage(s.T(), browserExtension.Id, device.Id, tokenRequest.Id)
expected2FaTokenWebsocket := createBrowserExtensionReceived2FaTokenMessage(s.T(),
browserExtension.Id,
device.Id,
tokenRequest.Id)
extensionTokenRequestWebsocketListener.AssertMessageHasBeenReceived(s.T(), expected2FaTokenWebsocket)
}

Expand Down Expand Up @@ -76,7 +84,11 @@ func createBrowserExtensionReceived2FaTokenMessage(t *testing.T, extensionId, de
return string(message)
}

func createPairingSuccessWebsocketMessage(t *testing.T, browserExtension *e2e_tests.BrowserExtensionResponse, device *e2e_tests.DeviceResponse, devicePubKey string) string {
func createPairingSuccessWebsocketMessage(
t *testing.T,
browserExtension *e2e_tests.BrowserExtensionResponse,
device *e2e_tests.DeviceResponse,
devicePubKey string) string {
t.Helper()

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

func assertBrowserExtensionHasPairedDevice(t *testing.T, browserExtension *e2e_tests.BrowserExtensionResponse, device *e2e_tests.DeviceResponse) {
func assertBrowserExtensionHasPairedDevice(
t *testing.T,
browserExtension *e2e_tests.BrowserExtensionResponse,
device *e2e_tests.DeviceResponse) {
t.Helper()
var browserExtensionDevices []*e2e_tests.DeviceResponse
e2e_tests.DoAPISuccessGet(t, "browser_extensions/"+browserExtension.Id+"/devices", &browserExtensionDevices)
Expand All @@ -108,7 +123,10 @@ func assertBrowserExtensionHasPairedDevice(t *testing.T, browserExtension *e2e_t
assert.Equal(t, device.Id, browserExtensionDevices[0].Id)
}

func assertDeviceHasPairedExtension(t *testing.T, device *e2e_tests.DeviceResponse, browserExtension *e2e_tests.BrowserExtensionResponse) {
func assertDeviceHasPairedExtension(
t *testing.T,
device *e2e_tests.DeviceResponse,
browserExtension *e2e_tests.BrowserExtensionResponse) {
t.Helper()
var deviceBrowserExtensions []*e2e_tests.BrowserExtensionResponse
e2e_tests.DoAPISuccessGet(t, "mobile/devices/"+device.Id+"/browser_extensions", &deviceBrowserExtensions)
Expand Down
20 changes: 16 additions & 4 deletions e2e-tests/browser_extension/browser_extension_pairing_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,11 @@ func (s *BrowserExtensionPairingTestSuite) TestRemoveBrowserExtensionPairedDevic
e2e_tests.PairDeviceWithBrowserExtension(s.T(), devicePubKey, browserExt, device)

e2e_tests.DoAPISuccessDelete(s.T(), "/browser_extensions/"+browserExt.Id+"/devices/"+device.Id)
response := e2e_tests.DoAPIRequest(s.T(), "/browser_extensions/"+browserExt.Id+"/devices/"+device.Id, http.MethodDelete, nil /*payload*/, nil /*resp*/)
response := e2e_tests.DoAPIRequest(s.T(),
"/browser_extensions/"+browserExt.Id+"/devices/"+device.Id,
http.MethodDelete,
nil, /*payload*/
nil /*resp*/)

s.Equal(404, response.StatusCode)
}
Expand Down Expand Up @@ -160,7 +164,9 @@ func (s *BrowserExtensionPairingTestSuite) TestGetPairedDevicesByNotExistingExte

notExistingExtensionId := uuid.New()
var firstExtensionDevices []*e2e_tests.ExtensionPairedDeviceResponse
e2e_tests.DoAPISuccessGet(s.T(), "/browser_extensions/"+notExistingExtensionId.String()+"/devices/", &firstExtensionDevices)
e2e_tests.DoAPISuccessGet(s.T(),
"/browser_extensions/"+notExistingExtensionId.String()+"/devices/",
&firstExtensionDevices)
s.Empty(firstExtensionDevices)
}

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

e2e_tests.DoAPIPostAndAssertCode(s.T(), 409, "/mobile/devices/"+device.Id+"/browser_extensions", payloadJson, pairingResult)
e2e_tests.DoAPIPostAndAssertCode(s.T(),
409,
"/mobile/devices/"+device.Id+"/browser_extensions",
payloadJson,
pairingResult)
}

func getExtensionPairedDevices(t *testing.T, browserExt *e2e_tests.BrowserExtensionResponse) []*e2e_tests.ExtensionPairedDeviceResponse {
func getExtensionPairedDevices(
t *testing.T,
browserExt *e2e_tests.BrowserExtensionResponse) []*e2e_tests.ExtensionPairedDeviceResponse {
t.Helper()
var extensionDevices []*e2e_tests.ExtensionPairedDeviceResponse
e2e_tests.DoAPISuccessGet(t, "/browser_extensions/"+browserExt.Id+"/devices/", &extensionDevices)
Expand Down
5 changes: 4 additions & 1 deletion e2e-tests/browser_extension/browser_extension_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,10 @@ func createBrowserExtension(t *testing.T, name string) *http.Response {

pubKey := crypto.PublicKeyToBase64(keyPair.PublicKey)

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

return e2e_tests.DoAPIRequest(t, "/browser_extensions", http.MethodPost, payload, nil)
}
15 changes: 12 additions & 3 deletions e2e-tests/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,10 @@ func CreateBrowserExtension(t *testing.T, name string) *BrowserExtensionResponse

pubKey := crypto.PublicKeyToBase64(keyPair.PublicKey)

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

browserExt := new(BrowserExtensionResponse)

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

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

browserExt := new(BrowserExtensionResponse)

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

func PairDeviceWithBrowserExtension(t *testing.T, devicePubKey string, browserExtension *BrowserExtensionResponse, device *DeviceResponse) *PairingResultResponse {
func PairDeviceWithBrowserExtension(
t *testing.T,
devicePubKey string,
browserExtension *BrowserExtensionResponse,
device *DeviceResponse) *PairingResultResponse {
t.Helper()

payload := struct {
Expand Down
5 changes: 4 additions & 1 deletion e2e-tests/icons/icons_collection_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,10 @@ func (s *IconsCollectionsTestSuite) TestUpdateIconsCollection() {
`)

var updatedIconsCollection *iconsCollectionResponse
e2e_tests.DoAdminSuccessPut(s.T(), "mobile/icons/collections/"+iconsCollection.Id, updatePayload, &updatedIconsCollection)
e2e_tests.DoAdminSuccessPut(s.T(),
"mobile/icons/collections/"+iconsCollection.Id,
updatePayload,
&updatedIconsCollection)

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