PageRenderTime 54ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 0ms

/Tests/UserTests.cs

https://gitlab.com/dvanwinkle/ZendeskApi_v2
C# | 303 lines | 220 code | 53 blank | 30 comment | 22 complexity | aaa292c797ffc3f82dfe9831624d3cc9 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading;
  8. using NUnit.Framework;
  9. using ZendeskApi_v2;
  10. using ZendeskApi_v2.Models.Constants;
  11. using ZendeskApi_v2.Models.Shared;
  12. using ZendeskApi_v2.Models.Tickets;
  13. using ZendeskApi_v2.Models.Users;
  14. using ZendeskApi_v2.Requests;
  15. namespace Tests
  16. {
  17. [TestFixture]
  18. [Category("Users")]
  19. public class UserTests
  20. {
  21. ZendeskApi api = new ZendeskApi(Settings.Site, Settings.Email, Settings.Password);
  22. [Test]
  23. public void CanGetUsers()
  24. {
  25. var res = api.Users.GetAllUsers();
  26. Assert.True(res.Count > 0);
  27. }
  28. [Test]
  29. public void CanGetUser()
  30. {
  31. var res = api.Users.GetUser(Settings.UserId);
  32. Assert.True(res.User.Id == Settings.UserId);
  33. }
  34. [Test]
  35. public void CanGetUsersInGroup()
  36. {
  37. var res = api.Users.GetUsersInGroup(Settings.GroupId);
  38. Assert.True(res.Count > 0);
  39. }
  40. [Test]
  41. public void CanGetUsersInOrg()
  42. {
  43. var res = api.Users.GetUsersInOrganization(Settings.OrganizationId);
  44. Assert.True(res.Count > 0);
  45. }
  46. [Test]
  47. public void CanCreateUpdateSuspendAndDeleteUser()
  48. {
  49. var user = new User()
  50. {
  51. Name = "test user72",
  52. Email = "test772@test.com",
  53. Role = "end-user",
  54. Verified = true,
  55. CustomFields = new Dictionary<string, object>()
  56. {
  57. {"user_dropdown", "option_1"}
  58. }
  59. };
  60. var res1 = api.Users.CreateUser(user);
  61. var userId = res1.User.Id ?? 0;
  62. Assert.IsTrue(res1.User.Id > 0);
  63. Assert.True(api.Users.SetUsersPassword(userId, "t34sssting"));
  64. Assert.True(api.Users.ChangeUsersPassword(userId, "t34sssting", "newpassw33rd"));
  65. res1.User.Phone = "555-555-5555";
  66. res1.User.RemotePhotoUrl = "http://i.imgur.com/b2gxj.jpg";
  67. var res2 = api.Users.UpdateUser(res1.User);
  68. var blah = api.Users.GetUser(res1.User.Id.Value);
  69. Assert.AreEqual(res1.User.Phone, res2.User.Phone);
  70. var res3 = api.Users.SuspendUser(res2.User.Id.Value);
  71. Assert.IsTrue(res3.User.Suspended);
  72. var res4 = api.Users.DeleteUser(res3.User.Id.Value);
  73. Assert.True(res4);
  74. //check the remote photo url
  75. //Assert.AreEqual(res1.User.RemotePhotoUrl, res2.User.RemotePhotoUrl);
  76. }
  77. //Bulk Create users is hard to test because of we don't know how long the job will take to complete. Test should pass if you run individually but might cause problems in parallel.
  78. //[Test]
  79. //public void CanBulkCreateUsers()
  80. //{
  81. // var users = new List<User>()
  82. // {
  83. // new User()
  84. // {
  85. // Name = "test user7",
  86. // Email = "test7@test.com",
  87. // },
  88. // new User()
  89. // {
  90. // Name = "test user8",
  91. // Email = "test8@test.com",
  92. // },
  93. // };
  94. // var res1 = api.Users.BulkCreateUsers(users);
  95. // Assert.IsNotEmpty(res1.JobStatus.Id);
  96. // Thread.Sleep(2000);
  97. // var user1 = api.Users.SearchByEmail(users[0].Email);
  98. // var user2 = api.Users.SearchByEmail(users[1].Email);
  99. // Assert.True(api.Users.DeleteUser(user1.Users[0].Id.Value));
  100. // Assert.True(api.Users.DeleteUser(user2.Users[0].Id.Value));
  101. //}
  102. [Test]
  103. public void CanFindUser()
  104. {
  105. //var res1 = api.Users.SearchByEmail(Settings.Email);
  106. var res1 = api.Users.SearchByEmail(Settings.ColloboratorEmail);
  107. Assert.True(res1.Users.Count > 0);
  108. }
  109. [Test]
  110. public void CanGetCurrentUser()
  111. {
  112. var res1 = api.Users.GetCurrentUser();
  113. Assert.True(res1.User.Id > 0);
  114. }
  115. [Test]
  116. public void CanGetUserIdentities()
  117. {
  118. var res = api.Users.GetCurrentUser();
  119. var res1 = api.Users.GetUserIdentities(res.User.Id.Value);
  120. Assert.Greater(res1.Identities[0].Id, 0);
  121. var res2 = api.Users.GetSpecificUserIdentity(res.User.Id.Value, res1.Identities[0].Id.Value);
  122. Assert.Greater(res2.Identity.Id, 0);
  123. }
  124. [Test]
  125. public void CanCreateUpdateAndDeleteIdentities()
  126. {
  127. var user = new User()
  128. {
  129. Name = "test user10",
  130. Email = "test10@test.com",
  131. };
  132. var existingUser = api.Users.SearchByEmail(user.Email);
  133. if (existingUser.Count > 0)
  134. api.Users.DeleteUser(existingUser.Users[0].Id.Value);
  135. var res1 = api.Users.CreateUser(user);
  136. var userId = res1.User.Id.Value;
  137. var res2 = api.Users.AddUserIdentity(userId, new UserIdentity()
  138. {
  139. Type = UserIdentityTypes.Email,
  140. Value = "moretest@test.com"
  141. });
  142. var identityId = res2.Identity.Id.Value;
  143. Assert.Greater(identityId, 0);
  144. var verfified = api.Users.SetUserIdentityAsVerified(userId, identityId);
  145. Assert.AreEqual(identityId, verfified.Identity.Id);
  146. var primaries = api.Users.SetUserIdentityAsPrimary(userId, identityId);
  147. Assert.AreEqual(identityId, primaries.Identities.First(x => x.Primary).Id);
  148. Assert.True(api.Users.DeleteUserIdentity(userId, identityId));
  149. Assert.True(api.Users.DeleteUser(userId));
  150. }
  151. [Test]
  152. public void CanNotCreateUserWithStringEmptyEmail()
  153. {
  154. var u = new User();
  155. u.Name = new Random().Next(1, 2000000).ToString() + " " + new Random().Next(1, 2000000).ToString();
  156. //u.Alias = u.Name;
  157. u.Verified = true;
  158. u.Email = "";
  159. u.LocaleId = 1;
  160. u.Role = UserRoles.EndUser;
  161. bool success = false;
  162. try
  163. {
  164. var result = api.Users.CreateUser(u);
  165. success = true;
  166. }
  167. catch (Exception e)
  168. {
  169. Assert.IsTrue(e.Message.Contains("Email: cannot be blank") && e.Data["jsonException"] != null && e.Data["jsonException"].ToString().Contains("Email: cannot be blank"));
  170. }
  171. Assert.IsFalse(success);
  172. }
  173. [Test]
  174. public async void CanNotCreateUserWithStringEmptyEmailAsync()
  175. {
  176. var u = new User();
  177. u.Name = new Random().Next(1, 2000000).ToString() + " " + new Random().Next(1, 2000000).ToString();
  178. //u.Alias = u.Name;
  179. u.Verified = true;
  180. u.Email = "";
  181. u.LocaleId = 1;
  182. u.Role = UserRoles.EndUser;
  183. bool success = false;
  184. try
  185. {
  186. var result = await api.Users.CreateUserAsync(u);
  187. success = true;
  188. }
  189. catch (Exception e)
  190. {
  191. Assert.IsTrue(e.Message.Contains("Email: cannot be blank") && e.Data["jsonException"] != null && e.Data["jsonException"].ToString().Contains("Email: cannot be blank"));
  192. }
  193. Assert.IsFalse(success);
  194. }
  195. [Test]
  196. public async void CanMergeUsers()
  197. {
  198. var user1 = new User();
  199. user1.Name = Guid.NewGuid().ToString("N") + " " + Guid.NewGuid().ToString("N");
  200. user1.Email = Guid.NewGuid().ToString("N") + "@" + Guid.NewGuid().ToString("N") + ".com";
  201. var user2 = new User();
  202. user2.Name = Guid.NewGuid().ToString("N") + " " + Guid.NewGuid().ToString("N");
  203. user2.Email = Guid.NewGuid().ToString("N") + "@" + Guid.NewGuid().ToString("N") + ".com";
  204. var resultUser1 = api.Users.CreateUser(user1);
  205. var resultUser2 = api.Users.CreateUser(user2);
  206. var mergedUser = api.Users.MergeUser(resultUser1.User.Id.Value, resultUser2.User.Id.Value);
  207. var mergedIdentities = await api.Users.GetUserIdentitiesAsync(mergedUser.User.Id.Value);
  208. Assert.AreEqual(resultUser2.User.Id, mergedUser.User.Id);
  209. Assert.IsTrue(mergedIdentities.Identities.Any(i => i.Value.ToLower() == user1.Email.ToLower()));
  210. Assert.IsTrue(mergedIdentities.Identities.Any(i => i.Value.ToLower() == user2.Email.ToLower()));
  211. api.Users.DeleteUser(resultUser1.User.Id.Value);
  212. api.Users.DeleteUser(resultUser2.User.Id.Value);
  213. }
  214. [Test]
  215. public async void CanMergeUsersAsync()
  216. {
  217. var user1 = new User();
  218. user1.Name = Guid.NewGuid().ToString("N") + " " + Guid.NewGuid().ToString("N");
  219. user1.Email = Guid.NewGuid().ToString("N") + "@" + Guid.NewGuid().ToString("N") + ".com";
  220. var user2 = new User();
  221. user2.Name = Guid.NewGuid().ToString("N") + " " + Guid.NewGuid().ToString("N");
  222. user2.Email = Guid.NewGuid().ToString("N") + "@" + Guid.NewGuid().ToString("N") + ".com";
  223. var resultUser1 = api.Users.CreateUser(user1);
  224. var resultUser2 = api.Users.CreateUser(user2);
  225. var mergedUser = await api.Users.MergeUserAsync(resultUser1.User.Id.Value, resultUser2.User.Id.Value);
  226. var mergedIdentities = await api.Users.GetUserIdentitiesAsync(mergedUser.User.Id.Value);
  227. Assert.AreEqual(resultUser2.User.Id, mergedUser.User.Id);
  228. Assert.IsTrue(mergedIdentities.Identities.Any(i => i.Value.ToLower() == user1.Email.ToLower()));
  229. Assert.IsTrue(mergedIdentities.Identities.Any(i => i.Value.ToLower() == user2.Email.ToLower()));
  230. api.Users.DeleteUser(resultUser1.User.Id.Value);
  231. api.Users.DeleteUser(resultUser2.User.Id.Value);
  232. }
  233. [Test]
  234. public void CanGetMultipleUsers()
  235. {
  236. var userList = api.Users.GetAllUsers(10,1).Users.Select(u => u.Id.Value).ToList();
  237. var result = api.Users.GetMultipleUsers(userList, UserSideLoadOptions.Organizations | UserSideLoadOptions.Identities | UserSideLoadOptions.Roles);
  238. Assert.AreEqual(userList.Count, result.Count);
  239. Assert.IsTrue((result.Organizations != null && result.Organizations.Any()) || (result.Identities != null && result.Identities.Any()));
  240. }
  241. [Test]
  242. public void CanGetMultipleUsersAsync()
  243. {
  244. var userList = api.Users.GetAllUsersAsync(10, 1).Result.Users.Select(u => u.Id.Value).ToList();
  245. var result = api.Users.GetMultipleUsers(userList, UserSideLoadOptions.Organizations | UserSideLoadOptions.Identities);
  246. Assert.AreEqual(userList.Count, result.Count);
  247. Assert.IsTrue((result.Organizations != null && result.Organizations.Any()) || (result.Identities != null && result.Identities.Any()));
  248. }
  249. }
  250. }