//[TestCase("【漫貓&愛戀字幕組】[五等分的新娘/五等分的花嫁/五等分の花嫁][Go-Toubun_no_Hanayome][01_03][BIG5][720P][HEVC]", "Go-Toubun no Hanayome", "漫貓&愛戀字幕組", new[] { 1, 2, 3 })] public void should_parse_chinese_multiepisode_releases(string postTitle, string title, string subgroup, int[] absoluteEpisodeNumbers) { postTitle = XmlCleaner.ReplaceUnicode(postTitle); var result = Parser.Parser.ParseTitle(postTitle); result.Should().NotBeNull(); result.ReleaseGroup.Should().Be(subgroup); result.AbsoluteEpisodeNumbers.Should().BeEquivalentTo(absoluteEpisodeNumbers); result.SeriesTitle.Should().Be(title); result.FullSeason.Should().BeFalse(); }
public void should_parse_false_positive_chinese_anime_releases(string postTitle, string title, string subgroup, int absoluteEpisodeNumber) { postTitle = XmlCleaner.ReplaceUnicode(postTitle); var result = Parser.Parser.ParseTitle(postTitle); result.Should().NotBeNull(); result.ReleaseGroup.Should().Be(subgroup); result.AbsoluteEpisodeNumbers.Single().Should().Be(absoluteEpisodeNumber); result.SeriesTitle.Should().Be(title); result.FullSeason.Should().BeFalse(); }
public void XmlCleaner_CleanSecureData_ClearOneSecureKeyInXmlElementValue_OneSecureKeyInXmlElementValueCleared() { // Arrange var xml = "<auth><user>max</user><pass>123456</pass></auth>"; var secureKey = "pass"; var xmlCleaner = new XmlCleaner(); var expectedResult = "<auth><user>max</user><pass>XXXXXX</pass></auth>"; // Act var cleanedXml = xmlCleaner.CleanSecureData(xml, secureKey, SecureDataLocation.XmlElementValue); // Assert Assert.Equal(expectedResult, cleanedXml); }
public void XmlCleaner_CleanSecureData_ClearOneSecureKeyInXmlAttribute_OneSecureKeyInXmlAttributeCleared() { // Arrange var xml = @"<auth user=""max"" pass=""123456""/>"; var secureKey = "user"; var xmlCleaner = new XmlCleaner(); var expectedResult = @"<auth user=""XXX"" pass=""123456"" />"; // Act var resultXml = xmlCleaner.CleanSecureData(xml, secureKey, SecureDataLocation.XmlAttribute); // Assert Assert.Equal(expectedResult, resultXml); }
public void XmlCleaner_CleanSecureData_DoNotCleanSecureKeyIfWrongSecureDataLocationIsSpecified_SecureKeyNotCleared() { // Arrange var xml = @"<user login=""max"" pass=""123456"">Maxim</user>"; var secureKeyInXmlAttribute = "pass"; var xmlCleaner = new XmlCleaner(); var expectedResult = @"<user login=""max"" pass=""123456"">Maxim</user>"; // Act var resultXml = xmlCleaner.CleanSecureData(xml, secureKeyInXmlAttribute, SecureDataLocation.JsonAttribute); // Assert Assert.Equal(expectedResult, resultXml); }
public void XmlCleaner_CleanSecureData_ClearOneSecureKeyInXmlAttributeAndOneSecureKeyInXmlElementValue_OneSecureKeyInXmlAttributeAndOneSecureKeyInXmlElementValueCleared() { // Arrange var xml = @"<user login=""max"" pass=""123456"">Maxim</user>"; var secureKeyInXmlElement = "user"; var secureKeyInXmlAttribute = "pass"; var xmlCleaner = new XmlCleaner(); var expectedResult = @"<user login=""max"" pass=""XXXXXX"">XXXXX</user>"; // Act var resultXml = xmlCleaner.CleanSecureData(xml, secureKeyInXmlElement, SecureDataLocation.XmlElementValue); resultXml = xmlCleaner.CleanSecureData(resultXml, secureKeyInXmlAttribute, SecureDataLocation.XmlAttribute); // Assert Assert.Equal(expectedResult, resultXml); }
public void XmlCleaner_CleanSecureData_ClearTwoSecureKeysInXmlElementValue_TwoSecureKeysInXmlElementValueCleared() { // Arrange var xml = "<auth><user>max</user><pass>123456</pass></auth>"; var secureKey1 = "pass"; var secureKey2 = "user"; var xmlCleaner = new XmlCleaner(); var expectedResult = "<auth><user>XXX</user><pass>XXXXXX</pass></auth>"; // Act var resultXml = xmlCleaner.CleanSecureData(xml, secureKey1, SecureDataLocation.XmlElementValue); resultXml = xmlCleaner.CleanSecureData(resultXml, secureKey2, SecureDataLocation.XmlElementValue); // Assert Assert.Equal(expectedResult, resultXml); }
private bool IsEZTVFeed(IndexerResponse response) { var content = XmlCleaner.ReplaceEntities(response.Content); content = XmlCleaner.ReplaceUnicode(content); using (var xmlTextReader = XmlReader.Create(new StringReader(content), new XmlReaderSettings { DtdProcessing = DtdProcessing.Parse, ValidationType = ValidationType.None, IgnoreComments = true, XmlResolver = null })) { var document = XDocument.Load(xmlTextReader); // Check Namespace if (document.Root == null) { throw new InvalidDataException("Could not parse IndexerResponse into XML."); } var ns = document.Root.GetNamespaceOfPrefix("torrent"); if (ns == "http://xmlns.ezrss.it/0.1/") { _logger.Trace("Identified feed as EZTV compatible by EZTV Namespace"); return(true); } // Check DTD in DocType if (document.DocumentType != null && document.DocumentType.SystemId == "http://xmlns.ezrss.it/0.1/dtd/") { _logger.Trace("Identified feed as EZTV compatible by EZTV DTD"); return(true); } // Check namespaces if (document.Descendants().Any(v => v.GetDefaultNamespace().NamespaceName == "http://xmlns.ezrss.it/0.1/")) { _logger.Trace("Identified feed as EZTV compatible by EZTV Namespace"); return(true); } return(false); } }