/Rackspace.CloudFiles.Unit.Tests/Domain/Request/GetAuthenticationSpecs.cs

https://github.com/jssingh/csharp-cloudfiles · C# · 140 lines · 121 code · 17 blank · 2 comment · 0 complexity · 062350980adc3272529f677dd2eb31e9 MD5 · raw file

  1. using System;
  2. using System.Net;
  3. using Moq;
  4. using NUnit.Framework;
  5. using Rackspace.CloudFiles.Domain;
  6. using Rackspace.CloudFiles.Domain.Request;
  7. using Rackspace.CloudFiles.Domain.Request.Interfaces;
  8. namespace Rackspace.CloudFiles.Unit.Tests.Domain.Request.GetAuthenticationSpecs
  9. {
  10. [TestFixture]
  11. public class when_authenticating_against_cloud_files_and_user_credentials_are_null
  12. {
  13. [Test]
  14. [ExpectedException(typeof(ArgumentNullException))]
  15. public void should_throw_argument_null_exception()
  16. {
  17. new GetAuthentication(null);
  18. }
  19. }
  20. [TestFixture]
  21. public class when_authenticating_against_cloud_files_and_no_auth_url_provided
  22. {
  23. private GetAuthentication getAuthentication;
  24. private Mock<ICloudFilesRequest> _mockrequest;
  25. [SetUp]
  26. public void setup()
  27. {
  28. var userCredentials = new UserCredentials("username", "apikey");
  29. getAuthentication = new GetAuthentication(userCredentials);
  30. _mockrequest = new Mock<ICloudFilesRequest>();
  31. }
  32. [Test]
  33. public void should_use_US_auth_url()
  34. {
  35. Assert.That(getAuthentication.CreateUri().ToString(), Is.EqualTo(CloudFiles.Utils.Constants.US_AUTHURL));
  36. }
  37. [Test]
  38. public void should_have_a_http_head_method()
  39. {
  40. var webrequest = new WebHeaderCollection();
  41. _mockrequest.SetupGet(x => x.Headers).Returns(webrequest);
  42. getAuthentication.Apply(_mockrequest.Object);
  43. //this seems wrong as its not looking for HEAD
  44. _mockrequest.VerifySet(x => x.Method = "GET");
  45. }
  46. [Test]
  47. public void should_have_a_username_in_the_headers()
  48. {
  49. var webrequest = new WebHeaderCollection();
  50. _mockrequest.SetupGet(x => x.Headers).Returns(webrequest);
  51. getAuthentication.Apply(_mockrequest.Object);
  52. Assert.That(webrequest[CloudFiles.Utils.Constants.X_AUTH_USER], Is.EqualTo("username"));
  53. }
  54. [Test]
  55. public void should_have_api_key_in_the_headers()
  56. {
  57. var webrequest = new WebHeaderCollection();
  58. _mockrequest.SetupGet(x => x.Headers).Returns(webrequest);
  59. getAuthentication.Apply(_mockrequest.Object);
  60. Assert.That(webrequest[CloudFiles.Utils.Constants.X_AUTH_KEY], Is.EqualTo("apikey"));
  61. }
  62. }
  63. [TestFixture]
  64. public class when_authenticating_against_cloud_files_and_auth_url_provided
  65. {
  66. private GetAuthentication getAuthentication;
  67. private Mock<ICloudFilesRequest> _mockrequest;
  68. [SetUp]
  69. public void setup()
  70. {
  71. var userCredentials = new UserCredentials(new Uri("http://authurl"), "username", "apikey", "cloudversion", "cloudaccountname");
  72. getAuthentication = new GetAuthentication(userCredentials);
  73. _mockrequest = new Mock<ICloudFilesRequest>();
  74. }
  75. [Test]
  76. public void should_have_properly_formmated_auth_url()
  77. {
  78. Assert.That(getAuthentication.CreateUri().ToString(), Is.EqualTo("http://authurl//cloudversion/cloudaccountname/auth"));
  79. }
  80. [Test]
  81. public void should_have_a_http_head_method()
  82. {
  83. var webrequest = new WebHeaderCollection();
  84. _mockrequest.SetupGet(x => x.Headers).Returns(webrequest);
  85. getAuthentication.Apply(_mockrequest.Object);
  86. //this seems wrong as its not looking for HEAD
  87. _mockrequest.VerifySet(x => x.Method = "GET");
  88. }
  89. [Test]
  90. public void should_have_a_username_in_the_headers()
  91. {
  92. var webrequest = new WebHeaderCollection();
  93. _mockrequest.SetupGet(x => x.Headers).Returns(webrequest);
  94. getAuthentication.Apply(_mockrequest.Object);
  95. Assert.That(webrequest[CloudFiles.Utils.Constants.X_AUTH_USER], Is.EqualTo("username"));
  96. }
  97. [Test]
  98. public void should_have_api_key_in_the_headers()
  99. {
  100. var webrequest = new WebHeaderCollection();
  101. _mockrequest.SetupGet(x => x.Headers).Returns(webrequest);
  102. getAuthentication.Apply(_mockrequest.Object);
  103. Assert.That(webrequest[CloudFiles.Utils.Constants.X_AUTH_KEY], Is.EqualTo("apikey"));
  104. }
  105. }
  106. [TestFixture]
  107. public class when_authenticating_against_cloud_files_and_username_and_password_have_spaces_in_them
  108. {
  109. [Test]
  110. public void Should_replace_plus_sign_with_percent_20_on_account_name_username_and_password()
  111. {
  112. UserCredentials userCreds = new UserCredentials(new Uri("http://tempuri"), "user name", "pass word", "v 1", "account name");
  113. GetAuthentication getAuthentication = new GetAuthentication(userCreds);
  114. var _mockrequest = new Mock<ICloudFilesRequest>();
  115. var headers = new WebHeaderCollection();
  116. _mockrequest.SetupGet(x => x.Headers).Returns(headers);
  117. getAuthentication.Apply(_mockrequest.Object);
  118. Assert.That(getAuthentication.CreateUri().AbsoluteUri, Is.EqualTo("http://tempuri//v%201/account%20name/auth"));
  119. Assert.That(headers[CloudFiles.Utils.Constants.X_AUTH_USER], Is.EqualTo("user%20name"));
  120. Assert.That(headers[CloudFiles.Utils.Constants.X_AUTH_KEY], Is.EqualTo("pass%20word"));
  121. }
  122. }
  123. }