mirror of https://github.com/lidarr/Lidarr
Fixed: Mock AcoustId responses so tests don't fail when API down
This commit is contained in:
parent
bbca9d1ede
commit
2f96c962a5
File diff suppressed because one or more lines are too long
|
@ -1,23 +1,55 @@
|
||||||
using FluentAssertions;
|
using System;
|
||||||
using NUnit.Framework;
|
|
||||||
using NzbDrone.Core.Test.Framework;
|
|
||||||
using NzbDrone.Core.Parser;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using NzbDrone.Core.Parser.Model;
|
|
||||||
using System;
|
|
||||||
using NzbDrone.Common.Http;
|
|
||||||
using Moq;
|
|
||||||
using static NzbDrone.Core.Parser.FingerprintingService;
|
|
||||||
using NzbDrone.Test.Common;
|
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using FluentAssertions;
|
||||||
|
using Moq;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using NzbDrone.Common.EnvironmentInfo;
|
||||||
|
using NzbDrone.Common.Http;
|
||||||
|
using NzbDrone.Core.Parser;
|
||||||
|
using NzbDrone.Core.Parser.Model;
|
||||||
|
using NzbDrone.Core.Test.Framework;
|
||||||
|
using NzbDrone.Test.Common;
|
||||||
|
using static NzbDrone.Core.Parser.FingerprintingService;
|
||||||
|
|
||||||
namespace NzbDrone.Core.Test.ParserTests
|
namespace NzbDrone.Core.Test.ParserTests
|
||||||
{
|
{
|
||||||
[TestFixture]
|
[TestFixture]
|
||||||
public class FingerprintingServiceFixture : CoreTest<FingerprintingService>
|
public class FingerprintingServiceFixture : CoreTest<FingerprintingService>
|
||||||
{
|
{
|
||||||
|
public class FingerPrintTest
|
||||||
|
{
|
||||||
|
public string RequestContent { get; set; }
|
||||||
|
public string Response { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[SetUp]
|
||||||
|
public void UseAcoustidResponses()
|
||||||
|
{
|
||||||
|
// responses were generated by editing HttpClient to write out the content bytes as a string
|
||||||
|
// using BitConverter.ToString(request.ContentData)
|
||||||
|
var path = Path.Combine(TestContext.CurrentContext.TestDirectory, "Files", "Fingerprinting", "AcoustidResponses.json");
|
||||||
|
var responses = JsonConvert.DeserializeObject<List<FingerPrintTest>>(File.ReadAllText(path));
|
||||||
|
|
||||||
|
foreach (var response in responses)
|
||||||
|
{
|
||||||
|
Mocker.GetMock<IHttpClient>()
|
||||||
|
.Setup(o => o.Post<LookupResponse>(
|
||||||
|
It.Is<HttpRequest>(v =>
|
||||||
|
v.Url.Equals(new HttpUri("https://api.acoustid.org/v2/lookup")) &&
|
||||||
|
v.Headers.Contains(new KeyValuePair<string, string>("Content-Encoding", "gzip")) &&
|
||||||
|
v.Headers.ContentType == "application/x-www-form-urlencoded" &&
|
||||||
|
// Skip past the first bit of gzip header which varies by OS:
|
||||||
|
// http://www.onicos.com/staff/iz/formats/gzip.html
|
||||||
|
BitConverter.ToString(v.ContentData).Substring(31) == response.RequestContent.Substring(31)
|
||||||
|
)))
|
||||||
|
.Returns<HttpRequest>(r => new HttpResponse<LookupResponse>(new HttpResponse(r, new HttpHeader(), response.Response)));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void should_parse_fpcalc_json()
|
public void should_parse_fpcalc_json()
|
||||||
|
@ -72,8 +104,6 @@ FINGERPRINT=AQAHJlMURlEURcgP6cwRD43Y4Ptw9FowncWPWkf6GB9-JYdP9OgJHw8u4Apw4SsOHMdx
|
||||||
[TestCase("nin.flac")]
|
[TestCase("nin.flac")]
|
||||||
public void should_lookup_file(string file)
|
public void should_lookup_file(string file)
|
||||||
{
|
{
|
||||||
UseRealHttp();
|
|
||||||
|
|
||||||
var path = Path.Combine(TestContext.CurrentContext.TestDirectory, "Files", "Media", file);
|
var path = Path.Combine(TestContext.CurrentContext.TestDirectory, "Files", "Media", file);
|
||||||
var localTrack = new LocalTrack { Path = path };
|
var localTrack = new LocalTrack { Path = path };
|
||||||
Subject.Lookup(new List<LocalTrack> { localTrack }, 0.5);
|
Subject.Lookup(new List<LocalTrack> { localTrack }, 0.5);
|
||||||
|
@ -84,8 +114,6 @@ FINGERPRINT=AQAHJlMURlEURcgP6cwRD43Y4Ptw9FowncWPWkf6GB9-JYdP9OgJHw8u4Apw4SsOHMdx
|
||||||
[Test]
|
[Test]
|
||||||
public void should_lookup_list()
|
public void should_lookup_list()
|
||||||
{
|
{
|
||||||
UseRealHttp();
|
|
||||||
|
|
||||||
var files = new [] {
|
var files = new [] {
|
||||||
"nin.mp3",
|
"nin.mp3",
|
||||||
"nin.flac"
|
"nin.flac"
|
||||||
|
@ -99,8 +127,6 @@ FINGERPRINT=AQAHJlMURlEURcgP6cwRD43Y4Ptw9FowncWPWkf6GB9-JYdP9OgJHw8u4Apw4SsOHMdx
|
||||||
[Test]
|
[Test]
|
||||||
public void should_lookup_list_when_fpcalc_fails_for_some_files()
|
public void should_lookup_list_when_fpcalc_fails_for_some_files()
|
||||||
{
|
{
|
||||||
UseRealHttp();
|
|
||||||
|
|
||||||
var files = new [] {
|
var files = new [] {
|
||||||
"nin.mp3",
|
"nin.mp3",
|
||||||
"missing.mp3",
|
"missing.mp3",
|
||||||
|
@ -119,8 +145,6 @@ FINGERPRINT=AQAHJlMURlEURcgP6cwRD43Y4Ptw9FowncWPWkf6GB9-JYdP9OgJHw8u4Apw4SsOHMdx
|
||||||
[Test]
|
[Test]
|
||||||
public void should_lookup_list_when_fpcalc_fails_for_all_files()
|
public void should_lookup_list_when_fpcalc_fails_for_all_files()
|
||||||
{
|
{
|
||||||
UseRealHttp();
|
|
||||||
|
|
||||||
var files = new [] {
|
var files = new [] {
|
||||||
"missing1.mp3",
|
"missing1.mp3",
|
||||||
"missing2.mp3"
|
"missing2.mp3"
|
||||||
|
@ -137,8 +161,6 @@ FINGERPRINT=AQAHJlMURlEURcgP6cwRD43Y4Ptw9FowncWPWkf6GB9-JYdP9OgJHw8u4Apw4SsOHMdx
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_fail_if_duration_reported_as_zero()
|
public void should_not_fail_if_duration_reported_as_zero()
|
||||||
{
|
{
|
||||||
UseRealHttp();
|
|
||||||
|
|
||||||
var path = Path.Combine(TestContext.CurrentContext.TestDirectory, "Files", "Media", "missing.mp3");
|
var path = Path.Combine(TestContext.CurrentContext.TestDirectory, "Files", "Media", "missing.mp3");
|
||||||
var localTrack = new LocalTrack { Path = path };
|
var localTrack = new LocalTrack { Path = path };
|
||||||
var acoustId = new AcoustId {
|
var acoustId = new AcoustId {
|
||||||
|
@ -152,8 +174,6 @@ FINGERPRINT=AQAHJlMURlEURcgP6cwRD43Y4Ptw9FowncWPWkf6GB9-JYdP9OgJHw8u4Apw4SsOHMdx
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_throw_if_fingerprint_invalid()
|
public void should_not_throw_if_fingerprint_invalid()
|
||||||
{
|
{
|
||||||
UseRealHttp();
|
|
||||||
|
|
||||||
var path = Path.Combine(TestContext.CurrentContext.TestDirectory, "Files", "Media", "missing.mp3");
|
var path = Path.Combine(TestContext.CurrentContext.TestDirectory, "Files", "Media", "missing.mp3");
|
||||||
var localTrack = new LocalTrack { Path = path };
|
var localTrack = new LocalTrack { Path = path };
|
||||||
var acoustId = new AcoustId {
|
var acoustId = new AcoustId {
|
||||||
|
@ -169,8 +189,6 @@ FINGERPRINT=AQAHJlMURlEURcgP6cwRD43Y4Ptw9FowncWPWkf6GB9-JYdP9OgJHw8u4Apw4SsOHMdx
|
||||||
[Test]
|
[Test]
|
||||||
public void should_not_fail_for_some_invalid_fingerprints()
|
public void should_not_fail_for_some_invalid_fingerprints()
|
||||||
{
|
{
|
||||||
UseRealHttp();
|
|
||||||
|
|
||||||
var files = new [] {
|
var files = new [] {
|
||||||
"nin.mp3",
|
"nin.mp3",
|
||||||
"nin.flac"
|
"nin.flac"
|
||||||
|
|
Loading…
Reference in New Issue