1535bbe673
Provides the means to serve an error to the user with a user-friendly error message (serveCustomJSONError). Auth API uses this when processing registration attempts. Previously, the error message was inferred by the client based on the status code of the response received from the server. However, if multiple distinct errors fit a certain status code, it was impossible to correctly interpret the error. Change-Id: I2f91e9c81ba1a4d14ba67e0b4b531a48800d4799
70 lines
1.9 KiB
Go
70 lines
1.9 KiB
Go
// Copyright (C) 2021 Storj Labs, Inc.
|
|
// See LICENSE for copying information.
|
|
|
|
package console_test
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
"go.uber.org/zap"
|
|
|
|
"storj.io/common/testcontext"
|
|
"storj.io/storj/private/testplanet"
|
|
"storj.io/storj/satellite"
|
|
"storj.io/storj/satellite/console"
|
|
)
|
|
|
|
const validResponseToken = "myResponseToken"
|
|
|
|
type mockRecaptcha struct{}
|
|
|
|
func (r mockRecaptcha) Verify(ctx context.Context, responseToken string, userIP string) (bool, error) {
|
|
return responseToken == validResponseToken, nil
|
|
}
|
|
|
|
// TestRecaptcha ensures the reCAPTCHA service is working properly.
|
|
func TestRecaptcha(t *testing.T) {
|
|
testplanet.Run(t, testplanet.Config{
|
|
SatelliteCount: 1,
|
|
Reconfigure: testplanet.Reconfigure{
|
|
Satellite: func(log *zap.Logger, index int, config *satellite.Config) {
|
|
config.Console.Recaptcha.Enabled = true
|
|
config.Console.Recaptcha.SecretKey = "mySecretKey"
|
|
config.Console.Recaptcha.SiteKey = "mySiteKey"
|
|
},
|
|
},
|
|
}, func(t *testing.T, ctx *testcontext.Context, planet *testplanet.Planet) {
|
|
service := planet.Satellites[0].API.Console.Service
|
|
require.NotNil(t, service)
|
|
service.TestSwapRecaptchaHandler(mockRecaptcha{})
|
|
|
|
regToken1, err := service.CreateRegToken(ctx, 1)
|
|
require.NoError(t, err)
|
|
|
|
user, err := service.CreateUser(ctx, console.CreateUser{
|
|
FullName: "User",
|
|
Email: "u@mail.test",
|
|
Password: "password",
|
|
RecaptchaResponse: validResponseToken,
|
|
}, regToken1.Secret)
|
|
|
|
require.NotNil(t, user)
|
|
require.NoError(t, err)
|
|
|
|
regToken2, err := service.CreateRegToken(ctx, 1)
|
|
require.NoError(t, err)
|
|
|
|
user, err = service.CreateUser(ctx, console.CreateUser{
|
|
FullName: "User2",
|
|
Email: "u2@mail.test",
|
|
Password: "password",
|
|
RecaptchaResponse: "wrong",
|
|
}, regToken2.Secret)
|
|
|
|
require.Nil(t, user)
|
|
require.True(t, console.ErrRecaptcha.Has(err))
|
|
})
|
|
}
|