github.com/go-email-validator/go-email-validator@v0.0.0-20230409163946-b8b9e6a0552e/pkg/ev/validator_smtp_test.go (about) 1 package ev 2 3 import ( 4 "github.com/emirpasic/gods/sets/hashset" 5 "github.com/go-email-validator/go-email-validator/pkg/ev/evmail" 6 "github.com/go-email-validator/go-email-validator/pkg/ev/evsmtp" 7 mockevmail "github.com/go-email-validator/go-email-validator/test/mock/ev/evmail" 8 "github.com/stretchr/testify/require" 9 "testing" 10 ) 11 12 // test monicaramirezrestrepo@hotmail.com. 13 func newSMTPValidator() Validator { 14 return NewSMTPValidator(evsmtp.NewChecker(evsmtp.CheckerDTO{ 15 Options: evsmtp.NewOptions(evsmtp.OptionsDTO{ 16 EmailFrom: evmail.FromString(evsmtp.DefaultEmail), 17 }), 18 })) 19 } 20 21 func getSMTPValidatorValidate() Validator { 22 return NewDepValidator( 23 map[ValidatorName]Validator{ 24 SyntaxValidatorName: NewSyntaxValidator(), 25 MXValidatorName: DefaultNewMXValidator(), 26 SMTPValidatorName: NewWarningsDecorator( 27 newSMTPValidator(), 28 NewIsWarning(hashset.New(evsmtp.RandomRCPTStage), func(warningMap WarningSet) IsWarning { 29 return func(err error) bool { 30 return warningMap.Contains(err.(evsmtp.Error).Stage()) 31 } 32 }), 33 ), 34 }, 35 ) 36 } 37 38 func BenchmarkSMTPValidator_Validate(b *testing.B) { 39 email := evmail.FromString(mockevmail.ValidEmailString) 40 validator := getSMTPValidatorValidate() 41 42 b.ResetTimer() 43 for i := 0; i < b.N; i++ { 44 validator.Validate(NewInput(email)) 45 } 46 } 47 48 func TestSMTPValidator_Validate_WithoutMock(t *testing.T) { 49 email := evmail.FromString(mockevmail.ValidEmailString) 50 validator := getSMTPValidatorValidate() 51 52 v := validator.Validate(NewInput(email)) 53 require.True(t, v.IsValid()) 54 }