/src/NzbDrone.Integration.Test/ApiTests/IndexerFixture.cs

https://github.com/NzbDrone/NzbDrone · C# · 203 lines · 146 code · 57 blank · 0 comment · 4 complexity · 71e797233b0c7b57a58c0abb8226ebc1 MD5 · raw file

  1. using System.Linq;
  2. using FluentAssertions;
  3. using Newtonsoft.Json.Linq;
  4. using NUnit.Framework;
  5. using NzbDrone.Api.Indexers;
  6. using NzbDrone.Core.ThingiProvider;
  7. using Sonarr.Http.ClientSchema;
  8. namespace NzbDrone.Integration.Test.ApiTests
  9. {
  10. [TestFixture]
  11. public class IndexerFixture : IntegrationTest
  12. {
  13. [Test]
  14. [Ignore("Need mock Newznab to test")]
  15. public void should_have_built_in_indexer()
  16. {
  17. var indexers = Indexers.All();
  18. indexers.Should().NotBeEmpty();
  19. indexers.Should().NotContain(c => string.IsNullOrWhiteSpace(c.Name));
  20. indexers.Where(c => c.ConfigContract == typeof(NullConfig).Name).Should().OnlyContain(c => c.EnableRss);
  21. }
  22. private IndexerResource GetNewznabSchemav2(string name = null)
  23. {
  24. var schema = Indexers.Schema().First(v => v.Implementation == "Newznab");
  25. schema.Name = name;
  26. schema.EnableRss = false;
  27. schema.EnableSearch = false;
  28. return schema;
  29. }
  30. private IndexerResource GetNewznabSchemav3(string name = null)
  31. {
  32. var schema = Indexersv3.Schema().First(v => v.Implementation == "Newznab");
  33. schema.Name = name;
  34. schema.EnableRss = false;
  35. schema.EnableSearch = false;
  36. return schema;
  37. }
  38. private Field GetCategoriesField(IndexerResource resource)
  39. {
  40. var field = resource.Fields.First(v => v.Name == "categories");
  41. return field;
  42. }
  43. [Test]
  44. public void v2_categories_should_be_array()
  45. {
  46. var schema = GetNewznabSchemav2();
  47. var categoriesField = GetCategoriesField(schema);
  48. categoriesField.Value.Should().BeOfType<JArray>();
  49. }
  50. [Test]
  51. public void v3_categories_should_be_array()
  52. {
  53. var schema = GetNewznabSchemav3();
  54. var categoriesField = GetCategoriesField(schema);
  55. categoriesField.Value.Should().BeOfType<JArray>();
  56. }
  57. [Test]
  58. public void v2_categories_should_accept_null()
  59. {
  60. var schema = GetNewznabSchemav2("Testv2null");
  61. var categoriesField = GetCategoriesField(schema);
  62. categoriesField.Value = null;
  63. var result = Indexers.Post(schema);
  64. var resultArray = GetCategoriesField(result).Value;
  65. resultArray.Should().BeOfType<JArray>();
  66. resultArray.As<JArray>().Should().BeEmpty();
  67. }
  68. [Test]
  69. public void v2_categories_should_accept_emptystring()
  70. {
  71. var schema = GetNewznabSchemav2("Testv2emptystring");
  72. var categoriesField = GetCategoriesField(schema);
  73. categoriesField.Value = "";
  74. var result = Indexers.Post(schema);
  75. var resultArray = GetCategoriesField(result).Value;
  76. resultArray.Should().BeOfType<JArray>();
  77. resultArray.As<JArray>().Should().BeEmpty();
  78. }
  79. [Test]
  80. public void v2_categories_should_accept_string()
  81. {
  82. var schema = GetNewznabSchemav2("Testv2string");
  83. var categoriesField = GetCategoriesField(schema);
  84. categoriesField.Value = "1000,1010";
  85. var result = Indexers.Post(schema);
  86. var resultArray = GetCategoriesField(result).Value;
  87. resultArray.Should().BeOfType<JArray>();
  88. resultArray.As<JArray>().ToObject<int[]>().Should().BeEquivalentTo(new[] { 1000, 1010 });
  89. }
  90. [Test]
  91. public void v2_categories_should_accept_array()
  92. {
  93. var schema = GetNewznabSchemav2("Testv2array");
  94. var categoriesField = GetCategoriesField(schema);
  95. categoriesField.Value = new object[] { 1000, 1010 };
  96. var result = Indexers.Post(schema);
  97. var resultArray = GetCategoriesField(result).Value;
  98. resultArray.Should().BeOfType<JArray>();
  99. resultArray.As<JArray>().ToObject<int[]>().Should().BeEquivalentTo(new[] { 1000, 1010 });
  100. }
  101. [Test]
  102. public void v3_categories_should_accept_null()
  103. {
  104. var schema = GetNewznabSchemav3("Testv3null");
  105. var categoriesField = GetCategoriesField(schema);
  106. categoriesField.Value = null;
  107. var result = Indexersv3.Post(schema);
  108. var resultArray = GetCategoriesField(result).Value;
  109. resultArray.Should().BeOfType<JArray>();
  110. resultArray.As<JArray>().Should().BeEmpty();
  111. }
  112. [Test]
  113. public void v3_categories_should_accept_emptystring()
  114. {
  115. var schema = GetNewznabSchemav3("Testv3emptystring");
  116. var categoriesField = GetCategoriesField(schema);
  117. categoriesField.Value = "";
  118. var result = Indexersv3.Post(schema);
  119. var resultArray = GetCategoriesField(result).Value;
  120. resultArray.Should().BeOfType<JArray>();
  121. resultArray.As<JArray>().Should().BeEmpty();
  122. }
  123. [Test]
  124. public void v3_categories_should_accept_string()
  125. {
  126. var schema = GetNewznabSchemav3("Testv3string");
  127. var categoriesField = GetCategoriesField(schema);
  128. categoriesField.Value = "1000,1010";
  129. var result = Indexersv3.Post(schema);
  130. var resultArray = GetCategoriesField(result).Value;
  131. resultArray.Should().BeOfType<JArray>();
  132. resultArray.As<JArray>().ToObject<int[]>().Should().BeEquivalentTo(new[] { 1000, 1010 });
  133. }
  134. [Test]
  135. public void v3_categories_should_accept_array()
  136. {
  137. var schema = GetNewznabSchemav3("Testv3array");
  138. var categoriesField = GetCategoriesField(schema);
  139. categoriesField.Value = new object[] { 1000, 1010 };
  140. var result = Indexersv3.Post(schema);
  141. var resultArray = GetCategoriesField(result).Value;
  142. resultArray.Should().BeOfType<JArray>();
  143. resultArray.As<JArray>().ToObject<int[]>().Should().BeEquivalentTo(new[] { 1000, 1010 });
  144. }
  145. }
  146. }