using FluentAssertions; using NUnit.Framework; using NzbDrone.Api.Indexers; using System.Linq; using System.Net; namespace NzbDrone.Integration.Test { [TestFixture] public class ReleaseIntegrationTest : IntegrationTest { [Test] public void should_only_have_unknown_series_releases() { var releases = Releases.All(); var indexers = Indexers.All(); releases.Should().OnlyContain(c => c.Rejections.Contains("Unknown Series")); releases.Should().OnlyContain(c => BeValidRelease(c)); } [Test] public void should_reject_unknown_release() { var result = Releases.Post(new ReleaseResource { Guid = "unknown" }, HttpStatusCode.NotFound); result.Id.Should().Be(0); } [Test] public void should_accept_request_with_only_guid_supplied() { var releases = Releases.All(); // InternalServerError is caused by the Release being invalid for download (no Series). // But if it didn't accept it, it would return NotFound. // TODO: Maybe we should create a full mock Newznab server endpoint. //var result = Releases.Post(new ReleaseResource { Guid = releases.First().Guid }); //result.Guid.Should().Be(releases.First().Guid); var result = Releases.Post(new ReleaseResource { Guid = releases.First().Guid }, HttpStatusCode.InternalServerError); } private bool BeValidRelease(ReleaseResource releaseResource) { releaseResource.Guid.Should().NotBeNullOrEmpty(); releaseResource.Age.Should().BeGreaterOrEqualTo(-1); releaseResource.Title.Should().NotBeNullOrWhiteSpace(); releaseResource.DownloadUrl.Should().NotBeNullOrWhiteSpace(); releaseResource.SeriesTitle.Should().NotBeNullOrWhiteSpace(); //TODO: uncomment these after moving to restsharp for rss //releaseResource.NzbInfoUrl.Should().NotBeNullOrWhiteSpace(); //releaseResource.Size.Should().BeGreaterThan(0); return true; } } }