| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- package sqs_test
- import (
- "bytes"
- "io/ioutil"
- "net/http"
- "testing"
- "github.com/stretchr/testify/assert"
- "github.com/aws/aws-sdk-go/aws"
- "github.com/aws/aws-sdk-go/aws/awserr"
- "github.com/aws/aws-sdk-go/aws/request"
- "github.com/aws/aws-sdk-go/awstesting/unit"
- "github.com/aws/aws-sdk-go/service/sqs"
- )
- var svc = func() *sqs.SQS {
- s := sqs.New(unit.Session, &aws.Config{
- DisableParamValidation: aws.Bool(true),
- })
- s.Handlers.Send.Clear()
- return s
- }()
- func TestSendMessageChecksum(t *testing.T) {
- req, _ := svc.SendMessageRequest(&sqs.SendMessageInput{
- MessageBody: aws.String("test"),
- })
- req.Handlers.Send.PushBack(func(r *request.Request) {
- body := ioutil.NopCloser(bytes.NewReader([]byte("")))
- r.HTTPResponse = &http.Response{StatusCode: 200, Body: body}
- r.Data = &sqs.SendMessageOutput{
- MD5OfMessageBody: aws.String("098f6bcd4621d373cade4e832627b4f6"),
- MessageId: aws.String("12345"),
- }
- })
- err := req.Send()
- assert.NoError(t, err)
- }
- func TestSendMessageChecksumInvalid(t *testing.T) {
- req, _ := svc.SendMessageRequest(&sqs.SendMessageInput{
- MessageBody: aws.String("test"),
- })
- req.Handlers.Send.PushBack(func(r *request.Request) {
- body := ioutil.NopCloser(bytes.NewReader([]byte("")))
- r.HTTPResponse = &http.Response{StatusCode: 200, Body: body}
- r.Data = &sqs.SendMessageOutput{
- MD5OfMessageBody: aws.String("000"),
- MessageId: aws.String("12345"),
- }
- })
- err := req.Send()
- assert.Error(t, err)
- assert.Equal(t, "InvalidChecksum", err.(awserr.Error).Code())
- assert.Contains(t, err.(awserr.Error).Message(), "expected MD5 checksum '000', got '098f6bcd4621d373cade4e832627b4f6'")
- }
- func TestSendMessageChecksumInvalidNoValidation(t *testing.T) {
- s := sqs.New(unit.Session, &aws.Config{
- DisableParamValidation: aws.Bool(true),
- DisableComputeChecksums: aws.Bool(true),
- })
- s.Handlers.Send.Clear()
- req, _ := s.SendMessageRequest(&sqs.SendMessageInput{
- MessageBody: aws.String("test"),
- })
- req.Handlers.Send.PushBack(func(r *request.Request) {
- body := ioutil.NopCloser(bytes.NewReader([]byte("")))
- r.HTTPResponse = &http.Response{StatusCode: 200, Body: body}
- r.Data = &sqs.SendMessageOutput{
- MD5OfMessageBody: aws.String("000"),
- MessageId: aws.String("12345"),
- }
- })
- err := req.Send()
- assert.NoError(t, err)
- }
- func TestSendMessageChecksumNoInput(t *testing.T) {
- req, _ := svc.SendMessageRequest(&sqs.SendMessageInput{})
- req.Handlers.Send.PushBack(func(r *request.Request) {
- body := ioutil.NopCloser(bytes.NewReader([]byte("")))
- r.HTTPResponse = &http.Response{StatusCode: 200, Body: body}
- r.Data = &sqs.SendMessageOutput{}
- })
- err := req.Send()
- assert.Error(t, err)
- assert.Equal(t, "InvalidChecksum", err.(awserr.Error).Code())
- assert.Contains(t, err.(awserr.Error).Message(), "cannot compute checksum. missing body")
- }
- func TestSendMessageChecksumNoOutput(t *testing.T) {
- req, _ := svc.SendMessageRequest(&sqs.SendMessageInput{
- MessageBody: aws.String("test"),
- })
- req.Handlers.Send.PushBack(func(r *request.Request) {
- body := ioutil.NopCloser(bytes.NewReader([]byte("")))
- r.HTTPResponse = &http.Response{StatusCode: 200, Body: body}
- r.Data = &sqs.SendMessageOutput{}
- })
- err := req.Send()
- assert.Error(t, err)
- assert.Equal(t, "InvalidChecksum", err.(awserr.Error).Code())
- assert.Contains(t, err.(awserr.Error).Message(), "cannot verify checksum. missing response MD5")
- }
- func TestRecieveMessageChecksum(t *testing.T) {
- req, _ := svc.ReceiveMessageRequest(&sqs.ReceiveMessageInput{})
- req.Handlers.Send.PushBack(func(r *request.Request) {
- md5 := "098f6bcd4621d373cade4e832627b4f6"
- body := ioutil.NopCloser(bytes.NewReader([]byte("")))
- r.HTTPResponse = &http.Response{StatusCode: 200, Body: body}
- r.Data = &sqs.ReceiveMessageOutput{
- Messages: []*sqs.Message{
- {Body: aws.String("test"), MD5OfBody: &md5},
- {Body: aws.String("test"), MD5OfBody: &md5},
- {Body: aws.String("test"), MD5OfBody: &md5},
- {Body: aws.String("test"), MD5OfBody: &md5},
- },
- }
- })
- err := req.Send()
- assert.NoError(t, err)
- }
- func TestRecieveMessageChecksumInvalid(t *testing.T) {
- req, _ := svc.ReceiveMessageRequest(&sqs.ReceiveMessageInput{})
- req.Handlers.Send.PushBack(func(r *request.Request) {
- md5 := "098f6bcd4621d373cade4e832627b4f6"
- body := ioutil.NopCloser(bytes.NewReader([]byte("")))
- r.HTTPResponse = &http.Response{StatusCode: 200, Body: body}
- r.Data = &sqs.ReceiveMessageOutput{
- Messages: []*sqs.Message{
- {Body: aws.String("test"), MD5OfBody: &md5},
- {Body: aws.String("test"), MD5OfBody: aws.String("000"), MessageId: aws.String("123")},
- {Body: aws.String("test"), MD5OfBody: aws.String("000"), MessageId: aws.String("456")},
- {Body: aws.String("test"), MD5OfBody: aws.String("000")},
- {Body: aws.String("test"), MD5OfBody: &md5},
- },
- }
- })
- err := req.Send()
- assert.Error(t, err)
- assert.Equal(t, "InvalidChecksum", err.(awserr.Error).Code())
- assert.Contains(t, err.(awserr.Error).Message(), "invalid messages: 123, 456")
- }
- func TestSendMessageBatchChecksum(t *testing.T) {
- req, _ := svc.SendMessageBatchRequest(&sqs.SendMessageBatchInput{
- Entries: []*sqs.SendMessageBatchRequestEntry{
- {Id: aws.String("1"), MessageBody: aws.String("test")},
- {Id: aws.String("2"), MessageBody: aws.String("test")},
- {Id: aws.String("3"), MessageBody: aws.String("test")},
- {Id: aws.String("4"), MessageBody: aws.String("test")},
- },
- })
- req.Handlers.Send.PushBack(func(r *request.Request) {
- md5 := "098f6bcd4621d373cade4e832627b4f6"
- body := ioutil.NopCloser(bytes.NewReader([]byte("")))
- r.HTTPResponse = &http.Response{StatusCode: 200, Body: body}
- r.Data = &sqs.SendMessageBatchOutput{
- Successful: []*sqs.SendMessageBatchResultEntry{
- {MD5OfMessageBody: &md5, MessageId: aws.String("123"), Id: aws.String("1")},
- {MD5OfMessageBody: &md5, MessageId: aws.String("456"), Id: aws.String("2")},
- {MD5OfMessageBody: &md5, MessageId: aws.String("789"), Id: aws.String("3")},
- {MD5OfMessageBody: &md5, MessageId: aws.String("012"), Id: aws.String("4")},
- },
- }
- })
- err := req.Send()
- assert.NoError(t, err)
- }
- func TestSendMessageBatchChecksumInvalid(t *testing.T) {
- req, _ := svc.SendMessageBatchRequest(&sqs.SendMessageBatchInput{
- Entries: []*sqs.SendMessageBatchRequestEntry{
- {Id: aws.String("1"), MessageBody: aws.String("test")},
- {Id: aws.String("2"), MessageBody: aws.String("test")},
- {Id: aws.String("3"), MessageBody: aws.String("test")},
- {Id: aws.String("4"), MessageBody: aws.String("test")},
- },
- })
- req.Handlers.Send.PushBack(func(r *request.Request) {
- md5 := "098f6bcd4621d373cade4e832627b4f6"
- body := ioutil.NopCloser(bytes.NewReader([]byte("")))
- r.HTTPResponse = &http.Response{StatusCode: 200, Body: body}
- r.Data = &sqs.SendMessageBatchOutput{
- Successful: []*sqs.SendMessageBatchResultEntry{
- {MD5OfMessageBody: &md5, MessageId: aws.String("123"), Id: aws.String("1")},
- {MD5OfMessageBody: aws.String("000"), MessageId: aws.String("456"), Id: aws.String("2")},
- {MD5OfMessageBody: aws.String("000"), MessageId: aws.String("789"), Id: aws.String("3")},
- {MD5OfMessageBody: &md5, MessageId: aws.String("012"), Id: aws.String("4")},
- },
- }
- })
- err := req.Send()
- assert.Error(t, err)
- assert.Equal(t, "InvalidChecksum", err.(awserr.Error).Code())
- assert.Contains(t, err.(awserr.Error).Message(), "invalid messages: 456, 789")
- }
|