Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 

451 righe
17 KiB

  1. package iam_test
  2. import (
  3. "strings"
  4. "testing"
  5. "time"
  6. "github.com/goamz/goamz/aws"
  7. "github.com/goamz/goamz/iam"
  8. "github.com/goamz/goamz/testutil"
  9. . "gopkg.in/check.v1"
  10. )
  11. func Test(t *testing.T) {
  12. TestingT(t)
  13. }
  14. type S struct {
  15. iam *iam.IAM
  16. }
  17. var _ = Suite(&S{})
  18. var testServer = testutil.NewHTTPServer()
  19. func (s *S) SetUpSuite(c *C) {
  20. testServer.Start()
  21. auth := aws.Auth{AccessKey: "abc", SecretKey: "123"}
  22. s.iam = iam.NewWithClient(auth, aws.Region{IAMEndpoint: testServer.URL}, testutil.DefaultClient)
  23. }
  24. func (s *S) TearDownTest(c *C) {
  25. testServer.Flush()
  26. }
  27. func (s *S) TestCreateUser(c *C) {
  28. testServer.Response(200, nil, CreateUserExample)
  29. resp, err := s.iam.CreateUser("Bob", "/division_abc/subdivision_xyz/")
  30. values := testServer.WaitRequest().URL.Query()
  31. c.Assert(values.Get("Action"), Equals, "CreateUser")
  32. c.Assert(values.Get("UserName"), Equals, "Bob")
  33. c.Assert(values.Get("Path"), Equals, "/division_abc/subdivision_xyz/")
  34. c.Assert(err, IsNil)
  35. c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
  36. expected := iam.User{
  37. Path: "/division_abc/subdivision_xyz/",
  38. Name: "Bob",
  39. Id: "AIDACKCEVSQ6C2EXAMPLE",
  40. Arn: "arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/Bob",
  41. }
  42. c.Assert(resp.User, DeepEquals, expected)
  43. }
  44. func (s *S) TestCreateUserConflict(c *C) {
  45. testServer.Response(409, nil, DuplicateUserExample)
  46. resp, err := s.iam.CreateUser("Bob", "/division_abc/subdivision_xyz/")
  47. testServer.WaitRequest()
  48. c.Assert(resp, IsNil)
  49. c.Assert(err, NotNil)
  50. e, ok := err.(*iam.Error)
  51. c.Assert(ok, Equals, true)
  52. c.Assert(e.Message, Equals, "User with name Bob already exists.")
  53. c.Assert(e.Code, Equals, "EntityAlreadyExists")
  54. }
  55. func (s *S) TestGetUser(c *C) {
  56. testServer.Response(200, nil, GetUserExample)
  57. resp, err := s.iam.GetUser("Bob")
  58. values := testServer.WaitRequest().URL.Query()
  59. c.Assert(values.Get("Action"), Equals, "GetUser")
  60. c.Assert(values.Get("UserName"), Equals, "Bob")
  61. c.Assert(err, IsNil)
  62. c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
  63. expected := iam.User{
  64. Path: "/division_abc/subdivision_xyz/",
  65. Name: "Bob",
  66. Id: "AIDACKCEVSQ6C2EXAMPLE",
  67. Arn: "arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/Bob",
  68. }
  69. c.Assert(resp.User, DeepEquals, expected)
  70. }
  71. func (s *S) TestDeleteUser(c *C) {
  72. testServer.Response(200, nil, RequestIdExample)
  73. resp, err := s.iam.DeleteUser("Bob")
  74. values := testServer.WaitRequest().URL.Query()
  75. c.Assert(values.Get("Action"), Equals, "DeleteUser")
  76. c.Assert(values.Get("UserName"), Equals, "Bob")
  77. c.Assert(err, IsNil)
  78. c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
  79. }
  80. func (s *S) TestCreateGroup(c *C) {
  81. testServer.Response(200, nil, CreateGroupExample)
  82. resp, err := s.iam.CreateGroup("Admins", "/admins/")
  83. values := testServer.WaitRequest().URL.Query()
  84. c.Assert(values.Get("Action"), Equals, "CreateGroup")
  85. c.Assert(values.Get("GroupName"), Equals, "Admins")
  86. c.Assert(values.Get("Path"), Equals, "/admins/")
  87. c.Assert(err, IsNil)
  88. c.Assert(resp.Group.Path, Equals, "/admins/")
  89. c.Assert(resp.Group.Name, Equals, "Admins")
  90. c.Assert(resp.Group.Id, Equals, "AGPACKCEVSQ6C2EXAMPLE")
  91. c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
  92. }
  93. func (s *S) TestCreateGroupWithoutPath(c *C) {
  94. testServer.Response(200, nil, CreateGroupExample)
  95. _, err := s.iam.CreateGroup("Managers", "")
  96. values := testServer.WaitRequest().URL.Query()
  97. c.Assert(values.Get("Action"), Equals, "CreateGroup")
  98. c.Assert(err, IsNil)
  99. _, ok := map[string][]string(values)["Path"]
  100. c.Assert(ok, Equals, false)
  101. }
  102. func (s *S) TestDeleteGroup(c *C) {
  103. testServer.Response(200, nil, RequestIdExample)
  104. resp, err := s.iam.DeleteGroup("Admins")
  105. values := testServer.WaitRequest().URL.Query()
  106. c.Assert(values.Get("Action"), Equals, "DeleteGroup")
  107. c.Assert(values.Get("GroupName"), Equals, "Admins")
  108. c.Assert(err, IsNil)
  109. c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
  110. }
  111. func (s *S) TestListGroups(c *C) {
  112. testServer.Response(200, nil, ListGroupsExample)
  113. resp, err := s.iam.Groups("/division_abc/")
  114. values := testServer.WaitRequest().URL.Query()
  115. c.Assert(values.Get("Action"), Equals, "ListGroups")
  116. c.Assert(values.Get("PathPrefix"), Equals, "/division_abc/")
  117. c.Assert(err, IsNil)
  118. c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
  119. expected := []iam.Group{
  120. {
  121. Path: "/division_abc/subdivision_xyz/",
  122. Name: "Admins",
  123. Id: "AGPACKCEVSQ6C2EXAMPLE",
  124. Arn: "arn:aws:iam::123456789012:group/Admins",
  125. },
  126. {
  127. Path: "/division_abc/subdivision_xyz/product_1234/engineering/",
  128. Name: "Test",
  129. Id: "AGP2MAB8DPLSRHEXAMPLE",
  130. Arn: "arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_1234/engineering/Test",
  131. },
  132. {
  133. Path: "/division_abc/subdivision_xyz/product_1234/",
  134. Name: "Managers",
  135. Id: "AGPIODR4TAW7CSEXAMPLE",
  136. Arn: "arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_1234/Managers",
  137. },
  138. }
  139. c.Assert(resp.Groups, DeepEquals, expected)
  140. }
  141. func (s *S) TestListGroupsWithoutPathPrefix(c *C) {
  142. testServer.Response(200, nil, ListGroupsExample)
  143. _, err := s.iam.Groups("")
  144. values := testServer.WaitRequest().URL.Query()
  145. c.Assert(values.Get("Action"), Equals, "ListGroups")
  146. c.Assert(err, IsNil)
  147. _, ok := map[string][]string(values)["PathPrefix"]
  148. c.Assert(ok, Equals, false)
  149. }
  150. func (s *S) TestCreateAccessKey(c *C) {
  151. testServer.Response(200, nil, CreateAccessKeyExample)
  152. resp, err := s.iam.CreateAccessKey("Bob")
  153. values := testServer.WaitRequest().URL.Query()
  154. c.Assert(values.Get("Action"), Equals, "CreateAccessKey")
  155. c.Assert(values.Get("UserName"), Equals, "Bob")
  156. c.Assert(err, IsNil)
  157. c.Assert(resp.AccessKey.UserName, Equals, "Bob")
  158. c.Assert(resp.AccessKey.Id, Equals, "AKIAIOSFODNN7EXAMPLE")
  159. c.Assert(resp.AccessKey.Secret, Equals, "wJalrXUtnFEMI/K7MDENG/bPxRfiCYzEXAMPLEKEY")
  160. c.Assert(resp.AccessKey.Status, Equals, "Active")
  161. }
  162. func (s *S) TestDeleteAccessKey(c *C) {
  163. testServer.Response(200, nil, RequestIdExample)
  164. resp, err := s.iam.DeleteAccessKey("ysa8hasdhasdsi", "Bob")
  165. values := testServer.WaitRequest().URL.Query()
  166. c.Assert(values.Get("Action"), Equals, "DeleteAccessKey")
  167. c.Assert(values.Get("AccessKeyId"), Equals, "ysa8hasdhasdsi")
  168. c.Assert(values.Get("UserName"), Equals, "Bob")
  169. c.Assert(err, IsNil)
  170. c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
  171. }
  172. func (s *S) TestDeleteAccessKeyBlankUserName(c *C) {
  173. testServer.Response(200, nil, RequestIdExample)
  174. _, err := s.iam.DeleteAccessKey("ysa8hasdhasdsi", "")
  175. c.Assert(err, IsNil)
  176. values := testServer.WaitRequest().URL.Query()
  177. c.Assert(values.Get("Action"), Equals, "DeleteAccessKey")
  178. c.Assert(values.Get("AccessKeyId"), Equals, "ysa8hasdhasdsi")
  179. _, ok := map[string][]string(values)["UserName"]
  180. c.Assert(ok, Equals, false)
  181. }
  182. func (s *S) TestAccessKeys(c *C) {
  183. testServer.Response(200, nil, ListAccessKeyExample)
  184. resp, err := s.iam.AccessKeys("Bob")
  185. values := testServer.WaitRequest().URL.Query()
  186. c.Assert(values.Get("Action"), Equals, "ListAccessKeys")
  187. c.Assert(values.Get("UserName"), Equals, "Bob")
  188. c.Assert(err, IsNil)
  189. c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
  190. c.Assert(resp.AccessKeys, HasLen, 2)
  191. c.Assert(resp.AccessKeys[0].Id, Equals, "AKIAIOSFODNN7EXAMPLE")
  192. c.Assert(resp.AccessKeys[0].UserName, Equals, "Bob")
  193. c.Assert(resp.AccessKeys[0].Status, Equals, "Active")
  194. c.Assert(resp.AccessKeys[1].Id, Equals, "AKIAI44QH8DHBEXAMPLE")
  195. c.Assert(resp.AccessKeys[1].UserName, Equals, "Bob")
  196. c.Assert(resp.AccessKeys[1].Status, Equals, "Inactive")
  197. }
  198. func (s *S) TestAccessKeysBlankUserName(c *C) {
  199. testServer.Response(200, nil, ListAccessKeyExample)
  200. _, err := s.iam.AccessKeys("")
  201. c.Assert(err, IsNil)
  202. values := testServer.WaitRequest().URL.Query()
  203. c.Assert(values.Get("Action"), Equals, "ListAccessKeys")
  204. _, ok := map[string][]string(values)["UserName"]
  205. c.Assert(ok, Equals, false)
  206. }
  207. func (s *S) TestGetUserPolicy(c *C) {
  208. testServer.Response(200, nil, GetUserPolicyExample)
  209. resp, err := s.iam.GetUserPolicy("Bob", "AllAccessPolicy")
  210. values := testServer.WaitRequest().URL.Query()
  211. c.Assert(values.Get("Action"), Equals, "GetUserPolicy")
  212. c.Assert(values.Get("UserName"), Equals, "Bob")
  213. c.Assert(values.Get("PolicyName"), Equals, "AllAccessPolicy")
  214. c.Assert(err, IsNil)
  215. c.Assert(resp.Policy.UserName, Equals, "Bob")
  216. c.Assert(resp.Policy.Name, Equals, "AllAccessPolicy")
  217. c.Assert(strings.TrimSpace(resp.Policy.Document), Equals, `{"Statement":[{"Effect":"Allow","Action":"*","Resource":"*"}]}`)
  218. c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
  219. }
  220. func (s *S) TestPutUserPolicy(c *C) {
  221. document := `{
  222. "Statement": [
  223. {
  224. "Action": [
  225. "s3:*"
  226. ],
  227. "Effect": "Allow",
  228. "Resource": [
  229. "arn:aws:s3:::8shsns19s90ajahadsj/*",
  230. "arn:aws:s3:::8shsns19s90ajahadsj"
  231. ]
  232. }]
  233. }`
  234. testServer.Response(200, nil, RequestIdExample)
  235. resp, err := s.iam.PutUserPolicy("Bob", "AllAccessPolicy", document)
  236. req := testServer.WaitRequest()
  237. c.Assert(req.Method, Equals, "POST")
  238. c.Assert(req.FormValue("Action"), Equals, "PutUserPolicy")
  239. c.Assert(req.FormValue("PolicyName"), Equals, "AllAccessPolicy")
  240. c.Assert(req.FormValue("UserName"), Equals, "Bob")
  241. c.Assert(req.FormValue("PolicyDocument"), Equals, document)
  242. c.Assert(req.FormValue("Version"), Equals, "2010-05-08")
  243. c.Assert(err, IsNil)
  244. c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
  245. }
  246. func (s *S) TestDeleteUserPolicy(c *C) {
  247. testServer.Response(200, nil, RequestIdExample)
  248. resp, err := s.iam.DeleteUserPolicy("Bob", "AllAccessPolicy")
  249. values := testServer.WaitRequest().URL.Query()
  250. c.Assert(values.Get("Action"), Equals, "DeleteUserPolicy")
  251. c.Assert(values.Get("PolicyName"), Equals, "AllAccessPolicy")
  252. c.Assert(values.Get("UserName"), Equals, "Bob")
  253. c.Assert(err, IsNil)
  254. c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
  255. }
  256. func (s *S) TestAddUserToGroup(c *C) {
  257. testServer.Response(200, nil, AddUserToGroupExample)
  258. resp, err := s.iam.AddUserToGroup("admin1", "Admins")
  259. values := testServer.WaitRequest().URL.Query()
  260. c.Assert(values.Get("Action"), Equals, "AddUserToGroup")
  261. c.Assert(values.Get("GroupName"), Equals, "Admins")
  262. c.Assert(values.Get("UserName"), Equals, "admin1")
  263. c.Assert(err, IsNil)
  264. c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
  265. }
  266. func (s *S) TestListAccountAliases(c *C) {
  267. testServer.Response(200, nil, ListAccountAliasesExample)
  268. resp, err := s.iam.ListAccountAliases()
  269. values := testServer.WaitRequest().URL.Query()
  270. c.Assert(values.Get("Action"), Equals, "ListAccountAliases")
  271. c.Assert(err, IsNil)
  272. c.Assert(resp.AccountAliases[0], Equals, "foocorporation")
  273. c.Assert(resp.RequestId, Equals, "c5a076e9-f1b0-11df-8fbe-45274EXAMPLE")
  274. }
  275. func (s *S) TestCreateAccountAlias(c *C) {
  276. testServer.Response(200, nil, CreateAccountAliasExample)
  277. resp, err := s.iam.CreateAccountAlias("foobaz")
  278. values := testServer.WaitRequest().URL.Query()
  279. c.Assert(values.Get("Action"), Equals, "CreateAccountAlias")
  280. c.Assert(values.Get("AccountAlias"), Equals, "foobaz")
  281. c.Assert(err, IsNil)
  282. c.Assert(resp.RequestId, Equals, "36b5db08-f1b0-11df-8fbe-45274EXAMPLE")
  283. }
  284. func (s *S) TestDeleteAccountAlias(c *C) {
  285. testServer.Response(200, nil, DeleteAccountAliasExample)
  286. resp, err := s.iam.DeleteAccountAlias("foobaz")
  287. values := testServer.WaitRequest().URL.Query()
  288. c.Assert(values.Get("Action"), Equals, "DeleteAccountAlias")
  289. c.Assert(values.Get("AccountAlias"), Equals, "foobaz")
  290. c.Assert(err, IsNil)
  291. c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
  292. }
  293. func (s *S) TestUploadServerCertificate(c *C) {
  294. testServer.Response(200, nil, UploadServerCertificateExample)
  295. certificateBody := `
  296. -----BEGIN CERTIFICATE-----
  297. MIICdzCCAeCgAwIBAgIGANc+Ha2wMA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNVBAYT
  298. AlVTMRMwEQYDVQQKEwpBbWF6b24uY29tMQwwCgYDVQQLEwNBV1MxITAfBgNVBAMT
  299. GEFXUyBMaW1pdGVkLUFzc3VyYW5jZSBDQTAeFw0wOTAyMDQxNzE5MjdaFw0xMDAy
  300. MDQxNzE5MjdaMFIxCzAJBgNVBAYTAlVTMRMwEQYDVQQKEwpBbWF6b24uY29tMRcw
  301. FQYDVQQLEw5BV1MtRGV2ZWxvcGVyczEVMBMGA1UEAxMMNTdxNDl0c3ZwYjRtMIGf
  302. MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCpB/vsOwmT/O0td1RqzKjttSBaPjbr
  303. dqwNe9BrOyB08fw2+Ch5oonZYXfGUrT6mkYXH5fQot9HvASrzAKHO596FdJA6DmL
  304. ywdWe1Oggk7zFSXO1Xv+3vPrJtaYxYo3eRIp7w80PMkiOv6M0XK8ubcTouODeJbf
  305. suDqcLnLDxwsvwIDAQABo1cwVTAOBgNVHQ8BAf8EBAMCBaAwFgYDVR0lAQH/BAww
  306. CgYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQULGNaBphBumaKbDRK
  307. CAi0mH8B3mowDQYJKoZIhvcNAQEFBQADgYEAuKxhkXaCLGcqDuweKtO/AEw9ZePH
  308. wr0XqsaIK2HZboqruebXEGsojK4Ks0WzwgrEynuHJwTn760xe39rSqXWIOGrOBaX
  309. wFpWHVjTFMKk+tSDG1lssLHyYWWdFFU4AnejRGORJYNaRHgVTKjHphc5jEhHm0BX
  310. AEaHzTpmEXAMPLE=
  311. -----END CERTIFICATE-----
  312. `
  313. privateKey := `
  314. -----BEGIN DSA PRIVATE KEY-----
  315. MIIBugIBTTKBgQD33xToSXPJ6hr37L3+KNi3/7DgywlBcvlFPPSHIw3ORuO/22mT
  316. 8Cy5fT89WwNvZ3BPKWU6OZ38TQv3eWjNc/3U3+oqVNG2poX5nCPOtO1b96HYX2mR
  317. 3FTdH6FRKbQEhpDzZ6tRrjTHjMX6sT3JRWkBd2c4bGu+HUHO1H7QvrCTeQIVTKMs
  318. TCKCyrLiGhUWuUGNJUMU6y6zToGTHl84Tz7TPwDGDXuy/Dk5s4jTVr+xibROC/gS
  319. Qrs4Dzz3T1ze6lvU8S1KT9UsOB5FUJNTTPCPey+Lo4mmK6b23XdTyCIT8e2fsm2j
  320. jHHC1pIPiTkdLS3j6ZYjF8LY6TENFng+LDY/xwPOl7TJVoD3J/WXC2J9CEYq9o34
  321. kq6WWn3CgYTuo54nXUgnoCb3xdG8COFrg+oTbIkHTSzs3w5o/GGgKK7TDF3UlJjq
  322. vHNyJQ6kWBrQRR1Xp5KYQ4c/Dm5kef+62mH53HpcCELguWVcffuVQpmq3EWL9Zp9
  323. jobTJQ2VHjb5IVxiO6HRSd27di3njyrzUuJCyHSDTqwLJmTThpd6OTIUTL3Tc4m2
  324. 62TITdw53KWJEXAMPLE=
  325. -----END DSA PRIVATE KEY-----
  326. `
  327. params := &iam.UploadServerCertificateParams{
  328. ServerCertificateName: "ProdServerCert",
  329. Path: "/company/servercerts/",
  330. PrivateKey: privateKey,
  331. CertificateBody: certificateBody,
  332. }
  333. resp, err := s.iam.UploadServerCertificate(params)
  334. req := testServer.WaitRequest()
  335. c.Assert(req.Method, Equals, "POST")
  336. c.Assert(req.FormValue("Action"), Equals, "UploadServerCertificate")
  337. c.Assert(req.FormValue("CertificateBody"), Equals, certificateBody)
  338. c.Assert(req.FormValue("PrivateKey"), Equals, privateKey)
  339. c.Assert(req.FormValue("ServerCertificateName"), Equals, "ProdServerCert")
  340. c.Assert(req.FormValue("CertificateChain"), Equals, "")
  341. c.Assert(req.FormValue("Path"), Equals, "/company/servercerts/")
  342. c.Assert(req.FormValue("Version"), Equals, "2010-05-08")
  343. c.Assert(err, IsNil)
  344. ud, _ := time.Parse(time.RFC3339, "2010-05-08T01:02:03.004Z")
  345. exp, _ := time.Parse(time.RFC3339, "2012-05-08T01:02:03.004Z")
  346. expected := iam.ServerCertificateMetadata{
  347. Arn: "arn:aws:iam::123456789012:server-certificate/company/servercerts/ProdServerCert",
  348. ServerCertificateName: "ProdServerCert",
  349. ServerCertificateId: "ASCACKCEVSQ6C2EXAMPLE",
  350. Path: "/company/servercerts/",
  351. UploadDate: ud,
  352. Expiration: exp,
  353. }
  354. c.Assert(resp.ServerCertificateMetadata, DeepEquals, expected)
  355. c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
  356. }
  357. func (s *S) TestListServerCertificates(c *C) {
  358. testServer.Response(200, nil, ListServerCertificatesExample)
  359. params := &iam.ListServerCertificatesParams{
  360. Marker: "my-fake-marker",
  361. PathPrefix: "/some/fake/path",
  362. }
  363. resp, err := s.iam.ListServerCertificates(params)
  364. req := testServer.WaitRequest()
  365. c.Assert(err, IsNil)
  366. c.Assert(req.Method, Equals, "GET")
  367. c.Assert(req.FormValue("Action"), Equals, "ListServerCertificates")
  368. c.Assert(req.FormValue("Marker"), Equals, "my-fake-marker")
  369. c.Assert(req.FormValue("PathPrefix"), Equals, "/some/fake/path")
  370. c.Assert(req.FormValue("Version"), Equals, "2010-05-08")
  371. uploadDate, _ := time.Parse(time.RFC3339, "2010-05-08T01:02:03.004Z")
  372. expirationDate, _ := time.Parse(time.RFC3339, "2012-05-08T01:02:03.004Z")
  373. expected := []iam.ServerCertificateMetadata{
  374. {
  375. Arn: "arn:aws:iam::123456789012:server-certificate/company/servercerts/ProdServerCert",
  376. ServerCertificateName: "ProdServerCert",
  377. ServerCertificateId: "ASCACKCEVSQ6C2EXAMPLE1",
  378. Path: "/some/fake/path",
  379. UploadDate: uploadDate,
  380. Expiration: expirationDate,
  381. },
  382. {
  383. Arn: "arn:aws:iam::123456789012:server-certificate/company/servercerts/BetaServerCert",
  384. ServerCertificateName: "BetaServerCert",
  385. ServerCertificateId: "ASCACKCEVSQ6C2EXAMPLE2",
  386. Path: "/some/fake/path",
  387. UploadDate: uploadDate,
  388. Expiration: expirationDate,
  389. },
  390. {
  391. Arn: "arn:aws:iam::123456789012:server-certificate/company/servercerts/TestServerCert",
  392. ServerCertificateName: "TestServerCert",
  393. ServerCertificateId: "ASCACKCEVSQ6C2EXAMPLE3",
  394. Path: "/some/fake/path",
  395. UploadDate: uploadDate,
  396. Expiration: expirationDate,
  397. },
  398. }
  399. c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eTHISDIFFERENTTEST")
  400. c.Assert(resp.IsTruncated, Equals, false)
  401. c.Assert(resp.ServerCertificates, DeepEquals, expected)
  402. }
  403. func (s *S) TestDeleteServerCertificate(c *C) {
  404. testServer.Response(200, nil, DeleteServerCertificateExample)
  405. resp, err := s.iam.DeleteServerCertificate("ProdServerCert")
  406. req := testServer.WaitRequest()
  407. c.Assert(req.FormValue("Action"), Equals, "DeleteServerCertificate")
  408. c.Assert(req.FormValue("ServerCertificateName"), Equals, "ProdServerCert")
  409. c.Assert(err, IsNil)
  410. c.Assert(resp.RequestId, Equals, "7a62c49f-347e-4fc4-9331-6e8eEXAMPLE")
  411. }