Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 

225 строки
8.0 KiB

  1. package ec2_test
  2. import (
  3. "github.com/goamz/goamz/ec2"
  4. . "gopkg.in/check.v1"
  5. )
  6. func (s *S) TestCreateRouteTable(c *C) {
  7. testServer.Response(200, nil, CreateRouteTableExample)
  8. resp, err := s.ec2.CreateRouteTable("vpc-11ad4878")
  9. req := testServer.WaitRequest()
  10. c.Assert(req.Form["Action"], DeepEquals, []string{"CreateRouteTable"})
  11. c.Assert(req.Form["VpcId"], DeepEquals, []string{"vpc-11ad4878"})
  12. c.Assert(err, IsNil)
  13. c.Assert(resp.RequestId, Equals, "59abcd43-35bd-4eac-99ed-be587EXAMPLE")
  14. c.Assert(resp.RouteTable.Id, Equals, "rtb-f9ad4890")
  15. c.Assert(resp.RouteTable.VpcId, Equals, "vpc-11ad4878")
  16. c.Assert(resp.RouteTable.Routes, HasLen, 1)
  17. c.Assert(resp.RouteTable.Routes[0], DeepEquals, ec2.Route{
  18. DestinationCidrBlock: "10.0.0.0/22",
  19. GatewayId: "local",
  20. State: "active",
  21. })
  22. c.Assert(resp.RouteTable.Associations, HasLen, 0)
  23. c.Assert(resp.RouteTable.Tags, HasLen, 0)
  24. }
  25. func (s *S) TestDescribeRouteTables(c *C) {
  26. testServer.Response(200, nil, DescribeRouteTablesExample)
  27. filter := ec2.NewFilter()
  28. filter.Add("key1", "value1")
  29. filter.Add("key2", "value2", "value3")
  30. resp, err := s.ec2.DescribeRouteTables([]string{"rt1", "rt2"}, nil)
  31. req := testServer.WaitRequest()
  32. c.Assert(req.Form["Action"], DeepEquals, []string{"DescribeRouteTables"})
  33. c.Assert(req.Form["RouteTableId.1"], DeepEquals, []string{"rt1"})
  34. c.Assert(req.Form["RouteTableId.2"], DeepEquals, []string{"rt2"})
  35. c.Assert(err, IsNil)
  36. c.Assert(resp.RequestId, Equals, "6f570b0b-9c18-4b07-bdec-73740dcf861aEXAMPLE")
  37. c.Assert(resp.RouteTables, HasLen, 2)
  38. rt1 := resp.RouteTables[0]
  39. c.Assert(rt1.Id, Equals, "rtb-13ad487a")
  40. c.Assert(rt1.VpcId, Equals, "vpc-11ad4878")
  41. c.Assert(rt1.Routes, DeepEquals, []ec2.Route{
  42. {DestinationCidrBlock: "10.0.0.0/22", GatewayId: "local", State: "active", Origin: "CreateRouteTable"},
  43. })
  44. c.Assert(rt1.Associations, DeepEquals, []ec2.RouteTableAssociation{
  45. {Id: "rtbassoc-12ad487b", RouteTableId: "rtb-13ad487a", Main: true},
  46. })
  47. rt2 := resp.RouteTables[1]
  48. c.Assert(rt2.Id, Equals, "rtb-f9ad4890")
  49. c.Assert(rt2.VpcId, Equals, "vpc-11ad4878")
  50. c.Assert(rt2.Routes, DeepEquals, []ec2.Route{
  51. {DestinationCidrBlock: "10.0.0.0/22", GatewayId: "local", State: "active", Origin: "CreateRouteTable"},
  52. {DestinationCidrBlock: "0.0.0.0/0", GatewayId: "igw-eaad4883", State: "active"},
  53. })
  54. c.Assert(rt2.Associations, DeepEquals, []ec2.RouteTableAssociation{
  55. {Id: "rtbassoc-faad4893", RouteTableId: "rtb-f9ad4890", SubnetId: "subnet-15ad487c"},
  56. })
  57. }
  58. func (s *S) TestAssociateRouteTable(c *C) {
  59. testServer.Response(200, nil, AssociateRouteTableExample)
  60. resp, err := s.ec2.AssociateRouteTable("rtb-e4ad488d", "subnet-15ad487c")
  61. req := testServer.WaitRequest()
  62. c.Assert(req.Form["Action"], DeepEquals, []string{"AssociateRouteTable"})
  63. c.Assert(req.Form["RouteTableId"], DeepEquals, []string{"rtb-e4ad488d"})
  64. c.Assert(req.Form["SubnetId"], DeepEquals, []string{"subnet-15ad487c"})
  65. c.Assert(err, IsNil)
  66. c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE")
  67. c.Assert(resp.AssociationId, Equals, "rtbassoc-f8ad4891")
  68. }
  69. func (s *S) TestDisassociateRouteTable(c *C) {
  70. testServer.Response(200, nil, DisassociateRouteTableExample)
  71. resp, err := s.ec2.DisassociateRouteTable("rtbassoc-f8ad4891")
  72. req := testServer.WaitRequest()
  73. c.Assert(req.Form["Action"], DeepEquals, []string{"DisassociateRouteTable"})
  74. c.Assert(req.Form["AssociationId"], DeepEquals, []string{"rtbassoc-f8ad4891"})
  75. c.Assert(err, IsNil)
  76. c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE")
  77. c.Assert(resp.Return, Equals, true)
  78. }
  79. func (s *S) TestReplaceRouteTableAssociation(c *C) {
  80. testServer.Response(200, nil, ReplaceRouteTableAssociationExample)
  81. resp, err := s.ec2.ReplaceRouteTableAssociation("rtbassoc-f8ad4891", "rtb-f9ad4890")
  82. req := testServer.WaitRequest()
  83. c.Assert(req.Form["Action"], DeepEquals, []string{"ReplaceRouteTableAssociation"})
  84. c.Assert(req.Form["RouteTableId"], DeepEquals, []string{"rtb-f9ad4890"})
  85. c.Assert(req.Form["AssociationId"], DeepEquals, []string{"rtbassoc-f8ad4891"})
  86. c.Assert(err, IsNil)
  87. c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-88ed-be587EXAMPLE")
  88. c.Assert(resp.NewAssociationId, Equals, "rtbassoc-faad2958")
  89. }
  90. func (s *S) TestDeleteRouteTable(c *C) {
  91. testServer.Response(200, nil, DeleteRouteTableExample)
  92. resp, err := s.ec2.DeleteRouteTable("rtb-f9ad4890")
  93. req := testServer.WaitRequest()
  94. c.Assert(req.Form["Action"], DeepEquals, []string{"DeleteRouteTable"})
  95. c.Assert(req.Form["RouteTableId"], DeepEquals, []string{"rtb-f9ad4890"})
  96. c.Assert(err, IsNil)
  97. c.Assert(resp.RequestId, Equals, "49dbff89-35bd-4eac-99ed-be587EXAMPLE")
  98. c.Assert(resp.Return, Equals, true)
  99. }
  100. func (s *S) TestDescribeVpcs(c *C) {
  101. testServer.Response(200, nil, DescribeVpcsExample)
  102. filter := ec2.NewFilter()
  103. filter.Add("key1", "value1")
  104. filter.Add("key2", "value2", "value3")
  105. resp, err := s.ec2.DescribeVpcs([]string{"id1", "id2"}, filter)
  106. req := testServer.WaitRequest()
  107. c.Assert(req.Form["Action"], DeepEquals, []string{"DescribeVpcs"})
  108. c.Assert(req.Form["VpcId.1"], DeepEquals, []string{"id1"})
  109. c.Assert(req.Form["VpcId.2"], DeepEquals, []string{"id2"})
  110. c.Assert(req.Form["VpcId.3"], IsNil)
  111. c.Assert(req.Form["Filter.1.Name"], DeepEquals, []string{"key1"})
  112. c.Assert(req.Form["Filter.1.Value.1"], DeepEquals, []string{"value1"})
  113. c.Assert(req.Form["Filter.1.Value.2"], IsNil)
  114. c.Assert(req.Form["Filter.2.Name"], DeepEquals, []string{"key2"})
  115. c.Assert(req.Form["Filter.2.Value.1"], DeepEquals, []string{"value2"})
  116. c.Assert(req.Form["Filter.2.Value.2"], DeepEquals, []string{"value3"})
  117. c.Assert(err, IsNil)
  118. c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
  119. c.Assert(resp.VPCs[0].VpcId, Equals, "vpc-1a2b3c4d")
  120. c.Assert(resp.VPCs, HasLen, 1)
  121. }
  122. func (s *S) TestCreateVpc(c *C) {
  123. testServer.Response(200, nil, CreateVpcExample)
  124. resp, err := s.ec2.CreateVpc("foo", "bar")
  125. req := testServer.WaitRequest()
  126. c.Assert(req.Form["CidrBlock"], DeepEquals, []string{"foo"})
  127. c.Assert(req.Form["InstanceTenancy"], DeepEquals, []string{"bar"})
  128. c.Assert(err, IsNil)
  129. c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
  130. c.Assert(resp.VPC.VpcId, Equals, "vpc-1a2b3c4d")
  131. c.Assert(resp.VPC.State, Equals, "pending")
  132. c.Assert(resp.VPC.CidrBlock, Equals, "10.0.0.0/16")
  133. c.Assert(resp.VPC.DHCPOptionsID, Equals, "dopt-1a2b3c4d2")
  134. c.Assert(resp.VPC.InstanceTenancy, Equals, "default")
  135. }
  136. func (s *S) TestDeleteVpc(c *C) {
  137. testServer.Response(200, nil, DeleteVpcExample)
  138. resp, err := s.ec2.DeleteVpc("id1")
  139. req := testServer.WaitRequest()
  140. c.Assert(req.Form["VpcId"], DeepEquals, []string{"id1"})
  141. c.Assert(err, IsNil)
  142. c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
  143. }
  144. func (s *S) TestCreateRoute(c *C) {
  145. testServer.Response(200, nil, CreateRouteExample)
  146. options := ec2.CreateRoute{
  147. DestinationCidrBlock: "12.34.56.78/90",
  148. GatewayId: "foo",
  149. InstanceId: "i-bar",
  150. NetworkInterfaceId: "foobar",
  151. VpcPeeringConnectionId: "barfoo",
  152. }
  153. resp, err := s.ec2.CreateRoute("rtb-deadbeef", &options)
  154. req := testServer.WaitRequest()
  155. c.Assert(req.Form["RouteTableId"], DeepEquals, []string{"rtb-deadbeef"})
  156. c.Assert(req.Form["DestinationCidrBlock"], DeepEquals, []string{"12.34.56.78/90"})
  157. c.Assert(req.Form["GatewayId"], DeepEquals, []string{"foo"})
  158. c.Assert(req.Form["InstanceId"], DeepEquals, []string{"i-bar"})
  159. c.Assert(req.Form["NetworkInterfaceId"], DeepEquals, []string{"foobar"})
  160. c.Assert(req.Form["VpcPeeringConnectionId"], DeepEquals, []string{"barfoo"})
  161. c.Assert(err, IsNil)
  162. c.Assert(resp.RequestId, Equals, "b4998629-3000-437f-b382-cc96fEXAMPLE")
  163. c.Assert(resp.Return, Equals, true)
  164. }
  165. func (s *S) TestDeleteRoute(c *C) {
  166. testServer.Response(200, nil, DeleteRouteExample)
  167. resp, err := s.ec2.DeleteRoute("rtb-baddcafe", "foobar")
  168. req := testServer.WaitRequest()
  169. c.Assert(req.Form["RouteTableId"], DeepEquals, []string{"rtb-baddcafe"})
  170. c.Assert(req.Form["DestinationCidrBlock"], DeepEquals, []string{"foobar"})
  171. c.Assert(err, IsNil)
  172. c.Assert(resp.RequestId, Equals, "59dbff89-35bd-4eac-99ed-be587EXAMPLE")
  173. c.Assert(resp.Return, Equals, true)
  174. }