You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

69 lines
2.0 KiB

  1. package ec2_test
  2. import (
  3. "github.com/goamz/goamz/aws"
  4. "github.com/goamz/goamz/ec2"
  5. . "gopkg.in/check.v1"
  6. )
  7. // EC2 ReST authentication docs: http://goo.gl/fQmAN
  8. var testAuth = aws.Auth{AccessKey: "user", SecretKey: "secret"}
  9. func (s *S) TestBasicSignature(c *C) {
  10. params := map[string]string{}
  11. ec2.Sign(testAuth, "GET", "/path", params, "localhost")
  12. c.Assert(params["SignatureVersion"], Equals, "2")
  13. c.Assert(params["SignatureMethod"], Equals, "HmacSHA256")
  14. expected := "6lSe5QyXum0jMVc7cOUz32/52ZnL7N5RyKRk/09yiK4="
  15. c.Assert(params["Signature"], Equals, expected)
  16. }
  17. func (s *S) TestParamSignature(c *C) {
  18. params := map[string]string{
  19. "param1": "value1",
  20. "param2": "value2",
  21. "param3": "value3",
  22. }
  23. ec2.Sign(testAuth, "GET", "/path", params, "localhost")
  24. expected := "XWOR4+0lmK8bD8CGDGZ4kfuSPbb2JibLJiCl/OPu1oU="
  25. c.Assert(params["Signature"], Equals, expected)
  26. }
  27. func (s *S) TestManyParams(c *C) {
  28. params := map[string]string{
  29. "param1": "value10",
  30. "param2": "value2",
  31. "param3": "value3",
  32. "param4": "value4",
  33. "param5": "value5",
  34. "param6": "value6",
  35. "param7": "value7",
  36. "param8": "value8",
  37. "param9": "value9",
  38. "param10": "value1",
  39. }
  40. ec2.Sign(testAuth, "GET", "/path", params, "localhost")
  41. expected := "di0sjxIvezUgQ1SIL6i+C/H8lL+U0CQ9frLIak8jkVg="
  42. c.Assert(params["Signature"], Equals, expected)
  43. }
  44. func (s *S) TestEscaping(c *C) {
  45. params := map[string]string{"Nonce": "+ +"}
  46. ec2.Sign(testAuth, "GET", "/path", params, "localhost")
  47. c.Assert(params["Nonce"], Equals, "+ +")
  48. expected := "bqffDELReIqwjg/W0DnsnVUmfLK4wXVLO4/LuG+1VFA="
  49. c.Assert(params["Signature"], Equals, expected)
  50. }
  51. func (s *S) TestSignatureExample1(c *C) {
  52. params := map[string]string{
  53. "Timestamp": "2009-02-01T12:53:20+00:00",
  54. "Version": "2007-11-07",
  55. "Action": "ListDomains",
  56. }
  57. ec2.Sign(aws.Auth{AccessKey: "access", SecretKey: "secret"}, "GET", "/", params, "sdb.amazonaws.com")
  58. expected := "okj96/5ucWBSc1uR2zXVfm6mDHtgfNv657rRtt/aunQ="
  59. c.Assert(params["Signature"], Equals, expected)
  60. }