PageRenderTime 26ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/vendor/github.com/aws/aws-sdk-go/service/sqs/checksums_test.go

https://gitlab.com/unofficial-mirrors/openshift-origin
Go | 245 lines | 227 code | 18 blank | 0 comment | 33 complexity | 1734d145fba6a186bb1246d64d197ef4 MD5 | raw file
  1. package sqs_test
  2. import (
  3. "bytes"
  4. "io/ioutil"
  5. "net/http"
  6. "strings"
  7. "testing"
  8. "github.com/aws/aws-sdk-go/aws"
  9. "github.com/aws/aws-sdk-go/aws/awserr"
  10. "github.com/aws/aws-sdk-go/aws/request"
  11. "github.com/aws/aws-sdk-go/awstesting/unit"
  12. "github.com/aws/aws-sdk-go/service/sqs"
  13. )
  14. var svc = func() *sqs.SQS {
  15. s := sqs.New(unit.Session, &aws.Config{
  16. DisableParamValidation: aws.Bool(true),
  17. })
  18. s.Handlers.Send.Clear()
  19. return s
  20. }()
  21. func TestSendMessageChecksum(t *testing.T) {
  22. req, _ := svc.SendMessageRequest(&sqs.SendMessageInput{
  23. MessageBody: aws.String("test"),
  24. })
  25. req.Handlers.Send.PushBack(func(r *request.Request) {
  26. body := ioutil.NopCloser(bytes.NewReader([]byte("")))
  27. r.HTTPResponse = &http.Response{StatusCode: 200, Body: body}
  28. r.Data = &sqs.SendMessageOutput{
  29. MD5OfMessageBody: aws.String("098f6bcd4621d373cade4e832627b4f6"),
  30. MessageId: aws.String("12345"),
  31. }
  32. })
  33. err := req.Send()
  34. if err != nil {
  35. t.Errorf("expect no error, got %v", err)
  36. }
  37. }
  38. func TestSendMessageChecksumInvalid(t *testing.T) {
  39. req, _ := svc.SendMessageRequest(&sqs.SendMessageInput{
  40. MessageBody: aws.String("test"),
  41. })
  42. req.Handlers.Send.PushBack(func(r *request.Request) {
  43. body := ioutil.NopCloser(bytes.NewReader([]byte("")))
  44. r.HTTPResponse = &http.Response{StatusCode: 200, Body: body}
  45. r.Data = &sqs.SendMessageOutput{
  46. MD5OfMessageBody: aws.String("000"),
  47. MessageId: aws.String("12345"),
  48. }
  49. })
  50. err := req.Send()
  51. if err == nil {
  52. t.Fatalf("expect error, got nil")
  53. }
  54. if e, a := "InvalidChecksum", err.(awserr.Error).Code(); e != a {
  55. t.Errorf("expect %v, got %v", e, a)
  56. }
  57. if e, a := err.(awserr.Error).Message(), "expected MD5 checksum '000', got '098f6bcd4621d373cade4e832627b4f6'"; !strings.Contains(a, e) {
  58. t.Errorf("expect %v to be in %v, was not", e, a)
  59. }
  60. }
  61. func TestSendMessageChecksumInvalidNoValidation(t *testing.T) {
  62. s := sqs.New(unit.Session, &aws.Config{
  63. DisableParamValidation: aws.Bool(true),
  64. DisableComputeChecksums: aws.Bool(true),
  65. })
  66. s.Handlers.Send.Clear()
  67. req, _ := s.SendMessageRequest(&sqs.SendMessageInput{
  68. MessageBody: aws.String("test"),
  69. })
  70. req.Handlers.Send.PushBack(func(r *request.Request) {
  71. body := ioutil.NopCloser(bytes.NewReader([]byte("")))
  72. r.HTTPResponse = &http.Response{StatusCode: 200, Body: body}
  73. r.Data = &sqs.SendMessageOutput{
  74. MD5OfMessageBody: aws.String("000"),
  75. MessageId: aws.String("12345"),
  76. }
  77. })
  78. err := req.Send()
  79. if err != nil {
  80. t.Errorf("expect no error, got %v", err)
  81. }
  82. }
  83. func TestSendMessageChecksumNoInput(t *testing.T) {
  84. req, _ := svc.SendMessageRequest(&sqs.SendMessageInput{})
  85. req.Handlers.Send.PushBack(func(r *request.Request) {
  86. body := ioutil.NopCloser(bytes.NewReader([]byte("")))
  87. r.HTTPResponse = &http.Response{StatusCode: 200, Body: body}
  88. r.Data = &sqs.SendMessageOutput{}
  89. })
  90. err := req.Send()
  91. if err == nil {
  92. t.Fatalf("expect error, got nil")
  93. }
  94. if e, a := "InvalidChecksum", err.(awserr.Error).Code(); e != a {
  95. t.Errorf("expect %v, got %v", e, a)
  96. }
  97. if e, a := err.(awserr.Error).Message(), "cannot compute checksum. missing body"; !strings.Contains(a, e) {
  98. t.Errorf("expect %v to be in %v, was not", e, a)
  99. }
  100. }
  101. func TestSendMessageChecksumNoOutput(t *testing.T) {
  102. req, _ := svc.SendMessageRequest(&sqs.SendMessageInput{
  103. MessageBody: aws.String("test"),
  104. })
  105. req.Handlers.Send.PushBack(func(r *request.Request) {
  106. body := ioutil.NopCloser(bytes.NewReader([]byte("")))
  107. r.HTTPResponse = &http.Response{StatusCode: 200, Body: body}
  108. r.Data = &sqs.SendMessageOutput{}
  109. })
  110. err := req.Send()
  111. if err == nil {
  112. t.Fatalf("expect error, got nil")
  113. }
  114. if e, a := "InvalidChecksum", err.(awserr.Error).Code(); e != a {
  115. t.Errorf("expect %v, got %v", e, a)
  116. }
  117. if e, a := err.(awserr.Error).Message(), "cannot verify checksum. missing response MD5"; !strings.Contains(a, e) {
  118. t.Errorf("expect %v to be in %v, was not", e, a)
  119. }
  120. }
  121. func TestRecieveMessageChecksum(t *testing.T) {
  122. req, _ := svc.ReceiveMessageRequest(&sqs.ReceiveMessageInput{})
  123. req.Handlers.Send.PushBack(func(r *request.Request) {
  124. md5 := "098f6bcd4621d373cade4e832627b4f6"
  125. body := ioutil.NopCloser(bytes.NewReader([]byte("")))
  126. r.HTTPResponse = &http.Response{StatusCode: 200, Body: body}
  127. r.Data = &sqs.ReceiveMessageOutput{
  128. Messages: []*sqs.Message{
  129. {Body: aws.String("test"), MD5OfBody: &md5},
  130. {Body: aws.String("test"), MD5OfBody: &md5},
  131. {Body: aws.String("test"), MD5OfBody: &md5},
  132. {Body: aws.String("test"), MD5OfBody: &md5},
  133. },
  134. }
  135. })
  136. err := req.Send()
  137. if err != nil {
  138. t.Errorf("expect no error, got %v", err)
  139. }
  140. }
  141. func TestRecieveMessageChecksumInvalid(t *testing.T) {
  142. req, _ := svc.ReceiveMessageRequest(&sqs.ReceiveMessageInput{})
  143. req.Handlers.Send.PushBack(func(r *request.Request) {
  144. md5 := "098f6bcd4621d373cade4e832627b4f6"
  145. body := ioutil.NopCloser(bytes.NewReader([]byte("")))
  146. r.HTTPResponse = &http.Response{StatusCode: 200, Body: body}
  147. r.Data = &sqs.ReceiveMessageOutput{
  148. Messages: []*sqs.Message{
  149. {Body: aws.String("test"), MD5OfBody: &md5},
  150. {Body: aws.String("test"), MD5OfBody: aws.String("000"), MessageId: aws.String("123")},
  151. {Body: aws.String("test"), MD5OfBody: aws.String("000"), MessageId: aws.String("456")},
  152. {Body: aws.String("test"), MD5OfBody: aws.String("000")},
  153. {Body: aws.String("test"), MD5OfBody: &md5},
  154. },
  155. }
  156. })
  157. err := req.Send()
  158. if err == nil {
  159. t.Fatalf("expect error, got nil")
  160. }
  161. if e, a := "InvalidChecksum", err.(awserr.Error).Code(); e != a {
  162. t.Errorf("expect %v, got %v", e, a)
  163. }
  164. if e, a := err.(awserr.Error).Message(), "invalid messages: 123, 456"; !strings.Contains(a, e) {
  165. t.Errorf("expect %v to be in %v, was not", e, a)
  166. }
  167. }
  168. func TestSendMessageBatchChecksum(t *testing.T) {
  169. req, _ := svc.SendMessageBatchRequest(&sqs.SendMessageBatchInput{
  170. Entries: []*sqs.SendMessageBatchRequestEntry{
  171. {Id: aws.String("1"), MessageBody: aws.String("test")},
  172. {Id: aws.String("2"), MessageBody: aws.String("test")},
  173. {Id: aws.String("3"), MessageBody: aws.String("test")},
  174. {Id: aws.String("4"), MessageBody: aws.String("test")},
  175. },
  176. })
  177. req.Handlers.Send.PushBack(func(r *request.Request) {
  178. md5 := "098f6bcd4621d373cade4e832627b4f6"
  179. body := ioutil.NopCloser(bytes.NewReader([]byte("")))
  180. r.HTTPResponse = &http.Response{StatusCode: 200, Body: body}
  181. r.Data = &sqs.SendMessageBatchOutput{
  182. Successful: []*sqs.SendMessageBatchResultEntry{
  183. {MD5OfMessageBody: &md5, MessageId: aws.String("123"), Id: aws.String("1")},
  184. {MD5OfMessageBody: &md5, MessageId: aws.String("456"), Id: aws.String("2")},
  185. {MD5OfMessageBody: &md5, MessageId: aws.String("789"), Id: aws.String("3")},
  186. {MD5OfMessageBody: &md5, MessageId: aws.String("012"), Id: aws.String("4")},
  187. },
  188. }
  189. })
  190. err := req.Send()
  191. if err != nil {
  192. t.Errorf("expect no error, got %v", err)
  193. }
  194. }
  195. func TestSendMessageBatchChecksumInvalid(t *testing.T) {
  196. req, _ := svc.SendMessageBatchRequest(&sqs.SendMessageBatchInput{
  197. Entries: []*sqs.SendMessageBatchRequestEntry{
  198. {Id: aws.String("1"), MessageBody: aws.String("test")},
  199. {Id: aws.String("2"), MessageBody: aws.String("test")},
  200. {Id: aws.String("3"), MessageBody: aws.String("test")},
  201. {Id: aws.String("4"), MessageBody: aws.String("test")},
  202. },
  203. })
  204. req.Handlers.Send.PushBack(func(r *request.Request) {
  205. md5 := "098f6bcd4621d373cade4e832627b4f6"
  206. body := ioutil.NopCloser(bytes.NewReader([]byte("")))
  207. r.HTTPResponse = &http.Response{StatusCode: 200, Body: body}
  208. r.Data = &sqs.SendMessageBatchOutput{
  209. Successful: []*sqs.SendMessageBatchResultEntry{
  210. {MD5OfMessageBody: &md5, MessageId: aws.String("123"), Id: aws.String("1")},
  211. {MD5OfMessageBody: aws.String("000"), MessageId: aws.String("456"), Id: aws.String("2")},
  212. {MD5OfMessageBody: aws.String("000"), MessageId: aws.String("789"), Id: aws.String("3")},
  213. {MD5OfMessageBody: &md5, MessageId: aws.String("012"), Id: aws.String("4")},
  214. },
  215. }
  216. })
  217. err := req.Send()
  218. if err == nil {
  219. t.Fatalf("expect error, got nil")
  220. }
  221. if e, a := "InvalidChecksum", err.(awserr.Error).Code(); e != a {
  222. t.Errorf("expect %v, got %v", e, a)
  223. }
  224. if e, a := err.(awserr.Error).Message(), "invalid messages: 456, 789"; !strings.Contains(a, e) {
  225. t.Errorf("expect %v to be in %v, was not", e, a)
  226. }
  227. }