diff --git a/satellite/console/consoleweb/consoleapi/auth_test.go b/satellite/console/consoleweb/consoleapi/auth_test.go index 6b77cbce9..a6dc7923c 100644 --- a/satellite/console/consoleweb/consoleapi/auth_test.go +++ b/satellite/console/consoleweb/consoleapi/auth_test.go @@ -41,6 +41,7 @@ func TestAuth_Register(t *testing.T) { Satellite: func(log *zap.Logger, index int, config *satellite.Config) { config.Console.OpenRegistrationEnabled = true config.Console.RateLimit.Burst = 10 + config.Mail.AuthType = "nomail" }, }, }, func(t *testing.T, ctx *testcontext.Context, planet *testplanet.Planet) { @@ -96,9 +97,11 @@ func TestAuth_Register(t *testing.T) { require.NoError(t, err) }() require.Equal(t, http.StatusOK, result.StatusCode) - + require.Len(t, planet.Satellites, 1) + // this works only because we configured 'nomail' above. Mail send simulator won't click to activation link. _, users, err := planet.Satellites[0].API.Console.Service.GetUserByEmailWithUnverified(ctx, registerData.Email) require.NoError(t, err) + require.Len(t, users, 1) require.Equal(t, []byte(test.Partner), users[0].UserAgent) }() } @@ -112,6 +115,7 @@ func TestAuth_Register_CORS(t *testing.T) { Satellite: func(log *zap.Logger, index int, config *satellite.Config) { config.Console.OpenRegistrationEnabled = true config.Console.RateLimit.Burst = 10 + config.Mail.AuthType = "nomail" }, }, }, func(t *testing.T, ctx *testcontext.Context, planet *testplanet.Planet) { @@ -192,8 +196,11 @@ func TestAuth_Register_CORS(t *testing.T) { "Authorization", }) + require.Len(t, planet.Satellites, 1) + // this works only because we configured 'nomail' above. Mail send simulator won't click to activation link. _, users, err := planet.Satellites[0].API.Console.Service.GetUserByEmailWithUnverified(ctx, email) require.NoError(t, err) + require.Len(t, users, 1) require.Equal(t, fullName, users[0].FullName) }) } @@ -738,6 +745,11 @@ func TestResendActivationEmail(t *testing.T) { func TestAuth_Register_NameSpecialChars(t *testing.T) { testplanet.Run(t, testplanet.Config{ SatelliteCount: 1, StorageNodeCount: 0, UplinkCount: 0, + Reconfigure: testplanet.Reconfigure{ + Satellite: func(log *zap.Logger, index int, config *satellite.Config) { + config.Mail.AuthType = "nomail" + }, + }, }, func(t *testing.T, ctx *testcontext.Context, planet *testplanet.Planet) { inputName := "The website has been changed to https://evil.com/login.html - Enter Login Details," filteredName := "The website has been changed to https---evil-com-login-html - Enter Login Details," @@ -768,9 +780,11 @@ func TestAuth_Register_NameSpecialChars(t *testing.T) { require.NoError(t, err) }() require.Equal(t, http.StatusOK, result.StatusCode) - + require.Len(t, planet.Satellites, 1) + // this works only because we configured 'nomail' above. Mail send simulator won't click to activation link. _, users, err := planet.Satellites[0].API.Console.Service.GetUserByEmailWithUnverified(ctx, email) require.NoError(t, err) + require.Len(t, users, 1) require.Equal(t, filteredName, users[0].FullName) require.Equal(t, filteredName, users[0].ShortName) }) diff --git a/satellite/mailservice/simulate/nomail.go b/satellite/mailservice/simulate/nomail.go new file mode 100644 index 000000000..0367f1bc1 --- /dev/null +++ b/satellite/mailservice/simulate/nomail.go @@ -0,0 +1,26 @@ +// Copyright (C) 2019 Storj Labs, Inc. +// See LICENSE for copying information + +package simulate + +import ( + "context" + "net/mail" + + "storj.io/storj/private/post" +) + +// NoMail doesn't send out any mail. +type NoMail struct { +} + +// SendEmail implements func from mailservice.Sender. +func (n NoMail) SendEmail(ctx context.Context, msg *post.Message) error { + return nil +} + +// FromAddress implements func from mailservice.Sender. +func (n NoMail) FromAddress() post.Address { + addr, _ := mail.ParseAddress("nosuchmail@storj.io") + return *addr +} diff --git a/satellite/peer.go b/satellite/peer.go index 5517a9d07..2fa1c1240 100644 --- a/satellite/peer.go +++ b/satellite/peer.go @@ -233,6 +233,8 @@ func setupMailService(log *zap.Logger, config Config) (*mailservice.Service, err }, ServerAddress: mailConfig.SMTPServerAddress, } + case "nomail": + sender = simulate.NoMail{} default: sender = simulate.NewDefaultLinkClicker(log.Named("mail:linkclicker")) }