github.com/jordwest/imap-server@v0.0.0-20200627020849-1cf758ba359f/conn/conn_suite_test.go (about)

     1  package conn_test
     2  
     3  import (
     4  	"bufio"
     5  	"encoding/base64"
     6  	"fmt"
     7  	"net/textproto"
     8  	"strings"
     9  
    10  	"github.com/jordwest/imap-server/conn"
    11  	"github.com/jordwest/imap-server/mailstore"
    12  	"github.com/jordwest/mock-conn"
    13  	. "github.com/onsi/ginkgo"
    14  	. "github.com/onsi/gomega"
    15  
    16  	"testing"
    17  )
    18  
    19  var mStore *mailstore.DummyMailstore
    20  var tConn *conn.Conn
    21  var mockConn *mock_conn.Conn
    22  var reader *textproto.Reader
    23  
    24  func TestConn(t *testing.T) {
    25  	RegisterFailHandler(Fail)
    26  	RunSpecs(t, "Conn Suite")
    27  }
    28  
    29  func SendLine(request string) {
    30  	fmt.Fprintf(mockConn.Client, "%s\r\n", request)
    31  }
    32  
    33  func SendBase64(request string) {
    34  	encoder := base64.NewEncoder(base64.StdEncoding, mockConn.Client)
    35  	fmt.Fprintf(encoder, "%s", request)
    36  	// Must close the encoder when finished to flush any partial blocks.
    37  	encoder.Close()
    38  }
    39  
    40  func ExpectResponse(expected string) {
    41  	response, err := reader.ReadLine()
    42  	expected = strings.TrimSpace(expected)
    43  	response = strings.TrimSpace(response)
    44  	Expect(response, err).To(Equal(expected))
    45  }
    46  
    47  func ExpectResponsePattern(pattern string) {
    48  	response, err := reader.ReadLine()
    49  	pattern = strings.TrimSpace(pattern)
    50  	response = strings.TrimSpace(response)
    51  	Expect(response, err).To(MatchRegexp(pattern))
    52  }
    53  
    54  // === SETUP ====
    55  var _ = BeforeEach(func() {
    56  	mStore = mailstore.NewDummyMailstore()
    57  	mockConn = mock_conn.NewConn()
    58  	tConn = conn.NewConn(mStore, mockConn.Server, GinkgoWriter)
    59  	reader = textproto.NewReader(bufio.NewReader(mockConn.Client))
    60  })
    61  
    62  var _ = JustBeforeEach(func() {
    63  	go tConn.Start()
    64  })
    65  
    66  // === TEARDOWN ====
    67  
    68  var _ = AfterEach(func() {
    69  	tConn.Close()
    70  	mockConn.Close()
    71  })