Skip to content

Commit

Permalink
feat: Basic Authentication extension. Fixes #31
Browse files Browse the repository at this point in the history
- Added basic authentication header extension
  • Loading branch information
DeadlyEmbrace committed Mar 11, 2017
1 parent 478452a commit 1554060
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 0 deletions.
33 changes: 33 additions & 0 deletions VaraniumSharp.Tests/Extensions/HttpClientExtensionsTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using System;
using System.Net.Http;
using System.Text;
using FluentAssertions;
using NUnit.Framework;
using VaraniumSharp.Extensions;

namespace VaraniumSharp.Tests.Extensions
{
public class HttpClientExtensionsTests
{
#region Public Methods

[Test]
public void SettingAuthenticationHeaderWorks()
{
// arrange
const string username = "testuser";
const string password = "testpass";
var authValue = $"Basic {Convert.ToBase64String(Encoding.Default.GetBytes($"{username}:{password}"))}";
var sut = new HttpClient();

// act
sut.SetBasicAuthHeader(username, password);

// assert
sut.DefaultRequestHeaders.GetValues("Authorization")
.Should().Contain(authValue);
}

#endregion
}
}
1 change: 1 addition & 0 deletions VaraniumSharp.Tests/VaraniumSharp.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@
<Compile Include="Caching\MemoryCacheWrapperTests.cs" />
<Compile Include="Configuration\ReconfigurableSettingBaseTests.cs" />
<Compile Include="DependencyInjection\AutomaticContainerRegistrationTest.cs" />
<Compile Include="Extensions\HttpClientExtensionsTests.cs" />
<Compile Include="Extensions\ObservableCollectionExtensionsTests.cs" />
<Compile Include="Extensions\StringExtensionsTest.cs" />
<Compile Include="Extensions\UrlBuilderExtensionsTests.cs" />
Expand Down
31 changes: 31 additions & 0 deletions VaraniumSharp/Extensions/HttpClientExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;

namespace VaraniumSharp.Extensions
{
/// <summary>
/// Extension methods for <see cref="HttpClient"/>
/// </summary>
public static class HttpClientExtensions
{
#region Public Methods

/// <summary>
/// Set Basic Authentication header
/// </summary>
/// <param name="client">HttpClient for which the header should be set</param>
/// <param name="username">Username for authentication</param>
/// <param name="password">Password for authentication</param>
/// <returns>HttpClient</returns>
public static HttpClient SetBasicAuthHeader(this HttpClient client, string username, string password)
{
var credentials = Convert.ToBase64String(Encoding.Default.GetBytes($"{username}:{password}"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", credentials);
return client;
}

#endregion
}
}
1 change: 1 addition & 0 deletions VaraniumSharp/VaraniumSharp.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
<Compile Include="Configuration\ReconfigurableSettingBase.cs" />
<Compile Include="DependencyInjection\AutomaticContainerRegistration.cs" />
<Compile Include="Enumerations\ServiceReuse.cs" />
<Compile Include="Extensions\HttpClientExtensions.cs" />
<Compile Include="Extensions\ObservableCollectionExtensions.cs" />
<Compile Include="Extensions\StringExtensions.cs" />
<Compile Include="Extensions\UrlBuilderExtensions.cs" />
Expand Down

0 comments on commit 1554060

Please sign in to comment.