Files
Libation/Source/_Tests/FileLiberator.Tests/WidevineRecommendationTests.cs

83 lines
2.6 KiB
C#

using AudibleApi;
using LibationFileManager;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Newtonsoft.Json.Linq;
namespace FileLiberator.Tests;
[TestClass]
public class WidevineRecommendationTests
{
private const string B08XDZCH78_JSON = """
{"error_code":"000307","message":"Unable to retrieve asset details from Sable(AssetInfos), for marketplaceId:AF2M0KC94RCEA, asin:B08XDZCH78, acr:null, skuLite:BK_ACX0_239890, version:LATEST, aaaClientId:urn:cdo:AudibleApiExternalRouterService:Prod:Default"}
""";
[TestCleanup]
public void RestoreConfiguration() => Configuration.RestoreSingletonInstance();
[TestMethod]
public void IsAdrmLicenseUnavailableError_matches_known_Sable_acr_null_licenserequest()
{
var ex = new ApiErrorException(
"https://api.audible.com/1.0/content/B08XDZCH78/licenserequest",
JObject.Parse(B08XDZCH78_JSON),
WidevineRecommendation.SableAssetErrorCode);
Assert.IsTrue(WidevineRecommendation.IsAdrmLicenseUnavailableError(ex));
}
[TestMethod]
public void IsAdrmLicenseUnavailableError_rejects_000307_without_acr_null()
{
var ex = new ApiErrorException(
"https://api.audible.com/1.0/content/B00/licenserequest",
new JObject
{
{ "error_code", WidevineRecommendation.SableAssetErrorCode },
{ "message", "No response groups populated." }
},
WidevineRecommendation.SableAssetErrorCode);
Assert.IsFalse(WidevineRecommendation.IsAdrmLicenseUnavailableError(ex));
}
[TestMethod]
public void IsAdrmLicenseUnavailableError_requires_licenserequest_uri()
{
var ex = new ApiErrorException(
"https://api.audible.com/1.0/content/B08XDZCH78/metadata",
JObject.Parse(B08XDZCH78_JSON),
WidevineRecommendation.SableAssetErrorCode);
Assert.IsFalse(WidevineRecommendation.IsAdrmLicenseUnavailableError(ex));
}
[TestMethod]
public void ShouldRecommendWidevine_when_pattern_matches_and_widevine_disabled()
{
var ex = new ApiErrorException(
"https://api.audible.com/1.0/content/B08XDZCH78/licenserequest",
JObject.Parse(B08XDZCH78_JSON),
WidevineRecommendation.SableAssetErrorCode);
var config = Configuration.CreateMockInstance();
config.UseWidevine = false;
Assert.IsTrue(WidevineRecommendation.ShouldRecommendWidevine(ex, config));
}
[TestMethod]
public void ShouldRecommendWidevine_false_when_widevine_already_enabled()
{
var ex = new ApiErrorException(
"https://api.audible.com/1.0/content/B08XDZCH78/licenserequest",
JObject.Parse(B08XDZCH78_JSON),
WidevineRecommendation.SableAssetErrorCode);
var config = Configuration.CreateMockInstance();
config.UseWidevine = true;
Assert.IsFalse(WidevineRecommendation.ShouldRecommendWidevine(ex, config));
}
}