PageRenderTime 72ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 1ms

/GitLab.NET.Tests/Repositories/UserRepositoryTests.cs

https://gitlab.com/jmiguelcouto/GitLab.NET
C# | 702 lines | 514 code | 188 blank | 0 comment | 0 complexity | c740f2057dfb3ad00a6f10046d24643e MD5 | raw file
  1. using System;
  2. using System.Threading.Tasks;
  3. using GitLab.NET.Abstractions;
  4. using GitLab.NET.Repositories;
  5. using NSubstitute;
  6. using Xunit;
  7. namespace GitLab.NET.Tests.Repositories
  8. {
  9. public class UserRepositoryTests
  10. {
  11. public UserRepositoryTests()
  12. {
  13. _request = Substitute.For<IRequest>();
  14. _requestFactory = Substitute.For<IRequestFactory>();
  15. _requestFactory.Create(Arg.Any<string>(), Arg.Any<Method>(), Arg.Any<bool>()).Returns(_request);
  16. }
  17. private readonly IRequest _request;
  18. private readonly IRequestFactory _requestFactory;
  19. [Fact]
  20. public async Task Block_ValidParameters_AddsIdUrlSegment()
  21. {
  22. const uint expected = 0;
  23. var sut = new UserRepository(_requestFactory);
  24. await sut.Block(expected);
  25. _request.Received().AddUrlSegment("id", expected);
  26. }
  27. [Fact]
  28. public async Task Block_ValidParameters_SetsCorrectResourceAndMethod()
  29. {
  30. var sut = new UserRepository(_requestFactory);
  31. await sut.Block(0);
  32. _requestFactory.Received().Create("users/{id}/block", Method.Put);
  33. }
  34. [Fact]
  35. public async Task Create_AdminIsSet_AddsAdminParameter()
  36. {
  37. const bool expected = true;
  38. var sut = new UserRepository(_requestFactory);
  39. await sut.Create("email", "password", "username", "name", admin: expected);
  40. _request.Received().AddParameterIfNotNull("admin", expected);
  41. }
  42. [Fact]
  43. public async Task Create_BioIsSet_AddsBioParameter()
  44. {
  45. const string expected = "bio";
  46. var sut = new UserRepository(_requestFactory);
  47. await sut.Create("email", "password", "username", "name", bio: expected);
  48. _request.Received().AddParameterIfNotNull("bio", expected);
  49. }
  50. [Fact]
  51. public async Task Create_CanCreateGroupIsSet_AddsCanCreateGroupParameter()
  52. {
  53. const bool expected = true;
  54. var sut = new UserRepository(_requestFactory);
  55. await sut.Create("email", "password", "username", "name", canCreateGroup: expected);
  56. _request.Received().AddParameterIfNotNull("can_create_group", expected);
  57. }
  58. [Fact]
  59. public async Task Create_ConfirmIsSet_AddsConfirmParameter()
  60. {
  61. const bool expected = true;
  62. var sut = new UserRepository(_requestFactory);
  63. await sut.Create("email", "password", "username", "name", confirm: expected);
  64. _request.Received().AddParameterIfNotNull("confirm", expected);
  65. }
  66. [Fact]
  67. public async Task Create_EmailIsNull_ThrowsArgumentNullException()
  68. {
  69. var sut = new UserRepository(_requestFactory);
  70. await Assert.ThrowsAsync<ArgumentNullException>(() => sut.Create(null, "password", "username", "name"));
  71. }
  72. [Fact]
  73. public async Task Create_ExternalIsSet_AddsExternalParameter()
  74. {
  75. const bool expected = true;
  76. var sut = new UserRepository(_requestFactory);
  77. await sut.Create("email", "password", "username", "name", external: expected);
  78. _request.Received().AddParameterIfNotNull("external", expected);
  79. }
  80. [Fact]
  81. public async Task Create_ExternUidIsSet_AddsExternUidParameter()
  82. {
  83. const string expected = "externUid";
  84. var sut = new UserRepository(_requestFactory);
  85. await sut.Create("email", "password", "username", "name", externUid: expected);
  86. _request.Received().AddParameterIfNotNull("extern_uid", expected);
  87. }
  88. [Fact]
  89. public async Task Create_LinkedInIsSet_AddsLinkedInParameter()
  90. {
  91. const string expected = "linkedIn";
  92. var sut = new UserRepository(_requestFactory);
  93. await sut.Create("email", "password", "username", "name", linkedIn: expected);
  94. _request.Received().AddParameterIfNotNull("linkedin", expected);
  95. }
  96. [Fact]
  97. public async Task Create_LocationIsSet_AddsLocationParameter()
  98. {
  99. const string expected = "location";
  100. var sut = new UserRepository(_requestFactory);
  101. await sut.Create("email", "password", "username", "name", location: expected);
  102. _request.Received().AddParameterIfNotNull("location", expected);
  103. }
  104. [Fact]
  105. public async Task Create_NameIsNull_ThrowsArgumentNullException()
  106. {
  107. var sut = new UserRepository(_requestFactory);
  108. await Assert.ThrowsAsync<ArgumentNullException>(() => sut.Create("email", "password", "username", null));
  109. }
  110. [Fact]
  111. public async Task Create_PasswordIsNull_ThrowsArgumentNullException()
  112. {
  113. var sut = new UserRepository(_requestFactory);
  114. await Assert.ThrowsAsync<ArgumentNullException>(() => sut.Create("email", null, "username", "name"));
  115. }
  116. [Fact]
  117. public async Task Create_ProjectsLimitIsSet_AddsProjectsLimitParameter()
  118. {
  119. const uint expected = 0;
  120. var sut = new UserRepository(_requestFactory);
  121. await sut.Create("email", "password", "username", "name", projectsLimit: expected);
  122. _request.Received().AddParameterIfNotNull("projects_limit", expected);
  123. }
  124. [Fact]
  125. public async Task Create_ProviderIsSet_AddsProviderParameter()
  126. {
  127. const string expected = "provider";
  128. var sut = new UserRepository(_requestFactory);
  129. await sut.Create("email", "password", "username", "name", provider: expected);
  130. _request.Received().AddParameterIfNotNull("provider", expected);
  131. }
  132. [Fact]
  133. public async Task Create_SkypeIsSet_AddsSkypeParameter()
  134. {
  135. const string expected = "skype";
  136. var sut = new UserRepository(_requestFactory);
  137. await sut.Create("email", "password", "username", "name", expected);
  138. _request.Received().AddParameterIfNotNull("skype", expected);
  139. }
  140. [Fact]
  141. public async Task Create_TwitterIsSet_AddsTwitterParameter()
  142. {
  143. const string expected = "twitter";
  144. var sut = new UserRepository(_requestFactory);
  145. await sut.Create("email", "password", "username", "name", twitter: expected);
  146. _request.Received().AddParameterIfNotNull("twitter", expected);
  147. }
  148. [Fact]
  149. public async Task Create_UsernameIsNull_ThrowsArgumentNullException()
  150. {
  151. var sut = new UserRepository(_requestFactory);
  152. await Assert.ThrowsAsync<ArgumentNullException>(() => sut.Create("email", "password", null, "name"));
  153. }
  154. [Fact]
  155. public async Task Create_ValidParameters_AddsEmailParameter()
  156. {
  157. const string expected = "email";
  158. var sut = new UserRepository(_requestFactory);
  159. await sut.Create(expected, "password", "username", "name");
  160. _request.Received().AddParameter("email", expected);
  161. }
  162. [Fact]
  163. public async Task Create_ValidParameters_AddsNameParameter()
  164. {
  165. const string expected = "name";
  166. var sut = new UserRepository(_requestFactory);
  167. await sut.Create("email", "password", "username", expected);
  168. _request.Received().AddParameter("name", expected);
  169. }
  170. [Fact]
  171. public async Task Create_ValidParameters_AddsPasswordParameter()
  172. {
  173. const string expected = "password";
  174. var sut = new UserRepository(_requestFactory);
  175. await sut.Create("email", expected, "username", "name");
  176. _request.Received().AddParameter("password", expected);
  177. }
  178. [Fact]
  179. public async Task Create_ValidParameters_AddsUsernameParameter()
  180. {
  181. const string expected = "username";
  182. var sut = new UserRepository(_requestFactory);
  183. await sut.Create("email", "password", expected, "name");
  184. _request.Received().AddParameter("username", expected);
  185. }
  186. [Fact]
  187. public async Task Create_ValidParameters_SetsCorrectResourceAndMethod()
  188. {
  189. var sut = new UserRepository(_requestFactory);
  190. await sut.Create("email", "password", "username", "name");
  191. _requestFactory.Received().Create("users", Method.Post);
  192. }
  193. [Fact]
  194. public async Task Create_WebsiteUrlIsSet_AddsWebsiteUrlParameter()
  195. {
  196. const string expected = "websiteUrl";
  197. var sut = new UserRepository(_requestFactory);
  198. await sut.Create("email", "password", "username", "name", websiteUrl: expected);
  199. _request.Received().AddParameterIfNotNull("website_url", expected);
  200. }
  201. [Fact]
  202. public async Task Delete_ValidParameters_AddsIdUrlSegment()
  203. {
  204. const uint expected = 0;
  205. var sut = new UserRepository(_requestFactory);
  206. await sut.Delete(expected);
  207. _request.Received().AddUrlSegment("id", expected);
  208. }
  209. [Fact]
  210. public async Task Delete_ValidParameters_SetsCorrectResourceAndMethod()
  211. {
  212. var sut = new UserRepository(_requestFactory);
  213. await sut.Delete(0);
  214. _requestFactory.Received().Create("users/{id}", Method.Delete);
  215. }
  216. [Fact]
  217. public async Task Find_IdOverload_ValidParameters_AddsIdUrlSegment()
  218. {
  219. const uint expected = 0;
  220. var sut = new UserRepository(_requestFactory);
  221. await sut.Find(expected);
  222. _request.Received().AddUrlSegment("id", expected);
  223. }
  224. [Fact]
  225. public async Task Find_IdOverload_ValidParameters_SetsCorrectResourceAndMethod()
  226. {
  227. var sut = new UserRepository(_requestFactory);
  228. await sut.Find(0);
  229. _requestFactory.Received().Create("users/{id}", Method.Get);
  230. }
  231. [Fact]
  232. public async Task Find_UsernameOverload_UsernameIsNull_ThrowsArgumentNullException()
  233. {
  234. var sut = new UserRepository(_requestFactory);
  235. await Assert.ThrowsAsync<ArgumentNullException>(() => sut.Find(null));
  236. }
  237. [Fact]
  238. public async Task Find_UsernameOverload_ValidParameters_AddsUsernameParameter()
  239. {
  240. const string expected = "username";
  241. var sut = new UserRepository(_requestFactory);
  242. await sut.Find(expected);
  243. _request.Received().AddParameter("username", expected);
  244. }
  245. [Fact]
  246. public async Task Find_UsernameOverload_ValidParameters_SetsCorrectResourceAndMethod()
  247. {
  248. var sut = new UserRepository(_requestFactory);
  249. await sut.Find("username");
  250. _requestFactory.Received().Create("users", Method.Get);
  251. }
  252. [Fact]
  253. public async Task GetAll_PageIsLessThanMinimum_ThrowsArgumentOutOfRangeException()
  254. {
  255. var sut = new UserRepository(_requestFactory);
  256. await Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => sut.GetAll(uint.MinValue));
  257. }
  258. [Fact]
  259. public async Task GetAll_PageIsSet_AddsPageParameter()
  260. {
  261. const uint expected = 5;
  262. var sut = new UserRepository(_requestFactory);
  263. await sut.GetAll(expected);
  264. _request.Received().AddParameter("page", expected);
  265. }
  266. [Fact]
  267. public async Task GetAll_ResultsPerPageIsGreaterThanMaximum_ThrowsArgumentOutOfRangeException()
  268. {
  269. var sut = new UserRepository(_requestFactory);
  270. await Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => sut.GetAll(resultsPerPage: uint.MaxValue));
  271. }
  272. [Fact]
  273. public async Task GetAll_ResultsPerPageIsLessThanMinimum_ThrowsArgumentOutOfRangeException()
  274. {
  275. var sut = new UserRepository(_requestFactory);
  276. await Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => sut.GetAll(resultsPerPage: uint.MinValue));
  277. }
  278. [Fact]
  279. public async Task GetAll_ResultsPerPageIsSet_AddsPerPageParameter()
  280. {
  281. const uint expected = 5;
  282. var sut = new UserRepository(_requestFactory);
  283. await sut.GetAll(resultsPerPage: expected);
  284. _request.Received().AddParameter("per_page", expected);
  285. }
  286. [Fact]
  287. public async Task GetAll_ValidParameters_SetsCorrectResourceAndMethod()
  288. {
  289. var sut = new UserRepository(_requestFactory);
  290. await sut.GetAll();
  291. _requestFactory.Received().Create("users", Method.Get);
  292. }
  293. [Fact]
  294. public async Task GetCurrent_ValidParameters_SetsCorrectResourceAndMethod()
  295. {
  296. var sut = new UserRepository(_requestFactory);
  297. await sut.GetCurrent();
  298. _requestFactory.Received().Create("user", Method.Get);
  299. }
  300. [Fact]
  301. public async Task Search_PageIsLessThanMinimum_ThrowsArgumentOutOfRangeException()
  302. {
  303. var sut = new UserRepository(_requestFactory);
  304. await Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => sut.Search("search", uint.MinValue));
  305. }
  306. [Fact]
  307. public async Task Search_PageIsSet_AddsPageParameter()
  308. {
  309. const uint expected = 5;
  310. var sut = new UserRepository(_requestFactory);
  311. await sut.Search("search", expected);
  312. _request.Received().AddParameter("page", expected);
  313. }
  314. [Fact]
  315. public async Task Search_ResultsPerPageIsGreaterThanMaximum_ThrowsArgumentOutOfRangeException()
  316. {
  317. var sut = new UserRepository(_requestFactory);
  318. await Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => sut.Search("search", resultsPerPage: uint.MaxValue));
  319. }
  320. [Fact]
  321. public async Task Search_ResultsPerPageIsLessThanMinimum_ThrowsArgumentOutOfRangeException()
  322. {
  323. var sut = new UserRepository(_requestFactory);
  324. await Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => sut.Search("search", resultsPerPage: uint.MinValue));
  325. }
  326. [Fact]
  327. public async Task Search_ResultsPerPageIsSet_AddsPerPageParameter()
  328. {
  329. const uint expected = 5;
  330. var sut = new UserRepository(_requestFactory);
  331. await sut.Search("search", resultsPerPage: expected);
  332. _request.Received().AddParameter("per_page", expected);
  333. }
  334. [Fact]
  335. public async Task Search_SearchQueryIsNull_ThrowsArgumentNullException()
  336. {
  337. var sut = new UserRepository(_requestFactory);
  338. await Assert.ThrowsAsync<ArgumentNullException>(() => sut.Search(null));
  339. }
  340. [Fact]
  341. public async Task Search_ValidParameters_AddsSearchParameter()
  342. {
  343. const string expected = "search";
  344. var sut = new UserRepository(_requestFactory);
  345. await sut.Search(expected);
  346. _request.Received().AddParameter("search", expected);
  347. }
  348. [Fact]
  349. public async Task Search_ValidParameters_SetsCorrectResourceAndMethod()
  350. {
  351. var sut = new UserRepository(_requestFactory);
  352. await sut.Search("search");
  353. _requestFactory.Received().Create("users", Method.Get);
  354. }
  355. [Fact]
  356. public async Task Unblock_ValidParameters_AddsIdUrlSegment()
  357. {
  358. const uint expected = 0;
  359. var sut = new UserRepository(_requestFactory);
  360. await sut.Unblock(expected);
  361. _request.Received().AddUrlSegment("id", expected);
  362. }
  363. [Fact]
  364. public async Task Unblock_ValidParameters_SetsCorrectResourceAndMethod()
  365. {
  366. var sut = new UserRepository(_requestFactory);
  367. await sut.Unblock(0);
  368. _requestFactory.Received().Create("users/{id}/unblock", Method.Put);
  369. }
  370. [Fact]
  371. public async Task Update_AdminIsSet_AddsAdminParameter()
  372. {
  373. const bool expected = true;
  374. var sut = new UserRepository(_requestFactory);
  375. await sut.Update(0, admin: expected);
  376. _request.Received().AddParameterIfNotNull("admin", expected);
  377. }
  378. [Fact]
  379. public async Task Update_BioIsSet_AddsBioParameter()
  380. {
  381. const string expected = "bio";
  382. var sut = new UserRepository(_requestFactory);
  383. await sut.Update(0, bio: expected);
  384. _request.Received().AddParameterIfNotNull("bio", expected);
  385. }
  386. [Fact]
  387. public async Task Update_CanCreateGroupIsSet_AddsCanCreateGroupParameter()
  388. {
  389. const bool expected = true;
  390. var sut = new UserRepository(_requestFactory);
  391. await sut.Update(0, canCreateGroup: expected);
  392. _request.Received().AddParameterIfNotNull("can_create_group", expected);
  393. }
  394. [Fact]
  395. public async Task Update_EmailIsSet_AddsEmailParameter()
  396. {
  397. const string expected = "email";
  398. var sut = new UserRepository(_requestFactory);
  399. await sut.Update(0, expected);
  400. _request.Received().AddParameterIfNotNull("email", expected);
  401. }
  402. [Fact]
  403. public async Task Update_ExternalIsSet_AddsExternalParameter()
  404. {
  405. const bool expected = true;
  406. var sut = new UserRepository(_requestFactory);
  407. await sut.Update(0, external: expected);
  408. _request.Received().AddParameterIfNotNull("external", expected);
  409. }
  410. [Fact]
  411. public async Task Update_ExternUidIsSet_AddsExternUidParameter()
  412. {
  413. const string expected = "externUid";
  414. var sut = new UserRepository(_requestFactory);
  415. await sut.Update(0, externUid: expected);
  416. _request.Received().AddParameterIfNotNull("extern_uid", expected);
  417. }
  418. [Fact]
  419. public async Task Update_IsSet_AddsParameter()
  420. {
  421. const uint expected = 0;
  422. var sut = new UserRepository(_requestFactory);
  423. await sut.Update(0, projectsLimit: expected);
  424. _request.Received().AddParameterIfNotNull("projects_limit", expected);
  425. }
  426. [Fact]
  427. public async Task Update_LinkedInIsSet_AddsLinkedInParameter()
  428. {
  429. const string expected = "linkedIn";
  430. var sut = new UserRepository(_requestFactory);
  431. await sut.Update(0, linkedIn: expected);
  432. _request.Received().AddParameterIfNotNull("linkedin", expected);
  433. }
  434. [Fact]
  435. public async Task Update_LocationIsSet_AddsLocationParameter()
  436. {
  437. const string expected = "location";
  438. var sut = new UserRepository(_requestFactory);
  439. await sut.Update(0, location: expected);
  440. _request.Received().AddParameterIfNotNull("location", expected);
  441. }
  442. [Fact]
  443. public async Task Update_NameIsSet_AddsNameParameter()
  444. {
  445. const string expected = "name";
  446. var sut = new UserRepository(_requestFactory);
  447. await sut.Update(0, name: expected);
  448. _request.Received().AddParameterIfNotNull("name", expected);
  449. }
  450. [Fact]
  451. public async Task Update_PasswordIsSet_AddsPasswordParameter()
  452. {
  453. const string expected = "password";
  454. var sut = new UserRepository(_requestFactory);
  455. await sut.Update(0, password: expected);
  456. _request.Received().AddParameterIfNotNull("password", expected);
  457. }
  458. [Fact]
  459. public async Task Update_ProviderIsSet_AddsProviderParameter()
  460. {
  461. const string expected = "provider";
  462. var sut = new UserRepository(_requestFactory);
  463. await sut.Update(0, provider: expected);
  464. _request.Received().AddParameterIfNotNull("provider", expected);
  465. }
  466. [Fact]
  467. public async Task Update_SkypeIsSet_AddsSkypeParameter()
  468. {
  469. const string expected = "skype";
  470. var sut = new UserRepository(_requestFactory);
  471. await sut.Update(0, skype: expected);
  472. _request.Received().AddParameterIfNotNull("skype", expected);
  473. }
  474. [Fact]
  475. public async Task Update_TwitterIsSet_AddsTwitterParameter()
  476. {
  477. const string expected = "twitter";
  478. var sut = new UserRepository(_requestFactory);
  479. await sut.Update(0, twitter: expected);
  480. _request.Received().AddParameterIfNotNull("twitter", expected);
  481. }
  482. [Fact]
  483. public async Task Update_UsernameIsSet_AddsUsernameParameter()
  484. {
  485. const string expected = "username";
  486. var sut = new UserRepository(_requestFactory);
  487. await sut.Update(0, username: expected);
  488. _request.Received().AddParameterIfNotNull("username", expected);
  489. }
  490. [Fact]
  491. public async Task Update_ValidParameters_AddsIdUrlSegment()
  492. {
  493. const uint expected = 0;
  494. var sut = new UserRepository(_requestFactory);
  495. await sut.Update(expected);
  496. _request.Received().AddUrlSegment("id", expected);
  497. }
  498. [Fact]
  499. public async Task Update_ValidParameters_SetsCorrectResourceAndMethod()
  500. {
  501. var sut = new UserRepository(_requestFactory);
  502. await sut.Update(0);
  503. _requestFactory.Received().Create("users/{id}", Method.Put);
  504. }
  505. [Fact]
  506. public async Task Update_WebsiteUrlIsSet_AddsWebsiteUrlParameter()
  507. {
  508. const string expected = "websiteUrl";
  509. var sut = new UserRepository(_requestFactory);
  510. await sut.Update(0, websiteUrl: expected);
  511. _request.Received().AddParameterIfNotNull("website_url", expected);
  512. }
  513. }
  514. }