summaryrefslogtreecommitdiffstats
path: root/vendor/google.golang.org/appengine/mail/mail_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/google.golang.org/appengine/mail/mail_test.go')
-rw-r--r--vendor/google.golang.org/appengine/mail/mail_test.go65
1 files changed, 65 insertions, 0 deletions
diff --git a/vendor/google.golang.org/appengine/mail/mail_test.go b/vendor/google.golang.org/appengine/mail/mail_test.go
new file mode 100644
index 000000000..7502c5973
--- /dev/null
+++ b/vendor/google.golang.org/appengine/mail/mail_test.go
@@ -0,0 +1,65 @@
+// Copyright 2011 Google Inc. All rights reserved.
+// Use of this source code is governed by the Apache 2.0
+// license that can be found in the LICENSE file.
+
+package mail
+
+import (
+ "testing"
+
+ "github.com/golang/protobuf/proto"
+
+ "google.golang.org/appengine/internal/aetesting"
+ basepb "google.golang.org/appengine/internal/base"
+ pb "google.golang.org/appengine/internal/mail"
+)
+
+func TestMessageConstruction(t *testing.T) {
+ var got *pb.MailMessage
+ c := aetesting.FakeSingleContext(t, "mail", "Send", func(in *pb.MailMessage, out *basepb.VoidProto) error {
+ got = in
+ return nil
+ })
+
+ msg := &Message{
+ Sender: "dsymonds@example.com",
+ To: []string{"nigeltao@example.com"},
+ Body: "Hey, lunch time?",
+ Attachments: []Attachment{
+ // Regression test for a prod bug. The address of a range variable was used when
+ // constructing the outgoing proto, so multiple attachments used the same name.
+ {
+ Name: "att1.txt",
+ Data: []byte("data1"),
+ ContentID: "<att1>",
+ },
+ {
+ Name: "att2.txt",
+ Data: []byte("data2"),
+ },
+ },
+ }
+ if err := Send(c, msg); err != nil {
+ t.Fatalf("Send: %v", err)
+ }
+ want := &pb.MailMessage{
+ Sender: proto.String("dsymonds@example.com"),
+ To: []string{"nigeltao@example.com"},
+ Subject: proto.String(""),
+ TextBody: proto.String("Hey, lunch time?"),
+ Attachment: []*pb.MailAttachment{
+ {
+ FileName: proto.String("att1.txt"),
+ Data: []byte("data1"),
+ ContentID: proto.String("<att1>"),
+ },
+ {
+ FileName: proto.String("att2.txt"),
+ Data: []byte("data2"),
+ },
+ },
+ }
+ if !proto.Equal(got, want) {
+ t.Errorf("Bad proto for %+v\n got %v\nwant %v", msg, got, want)
+ }
+}