Files
w4rpservices/vendor/snowplow/referer-parser/dotnet/RefererParser.Tests/ParserTests.cs
2019-12-26 05:03:41 +00:00

131 lines
4.4 KiB
C#

using Newtonsoft.Json.Linq;
using RefererParser;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using Xunit;
namespace RefererParser.Tests
{
public class ParserTests
{
[Fact]
public void LoadCatalog()
{
Assert.True(Referers.Catalog["test"] == null);
}
[Fact]
public void TestReferers()
{
var set = from test in JArray.Parse(File.ReadAllText(@"referer-tests.json"))
let testObj = ((JObject)test)
select new {
Name = testObj["spec"].ToString(),
Uri = testObj["uri"].ToString(),
Medium = (RefererMedium)Enum.Parse(typeof(RefererMedium), testObj["medium"].ToString(), true),
Source = testObj["source"].ToString(),
Term = testObj["term"].ToString(),
Known = testObj["known"].ToString(),
};
foreach (var sample in set)
{
var result = Parser.Parse(new Uri(sample.Uri), "www.snowplowanalytics.com");
Assert.NotNull(result);
Assert.Equal(sample.Medium, result.Medium);
Assert.Equal(sample.Source, result.Source ?? string.Empty);
Assert.Equal(sample.Term, result.Term ?? string.Empty);
}
}
[Fact]
public void TestUnknownReferer()
{
var set = new[]
{
new
{
Name = "Unknown referer #1",
Url = "http://www.behance.net/gallery/psychicbazaarcom/2243272",
Source = string.Empty,
},
new
{
Name = "Unknown referer #2",
Url = "http://www.wishwall.me/home",
Source = string.Empty,
},
new
{
Name = "Unknown referer #3",
Url = "http://www.spyfu.com/domain.aspx?d=3897225171967988459",
Source = string.Empty,
},
new
{
Name = "Unknown referer #4",
Url = "http://seaqueen.wordpress.com/",
Source = string.Empty,
},
new
{
Name = "Non-search Yahoo! site",
Url = "http://finance.yahoo.com",
Source = "Yahoo!",
},
};
foreach (var sample in set)
{
var result = Parser.Parse(new Uri(sample.Url), "www.snowplowanalytics.com");
Assert.NotNull(result);
Assert.Equal(sample.Source, result.Source ?? string.Empty);
}
}
[Fact]
public void TestFalsePositivies()
{
var set = new[]
{
new
{
Name = "Unknown Google service",
Url = "http://xxx.google.com",
Medium = RefererMedium.Search,
Source = "Google",
Term = string.Empty
},
new
{
Name = "Unknown Yahoo! service",
Url = "http://yyy.yahoo.com",
Medium = RefererMedium.Search,
Source = "Yahoo!",
Term = string.Empty
},
new
{
Name = "Non-search Google Drive link",
Url = "http://www.google.com/url?q=http://www.whatismyreferer.com/&sa=D&usg=ALhdy2_qs3arPmg7E_e2aBkj6K0gHLa5rQ",
Medium = RefererMedium.Search,
Source = "Google",
Term = "http://www.whatismyreferer.com/",
},
};
foreach (var sample in set)
{
var result = Parser.Parse(new Uri(sample.Url), "www.snowplowanalytics.com");
Assert.NotNull(result);
Assert.Equal(sample.Source, result.Source ?? string.Empty);
}
}
}
}