PageRenderTime 44ms CodeModel.GetById 18ms RepoModel.GetById 1ms app.codeStats 0ms

/Atlassian.Jira.Test/JiraTests.cs

https://bitbucket.org/headspring/atlassian.net-sdk
C# | 137 lines | 118 code | 19 blank | 0 comment | 2 complexity | ca2cbb3bcd285b5b8aa4131ed4b890b0 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Xunit;
  6. using Moq;
  7. using System.ServiceModel;
  8. using Atlassian.Jira.Remote;
  9. namespace Atlassian.Jira.Test
  10. {
  11. public class JiraTests
  12. {
  13. public class GetIssuesFromFilter
  14. {
  15. [Fact]
  16. public void IfFilterNotFoundShouldThrowException()
  17. {
  18. var jira = TestableJira.Create();
  19. Assert.Throws(typeof(InvalidOperationException), () => jira.GetIssuesFromFilter("foo"));
  20. }
  21. [Fact]
  22. public void RetrievesFilterIdFromServer()
  23. {
  24. var jira = TestableJira.Create();
  25. jira.SoapService.Setup(s => s.GetFavouriteFilters(It.IsAny<string>()))
  26. .Returns(new RemoteFilter[1] { new RemoteFilter() { name="thefilter", id="123"}});
  27. jira.GetIssuesFromFilter("thefilter", 100, 200);
  28. jira.SoapService.Verify(s => s.GetIssuesFromFilterWithLimit(It.IsAny<string>(), "123", 100, 200));
  29. }
  30. [Fact]
  31. public void UsesDefaultsIfNoneProvided()
  32. {
  33. var jira = TestableJira.Create();
  34. jira.SoapService.Setup(s => s.GetFavouriteFilters(It.IsAny<string>()))
  35. .Returns(new RemoteFilter[1] { new RemoteFilter() { name = "thefilter", id = "123" } });
  36. jira.GetIssuesFromFilter("thefilter");
  37. jira.SoapService.Verify(s => s.GetIssuesFromFilterWithLimit(It.IsAny<string>(), "123", 0, 20));
  38. }
  39. }
  40. public class WithToken_Anonymous
  41. {
  42. [Fact]
  43. public void DoesNotRetrieveToken()
  44. {
  45. var jira = TestableJira.Create(user: null, pass: null);
  46. jira.SoapService.Setup(s => s.Login(It.IsAny<string>(), It.IsAny<string>())).Throws(new Exception("Unexpected call to login"));
  47. string innerToken = null;
  48. jira.WithToken(t => innerToken = t);
  49. Assert.Equal(String.Empty, innerToken);
  50. }
  51. [Fact]
  52. public void DoesNotRetrieveTokenIfMethodThrowsException()
  53. {
  54. var jira = TestableJira.Create(user: null, pass: null);
  55. jira.SoapService.Setup(s => s.Login(It.IsAny<string>(), It.IsAny<string>())).Throws(new Exception("Unexpected call to login"));
  56. string innerToken = null;
  57. Assert.Throws(typeof(InvalidOperationException), () =>
  58. jira.WithToken(t =>
  59. {
  60. innerToken = t;
  61. throw new InvalidOperationException();
  62. }));
  63. jira.WithToken(t => innerToken = t);
  64. Assert.Equal(String.Empty, innerToken);
  65. }
  66. }
  67. public class WithToken_UserAndPassword
  68. {
  69. [Fact]
  70. public void RetrievesTokenIfEmpty()
  71. {
  72. var jira = TestableJira.Create();
  73. jira.SoapService.Setup(s => s.Login(It.IsAny<string>(), It.IsAny<string>())).Returns("token");
  74. string innerToken = "";
  75. jira.WithToken(t => innerToken = t);
  76. Assert.Equal("token", innerToken);
  77. }
  78. [Fact]
  79. public void ReusesTokenIfNotEmpty()
  80. {
  81. var jira = TestableJira.Create();
  82. jira.SoapService.Setup(s => s.Login(It.IsAny<string>(), It.IsAny<string>())).ReturnsInOrder("token", new Exception("Unexpected call to login"));
  83. string innerToken = "";
  84. jira.WithToken(t => innerToken = t);
  85. jira.WithToken(t => innerToken = t);
  86. Assert.Equal("token", innerToken);
  87. }
  88. [Fact]
  89. public void RetrievesNewTokenIfMethodThrowsAuthException()
  90. {
  91. var jira = TestableJira.Create();
  92. jira.SoapService.Setup(s => s.Login(It.IsAny<string>(), It.IsAny<string>())).ReturnsInOrder("token1", "token2");
  93. string innerToken = "";
  94. jira.WithToken(t => innerToken = t); // retrieves original token
  95. jira.WithToken(t =>
  96. {
  97. if (t == "token1")
  98. throw new FaultException("com.atlassian.jira.rpc.exception.RemoteAuthenticationException: Invalid username or password.");
  99. innerToken = t;
  100. });
  101. Assert.Equal("token2", innerToken);
  102. }
  103. [Fact]
  104. public void DoesNotRetrieveNewTokenIfMethodThrowsNonAuthException()
  105. {
  106. var jira = TestableJira.Create();
  107. jira.SoapService.Setup(s => s.Login(It.IsAny<string>(), It.IsAny<string>())).ReturnsInOrder("token1", new Exception("Unexpected call to login"));
  108. string innerToken = "";
  109. jira.WithToken(t => innerToken = t);
  110. Assert.Throws(typeof(InvalidOperationException), () =>
  111. jira.WithToken(t =>
  112. {
  113. throw new InvalidOperationException();
  114. }));
  115. }
  116. }
  117. }
  118. }