mirror of
https://github.com/Sarsoo/IF.Lastfm.git
synced 2024-10-17 07:13:09 +01:00
Fixed Scrobbler tests
This commit is contained in:
parent
014cd65654
commit
cc0efd1397
@ -19,10 +19,12 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Remove="Resources\**\*.json" />
|
<Content Remove="Resources\**\*.json" />
|
||||||
|
<Content Remove="Resources\TrackApi\*.txt" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<EmbeddedResource Include="Resources\**\*.json" />
|
<EmbeddedResource Include="Resources\**\*.json" />
|
||||||
|
<EmbeddedResource Include="Resources\TrackApi\*.txt" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
|
using System.Reflection;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using IF.Lastfm.Core.Api;
|
using IF.Lastfm.Core.Api;
|
||||||
using IF.Lastfm.Core.Api.Enums;
|
using IF.Lastfm.Core.Api.Enums;
|
||||||
@ -58,8 +60,9 @@ private List<Scrobble> GetTestScrobbles()
|
|||||||
return testScrobbles;
|
return testScrobbles;
|
||||||
}
|
}
|
||||||
|
|
||||||
private HttpRequestMessage GenerateExpectedRequestMessage(string messageBody)
|
private HttpRequestMessage GenerateExpectedRequestMessage(string resource)
|
||||||
{
|
{
|
||||||
|
var messageBody = GetFileContents(resource);
|
||||||
var parameters = messageBody.Split('&')
|
var parameters = messageBody.Split('&')
|
||||||
.Select(pair => pair.Split('='))
|
.Select(pair => pair.Split('='))
|
||||||
.Select(arr => new KeyValuePair<string, string>(arr[0], arr[1]));
|
.Select(arr => new KeyValuePair<string, string>(arr[0], arr[1]));
|
||||||
@ -72,6 +75,21 @@ private HttpRequestMessage GenerateExpectedRequestMessage(string messageBody)
|
|||||||
return requestMessage;
|
return requestMessage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string GetFileContents(string sampleFile)
|
||||||
|
{
|
||||||
|
var asm = Assembly.GetExecutingAssembly();
|
||||||
|
var resource = string.Format("IF.Lastfm.Core.Tests.Resources.{0}", sampleFile);
|
||||||
|
using (var stream = asm.GetManifestResourceStream(resource))
|
||||||
|
{
|
||||||
|
if (stream != null)
|
||||||
|
{
|
||||||
|
var reader = new StreamReader(stream);
|
||||||
|
return reader.ReadToEnd();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public virtual void Initialise()
|
public virtual void Initialise()
|
||||||
{
|
{
|
||||||
@ -128,7 +146,7 @@ protected async Task<ScrobbleResponse> ExecuteTestInternal(IEnumerable<Scrobble>
|
|||||||
[Test]
|
[Test]
|
||||||
public async Task ScrobbleSingleSuccessful()
|
public async Task ScrobbleSingleSuccessful()
|
||||||
{
|
{
|
||||||
var requestMessage = GenerateExpectedRequestMessage(TrackApiResponses.TrackScrobbleSingleRequestBody);
|
var requestMessage = GenerateExpectedRequestMessage("TrackApi.TrackScrobbleSingleRequestBody.txt");
|
||||||
|
|
||||||
var testScrobbles = GetTestScrobbles().Take(1);
|
var testScrobbles = GetTestScrobbles().Take(1);
|
||||||
var responseMessage = TestHelper.CreateResponseMessage(HttpStatusCode.OK, "TrackApi.TrackScrobbleSuccess.json");
|
var responseMessage = TestHelper.CreateResponseMessage(HttpStatusCode.OK, "TrackApi.TrackScrobbleSuccess.json");
|
||||||
@ -140,10 +158,10 @@ public async Task ScrobbleSingleSuccessful()
|
|||||||
[Test]
|
[Test]
|
||||||
public async Task ScrobbleMultipleSuccessful()
|
public async Task ScrobbleMultipleSuccessful()
|
||||||
{
|
{
|
||||||
var requestMessage = GenerateExpectedRequestMessage(TrackApiResponses.TrackScrobbleMultipleRequestBody);
|
var requestMessage = GenerateExpectedRequestMessage("TrackApi.TrackScrobbleMultipleRequestBody.txt");
|
||||||
|
|
||||||
var testScrobbles = GetTestScrobbles();
|
var testScrobbles = GetTestScrobbles();
|
||||||
var responseMessage = TestHelper.CreateResponseMessage(HttpStatusCode.OK, "TrackApi.TrackScrobbleSuccess");
|
var responseMessage = TestHelper.CreateResponseMessage(HttpStatusCode.OK, "TrackApi.TrackScrobbleSuccess.json");
|
||||||
var scrobbleResponse = await ExecuteTestInternal(testScrobbles, responseMessage, requestMessage);
|
var scrobbleResponse = await ExecuteTestInternal(testScrobbles, responseMessage, requestMessage);
|
||||||
|
|
||||||
Assert.AreEqual(LastResponseStatus.Successful, scrobbleResponse.Status);
|
Assert.AreEqual(LastResponseStatus.Successful, scrobbleResponse.Status);
|
||||||
@ -155,7 +173,7 @@ public async Task ScrobblesExistingCachedTracks()
|
|||||||
var testScrobbles = GetTestScrobbles();
|
var testScrobbles = GetTestScrobbles();
|
||||||
|
|
||||||
// first request fails so something goes into the cache
|
// first request fails so something goes into the cache
|
||||||
var responseMessage1 = TestHelper.CreateResponseMessage(HttpStatusCode.Forbidden, "TrackApi.TrackScrobbleBadAuthError");
|
var responseMessage1 = TestHelper.CreateResponseMessage(HttpStatusCode.Forbidden, "TrackApi.TrackScrobbleBadAuthError.json");
|
||||||
var scrobblesToCache = testScrobbles.Take(1);
|
var scrobblesToCache = testScrobbles.Take(1);
|
||||||
|
|
||||||
var scrobbleResponse1 = await ExecuteTestInternal(scrobblesToCache, responseMessage1);
|
var scrobbleResponse1 = await ExecuteTestInternal(scrobblesToCache, responseMessage1);
|
||||||
@ -168,8 +186,8 @@ public async Task ScrobblesExistingCachedTracks()
|
|||||||
|
|
||||||
var scrobblesToSend = testScrobbles.Skip(1).Take(1);
|
var scrobblesToSend = testScrobbles.Skip(1).Take(1);
|
||||||
|
|
||||||
var requestMessage2 = GenerateExpectedRequestMessage(TrackApiResponses.TrackScrobbleTwoRequestBody);
|
var requestMessage2 = GenerateExpectedRequestMessage("TrackApi.TrackScrobbleTwoRequestBody.txt");
|
||||||
var responseMessage2 = TestHelper.CreateResponseMessage(HttpStatusCode.OK, "TrackApi.TrackScrobbleSuccess2");
|
var responseMessage2 = TestHelper.CreateResponseMessage(HttpStatusCode.OK, "TrackApi.TrackScrobbleSuccess2.json");
|
||||||
var scrobbleResponse2 = await ExecuteTestInternal(scrobblesToSend, responseMessage2, requestMessage2);
|
var scrobbleResponse2 = await ExecuteTestInternal(scrobblesToSend, responseMessage2, requestMessage2);
|
||||||
|
|
||||||
Assert.IsTrue(scrobbleResponse2.Success);
|
Assert.IsTrue(scrobbleResponse2.Success);
|
||||||
@ -184,10 +202,10 @@ public async Task ScrobblesExistingCachedTracks()
|
|||||||
[Test]
|
[Test]
|
||||||
public async Task CorrectResponseWithBadAuth()
|
public async Task CorrectResponseWithBadAuth()
|
||||||
{
|
{
|
||||||
var requestMessage = GenerateExpectedRequestMessage(TrackApiResponses.TrackScrobbleMultipleRequestBody);
|
var requestMessage = GenerateExpectedRequestMessage("TrackApi.TrackScrobbleMultipleRequestBody.txt");
|
||||||
|
|
||||||
var testScrobbles = GetTestScrobbles();
|
var testScrobbles = GetTestScrobbles();
|
||||||
var responseMessage = TestHelper.CreateResponseMessage(HttpStatusCode.Forbidden, "TrackApi.TrackScrobbleBadAuthError");
|
var responseMessage = TestHelper.CreateResponseMessage(HttpStatusCode.Forbidden, "TrackApi.TrackScrobbleBadAuthError.json");
|
||||||
var scrobbleResponse = await ExecuteTestInternal(testScrobbles, responseMessage, requestMessage);
|
var scrobbleResponse = await ExecuteTestInternal(testScrobbles, responseMessage, requestMessage);
|
||||||
|
|
||||||
Assert.AreEqual(LastResponseStatus.Cached, scrobbleResponse.Status);
|
Assert.AreEqual(LastResponseStatus.Cached, scrobbleResponse.Status);
|
||||||
@ -200,7 +218,7 @@ public async Task CorrectResponseWithBadAuth()
|
|||||||
[Test]
|
[Test]
|
||||||
public async Task CorrectResponseWhenRequestFailed()
|
public async Task CorrectResponseWhenRequestFailed()
|
||||||
{
|
{
|
||||||
var requestMessage = GenerateExpectedRequestMessage("TrackApi.TrackScrobbleMultipleRequestBody");
|
var requestMessage = GenerateExpectedRequestMessage("TrackApi.TrackScrobbleMultipleRequestBody.txt");
|
||||||
|
|
||||||
var testScrobbles = GetTestScrobbles();
|
var testScrobbles = GetTestScrobbles();
|
||||||
var responseMessage = TestHelper.CreateResponseMessage(HttpStatusCode.RequestTimeout, "");
|
var responseMessage = TestHelper.CreateResponseMessage(HttpStatusCode.RequestTimeout, "");
|
||||||
|
Loading…
Reference in New Issue
Block a user