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  }