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

/sdk/test/IntegrationTests/Tests/IAM/UserTests.cs

https://gitlab.com/CORP-RESELLER/aws-sdk-net
C# | 343 lines | 277 code | 57 blank | 9 comment | 19 complexity | 86a2d9c50512faa799f59e415ba12786 MD5 | raw file
  1. using System;
  2. using System.Text;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using Microsoft.VisualStudio.TestTools.UnitTesting;
  6. using AWSSDK_DotNet.IntegrationTests.Utils;
  7. using Amazon.IdentityManagement;
  8. using Amazon.IdentityManagement.Model;
  9. namespace AWSSDK_DotNet.IntegrationTests.Tests.IAM
  10. {
  11. /// <summary>
  12. /// Summary description for GetUserTest
  13. /// </summary>
  14. [TestClass]
  15. public class UserTests : TestBase<AmazonIdentityManagementServiceClient>
  16. {
  17. public UserTests()
  18. {
  19. }
  20. private TestContext testContextInstance;
  21. /// <summary>
  22. ///Gets or sets the test context which provides
  23. ///information about and functionality for the current test run.
  24. ///</summary>
  25. public TestContext TestContext
  26. {
  27. get
  28. {
  29. return testContextInstance;
  30. }
  31. set
  32. {
  33. testContextInstance = value;
  34. }
  35. }
  36. [ClassCleanup]
  37. public static void Cleanup()
  38. {
  39. BaseClean();
  40. }
  41. [TestInitialize]
  42. public void PreTestRun()
  43. {
  44. IAMUtil.DeleteUsersAndGroupsInTestNameSpace(Client);
  45. }
  46. [TestMethod]
  47. [TestCategory("IdentityManagement")]
  48. public void TestGetUserImplicit()
  49. {
  50. GetUserRequest request = new GetUserRequest();
  51. GetUserResponse response = Client.GetUser(request);
  52. Assert.IsFalse(string.IsNullOrEmpty(response.User.Arn));
  53. // The assert will succeed if you run with root credentials.
  54. //Assert.AreEqual(string.Format("arn:aws:iam::{0}:root", response.User.UserId), response.User.Arn);
  55. }
  56. [TestMethod]
  57. [TestCategory("IdentityManagement")]
  58. public void TestCreateGetUser()
  59. {
  60. string username = "sdk-testuser-" + DateTime.Now.Ticks;
  61. try
  62. {
  63. CreateUserRequest request = new CreateUserRequest() { UserName = username, Path = IAMUtil.TEST_PATH };
  64. CreateUserResponse response = Client.CreateUser(request);
  65. Assert.AreEqual(username, response.User.UserName);
  66. GetUserResponse getResponse = Client.GetUser(new GetUserRequest() { UserName = username });
  67. Assert.AreEqual(username, getResponse.User.UserName);
  68. Assert.AreNotEqual(DateTime.MinValue, getResponse.User.CreateDate);
  69. }
  70. finally
  71. {
  72. Client.DeleteUser(new DeleteUserRequest() { UserName = username });
  73. }
  74. }
  75. [TestMethod]
  76. [TestCategory("IdentityManagement")]
  77. public void TestListUsers()
  78. {
  79. string username1 = IAMUtil.CreateTestUser(Client);
  80. string username2 = IAMUtil.CreateTestUser(Client);
  81. string username3 = IAMUtil.CreateTestUser(Client);
  82. try
  83. {
  84. ListUsersResponse response = Client.ListUsers(new ListUsersRequest() { PathPrefix = IAMUtil.TEST_PATH });
  85. Assert.AreEqual(3, response.Users.Count());
  86. int matches = 0;
  87. foreach(User user in response.Users)
  88. {
  89. if (user.UserName.Equals(username1))
  90. matches |= 1;
  91. if (user.UserName.Equals(username2))
  92. matches |= 2;
  93. if (user.UserName.Equals(username3))
  94. matches |= 4;
  95. }
  96. Assert.AreEqual(7, matches);
  97. }
  98. finally
  99. {
  100. IAMUtil.DeleteTestUsers(Client, username1, username2, username3);
  101. }
  102. }
  103. [TestMethod]
  104. [TestCategory("IdentityManagement")]
  105. public void TestUserWithPath()
  106. {
  107. string username = "sdk-testuser-" + DateTime.Now.Ticks;
  108. string path = IAMUtil.MakePath("one", "two", "three");
  109. try
  110. {
  111. Client.CreateUser(new CreateUserRequest() { UserName = username, Path = path });
  112. GetUserResponse response = Client.GetUser(new GetUserRequest() { UserName = username });
  113. Assert.AreEqual(username, response.User.UserName);
  114. Assert.AreEqual(path, response.User.Path);
  115. }
  116. finally
  117. {
  118. IAMUtil.DeleteTestUsers(Client, username);
  119. }
  120. }
  121. [TestMethod]
  122. [TestCategory("IdentityManagement")]
  123. public void TestListUsersByPath()
  124. {
  125. string username1 = "sdk-testuser1-" + DateTime.Now.Ticks;
  126. string username2 = "sdk-testuser2-" + DateTime.Now.Ticks;
  127. string username3 = "sdk-testuser3-" + DateTime.Now.Ticks;
  128. string username4 = "sdk-testuser4-" + DateTime.Now.Ticks;
  129. string pathA = IAMUtil.MakePath("A");
  130. string pathB = IAMUtil.MakePath("B");
  131. try
  132. {
  133. Client.CreateUser(new CreateUserRequest() { UserName = username1, Path = pathA });
  134. Client.CreateUser(new CreateUserRequest() { UserName = username2, Path = pathA });
  135. Client.CreateUser(new CreateUserRequest() { UserName = username3, Path = pathB });
  136. Client.CreateUser(new CreateUserRequest() { UserName = username4, Path = pathA });
  137. ListUsersResponse response = Client.ListUsers(new ListUsersRequest() { PathPrefix = pathA });
  138. Assert.AreEqual(3, response.Users.Count());
  139. int matches = 0;
  140. foreach (User u in response.Users)
  141. {
  142. if (u.UserName.Equals(username1))
  143. matches |= 1;
  144. if (u.UserName.Equals(username2))
  145. matches |= 2;
  146. if (u.UserName.Equals(username4))
  147. matches |= 4;
  148. if (u.UserName.Equals(username3))
  149. Assert.Fail();
  150. }
  151. Assert.AreEqual(7, matches);
  152. response = Client.ListUsers(new ListUsersRequest(){ PathPrefix = pathB });
  153. Assert.AreEqual(1, response.Users.Count());
  154. matches = 0;
  155. foreach (User u in response.Users)
  156. {
  157. if (u.UserName.Equals(username1))
  158. Assert.Fail();
  159. if (u.UserName.Equals(username2))
  160. Assert.Fail();
  161. if (u.UserName.Equals(username4))
  162. Assert.Fail();
  163. if (u.UserName.Equals(username3))
  164. matches = 1;
  165. }
  166. Assert.AreEqual(1, matches);
  167. response = Client.ListUsers(new ListUsersRequest(){ PathPrefix = IAMUtil.TEST_PATH });
  168. Assert.AreEqual(4, response.Users.Count());
  169. }
  170. finally
  171. {
  172. IAMUtil.DeleteTestUsers(Client, username1, username2, username3, username4);
  173. }
  174. }
  175. [TestMethod]
  176. [TestCategory("IdentityManagement")]
  177. public void TestListUsersMaxResults()
  178. {
  179. string username1 = IAMUtil.CreateTestUser(Client);
  180. string username2 = IAMUtil.CreateTestUser(Client);
  181. string username3 = IAMUtil.CreateTestUser(Client);
  182. string username4 = IAMUtil.CreateTestUser(Client);
  183. try
  184. {
  185. ListUsersResponse response = Client.ListUsers(new ListUsersRequest() { MaxItems = 2, PathPrefix = IAMUtil.TEST_PATH });
  186. Assert.AreEqual(2, response.Users.Count());
  187. Assert.AreEqual(true, response.IsTruncated);
  188. int matches = 0;
  189. foreach (User u in response.Users)
  190. {
  191. if (u.UserName.Equals(username1))
  192. matches |= 1;
  193. if (u.UserName.Equals(username2))
  194. matches |= 2;
  195. if (u.UserName.Equals(username4))
  196. matches |= 3;
  197. if (u.UserName.Equals(username3))
  198. matches |= 4;
  199. }
  200. string marker = response.Marker;
  201. response = Client.ListUsers(new ListUsersRequest() { PathPrefix = IAMUtil.TEST_PATH, Marker = marker });
  202. Assert.AreEqual(2, response.Users.Count());
  203. Assert.AreEqual(false, response.IsTruncated);
  204. foreach (User u in response.Users)
  205. {
  206. if (u.UserName.Equals(username1))
  207. matches |= 1;
  208. if (u.UserName.Equals(username2))
  209. matches |= 2;
  210. if (u.UserName.Equals(username4))
  211. matches |= 3;
  212. if (u.UserName.Equals(username3))
  213. matches |= 4;
  214. }
  215. Assert.AreEqual(7, matches);
  216. }
  217. finally
  218. {
  219. IAMUtil.DeleteTestUsers(Client, username1, username2, username3, username4);
  220. }
  221. }
  222. [TestMethod]
  223. [TestCategory("IdentityManagement")]
  224. public void TestUpdateUser()
  225. {
  226. string
  227. username = "sdk-testuser-" + DateTime.Now.Ticks,
  228. newusername = "sdk-testnewuser-" + DateTime.Now.Ticks;
  229. string
  230. firstPath = IAMUtil.MakePath("first"),
  231. secondPath = IAMUtil.MakePath("second");
  232. try
  233. {
  234. Client.CreateUser(new CreateUserRequest() { UserName = username, Path = firstPath });
  235. GetUserResponse response = Client.GetUser(new GetUserRequest() { UserName = username });
  236. Assert.AreEqual(firstPath, response.User.Path);
  237. string id = response.User.UserId;
  238. Client.UpdateUser(new UpdateUserRequest() { UserName = username, NewPath = secondPath, NewUserName = newusername });
  239. response = Client.GetUser(new GetUserRequest() { UserName = newusername });
  240. Assert.AreEqual(newusername, response.User.UserName);
  241. Assert.AreEqual(secondPath, response.User.Path);
  242. Assert.AreEqual(id, response.User.UserId);
  243. }
  244. finally
  245. {
  246. Client.DeleteUser(new DeleteUserRequest() { UserName = newusername });
  247. }
  248. }
  249. [TestMethod]
  250. [TestCategory("IdentityManagement")]
  251. [ExpectedException(typeof(NoSuchEntityException))]
  252. public void TestDeleteUser()
  253. {
  254. string username = "sdk-testuser-" + DateTime.Now.Ticks;
  255. Client.CreateUser(new CreateUserRequest() {UserName = username, Path = IAMUtil.TEST_PATH });
  256. GetUserResponse response = Client.GetUser(new GetUserRequest() { UserName = username });
  257. Assert.AreEqual(username, response.User.UserName);
  258. Client.DeleteUser(new DeleteUserRequest() { UserName = username });
  259. Client.GetUser(new GetUserRequest() { UserName = username });
  260. }
  261. [TestMethod]
  262. [TestCategory("IdentityManagement")]
  263. [ExpectedException(typeof(EntityAlreadyExistsException))]
  264. public void TestDoubleCreateUser()
  265. {
  266. string username = "sdk-testuser-" + DateTime.Now.Ticks;
  267. try
  268. {
  269. Client.CreateUser(new CreateUserRequest() { UserName = username, Path = IAMUtil.TEST_PATH });
  270. Client.CreateUser(new CreateUserRequest() { UserName = username, Path = IAMUtil.TEST_PATH });
  271. }
  272. finally
  273. {
  274. Client.DeleteUser(new DeleteUserRequest() { UserName = username });
  275. }
  276. }
  277. [TestMethod]
  278. [TestCategory("IdentityManagement")]
  279. [ExpectedException(typeof(NoSuchEntityException))]
  280. public void TestUpdateNonexistantUser()
  281. {
  282. string username = "sdk-testuser-" + DateTime.Now.Ticks;
  283. Client.UpdateUser(new UpdateUserRequest() { UserName = username, NewPath = "/lala/" });
  284. }
  285. }
  286. }