| // 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) | |
| } | |
| } |