1
0
mirror of https://github.com/jhillyerd/inbucket.git synced 2025-12-23 12:37:07 +00:00

More MIME dev, new unit test libs

MIME parsing code is now in an acceptable state to integrate into
web UI.  It should be able to display text and/or HTML (sans
attachments).

Added "testify" unit testing library, providing assertions and mocks.
This commit is contained in:
James Hillyerd
2012-10-17 20:25:27 -07:00
parent bc7526abef
commit e76fad1523
4 changed files with 73 additions and 13 deletions

View File

@@ -2,27 +2,68 @@ package inbucket
import (
"bufio"
"fmt"
"github.com/stretchrcom/testify/assert"
"net/mail"
"os"
"path/filepath"
"testing"
)
func TestSomething(t *testing.T) {
// Open test email for parsing
raw, err := os.Open("../../test-data/html-mime-attach.raw")
func TestIdentifyNonMime(t *testing.T) {
msg := readMessage("non-mime.raw")
assert.False(t, IsMIMEMessage(msg), "Failed to identify non-MIME message")
}
func TestIdentifyMime(t *testing.T) {
msg := readMessage("html-mime-inline.raw")
assert.True(t, IsMIMEMessage(msg), "Failed to identify MIME message")
}
func TestParseNonMime(t *testing.T) {
msg := readMessage("non-mime.raw")
_, err := ParseMIMEMessage(msg)
assert.NotNil(t, err, "Expected error parsing a non-MIME message")
}
func TestParseInlineText(t *testing.T) {
msg := readMessage("html-mime-inline.raw")
mime, err := ParseMIMEMessage(msg)
if err != nil {
t.Fatalf("Failed to open test data: %v", err)
t.Fatalf("Failed to parse mime: %v", err)
}
assert.Equal(t, mime.Text, "Test of HTML section")
}
func TestParseInlineHtml(t *testing.T) {
msg := readMessage("html-mime-inline.raw")
mime, err := ParseMIMEMessage(msg)
if err != nil {
t.Fatalf("Failed to parse mime: %v", err)
}
assert.Contains(t, mime.Html, "<html>")
assert.Contains(t, mime.Html, "Test of HTML section")
}
// readMessage is a test utility function to fetch a mail.Message object.
func readMessage(filename string) *mail.Message {
// Open test email for parsing
raw, err := os.Open(filepath.Join("..", "..", "test-data", filename))
if err != nil {
panic(fmt.Sprintf("Failed to open test data: %v", err))
}
// Parse email into a mail.Message object like we do
reader := bufio.NewReader(raw)
msg, err := mail.ReadMessage(reader)
if err != nil {
t.Fatalf("Failed to read message: %v", err)
panic(fmt.Sprintf("Failed to read message: %v", err))
}
_, err = ParseMIMEMessage(msg)
if err != nil {
t.Fatalf("Failed to parse mime: %v", err)
}
return msg
}