github.com/mongodb/grip@v0.0.0-20240213223901-f906268d82b9/send/smtp_mock_test.go (about)

     1  package send
     2  
     3  import (
     4  	"bytes"
     5  	"errors"
     6  	"io"
     7  )
     8  
     9  type bufferCloser struct {
    10  	*bytes.Buffer
    11  }
    12  
    13  func (bufferCloser) Close() error {
    14  	return nil
    15  }
    16  
    17  type smtpClientMock struct {
    18  	failCreate bool
    19  	failMail   bool
    20  	failRcpt   bool
    21  	failData   bool
    22  	message    bufferCloser
    23  	numMsgs    int
    24  }
    25  
    26  func (c *smtpClientMock) Create(opts *SMTPOptions) error {
    27  	if c.failCreate {
    28  		return errors.New("failed creation")
    29  	}
    30  
    31  	return nil
    32  }
    33  
    34  func (c *smtpClientMock) Mail(to string) error {
    35  	if c.failMail {
    36  		return errors.New("failed to send mail")
    37  	}
    38  
    39  	return nil
    40  }
    41  
    42  func (c *smtpClientMock) Rcpt(addr string) error {
    43  	if c.failRcpt {
    44  		return errors.New("fail recpt")
    45  	}
    46  
    47  	return nil
    48  }
    49  
    50  func (c *smtpClientMock) Data() (io.WriteCloser, error) {
    51  	if c.failData {
    52  		return nil, errors.New("failed data")
    53  	}
    54  	c.message = bufferCloser{&bytes.Buffer{}}
    55  	c.numMsgs++
    56  
    57  	return c.message, nil
    58  }
    59  
    60  func (c *smtpClientMock) Close() error {
    61  	return nil
    62  }