131 lines
4.4 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
}
|