Skip to content

Commit

Permalink
Merged Pull Request '#418 feature/remove-special-evidence->version/4.…
Browse files Browse the repository at this point in the history
…5: Revert #379 "add special evidence to the evidence key filter"'

This reverts commit 52ff444, reversing
changes made to 2ef60da.
  • Loading branch information
drasmart authored Feb 8, 2025
1 parent 7f1d33c commit 4fe7dc8
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 83 deletions.
17 changes: 0 additions & 17 deletions FiftyOne.DeviceDetection.Data/Constants.cs
Original file line number Diff line number Diff line change
Expand Up @@ -172,22 +172,5 @@ public static class Constants
Pipeline.Core.Constants.EVIDENCE_HTTPHEADER_PREFIX +
Pipeline.Core.Constants.EVIDENCE_SEPERATOR +
EVIDENCE_SECCHUA_PLATFORM_VERSION_SUFFIX;

private const string ghev = "gethighentropyvalues";
public const string EVIDENCE_COOKIE_GHEV =
Pipeline.Core.Constants.EVIDENCE_COOKIE_PREFIX +
Pipeline.Core.Constants.EVIDENCE_SEPERATOR +
Pipeline.Engines.Constants.FIFTYONE_COOKIE_PREFIX + ghev;
public const string EVIDENCE_QUERY_GHEV = Pipeline.Core.Constants.EVIDENCE_QUERY_PREFIX +
Pipeline.Core.Constants.EVIDENCE_SEPERATOR +
Pipeline.Engines.Constants.FIFTYONE_COOKIE_PREFIX + ghev;

private const string sua = "structureduseragent";
public const string EVIDENCE_COOKIE_SUA = Pipeline.Core.Constants.EVIDENCE_COOKIE_PREFIX +
Pipeline.Core.Constants.EVIDENCE_SEPERATOR +
Pipeline.Engines.Constants.FIFTYONE_COOKIE_PREFIX + sua;
public const string EVIDENCE_QUERY_SUA = Pipeline.Core.Constants.EVIDENCE_QUERY_PREFIX +
Pipeline.Core.Constants.EVIDENCE_SEPERATOR +
Pipeline.Engines.Constants.FIFTYONE_COOKIE_PREFIX + sua;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -394,16 +394,8 @@ private IList<IFiftyOneAspectPropertyMetaData> ConstructProperties()
/// </summary>
private void InitEngineMetaData()
{
var keyList = new List<string>(_engine.getKeys())
{
Shared.Constants.EVIDENCE_QUERY_GHEV,
Shared.Constants.EVIDENCE_QUERY_SUA,
Shared.Constants.EVIDENCE_COOKIE_GHEV,
Shared.Constants.EVIDENCE_COOKIE_SUA
};

_evidenceKeyFilter = new EvidenceKeyFilterWhitelist(
keyList,
new List<string>(_engine.getKeys()),
StringComparer.InvariantCultureIgnoreCase);

_properties = ConstructProperties();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@
using System.Threading.Tasks;
using FiftyOne.DeviceDetection.Hash.Engine.OnPremise.Interop;
using FiftyOne.Pipeline.Core.Data;
using Constants = FiftyOne.DeviceDetection.Shared.Constants;

namespace FiftyOne.DeviceDetection.Hash.Tests.FlowElements
{
Expand Down Expand Up @@ -101,7 +100,7 @@ public void TestDetection()
}

[TestMethod]
[DataRow(TestHelpers.Constants.TAC_HASH_DATA_FILE_NAME, TestHelpers.Constants.JsonOutputTAC)]
[DataRow(TestHelpers.Constants.TAC_HASH_DATA_FILE_NAME, TestHelpers.Constants.JsonOutputTAC)]
[DataRow(TestHelpers.Constants.LITE_HASH_DATA_FILE_NAME, TestHelpers.Constants.JsonOutputLite)]
public void TestParallelSerialization(string fileName, string expectedOutput)
{
Expand All @@ -115,9 +114,9 @@ public void TestParallelSerialization(string fileName, string expectedOutput)
string[] results = new string[N];
var deviceDatas = new List<IDeviceDataHash>();
var deviceDatasNone = new List<IDeviceDataHash>();
for (int i = 0; i < N; i++)
{
{
for (int i = 0; i < N; i++)
{
{
var flowData = wrapper.Pipeline.CreateFlowData();
flowData.AddEvidence(
"header.user-agent",
Expand All @@ -126,77 +125,57 @@ public void TestParallelSerialization(string fileName, string expectedOutput)
var deviceData = flowData.Get<DeviceDataHash>();
Assert.IsNotNull(deviceData);
deviceDatas.Add(deviceData);
flowDatas.Add(flowData); //prevent disposing
flowDatas.Add(flowData); //prevent disposing
}
{
{
var flowData = wrapper.Pipeline.CreateFlowData();
flowData.AddEvidence("nonevidence", "none");
flowData.Process();
var deviceData = flowData.Get<DeviceDataHash>();
Assert.IsNotNull(deviceData);
deviceDatasNone.Add(deviceData);
}
}
}

Parallel.For(0, N, (int i) =>
{
string json = deviceDatas[i].GetAllValuesJson();
Assert.AreEqual(json, expectedOutput);
results[i] = json;
string json = deviceDatas[i].GetAllValuesJson();
Assert.AreEqual(json, expectedOutput);
results[i] = json;
Assert.AreEqual(deviceDatasNone[i].GetAllValuesJson(), "{}");
});

foreach (var result in results)
{
Assert.AreEqual(result, expectedOutput);
foreach (var result in results)
{
Assert.AreEqual(result, expectedOutput);
}
}

[TestMethod]
public void TestTransform()
{
var transform = new Transform();

var result1 = transform.fromJsonGHEV("{\"architecture\":\"x86\",\"brands\":[{\"brand\":\"Chromium\",\"version\":\"128\"},{\"brand\":\"Not;A=Brand\",\"version\":\"24\"},{\"brand\":\"Google Chrome\",\"version\":\"128\"}],\"fullVersionList\":[{\"brand\":\"Chromium\",\"version\":\"128.0.6613.84\"},{\"brand\":\"Not;A=Brand\",\"version\":\"24.0.0.0\"},{\"brand\":\"Google Chrome\",\"version\":\"128.0.6613.84\"}],\"mobile\":false,\"model\":\"\",\"platform\":\"macOS\",\"platformVersion\":\"14.6.1\"}");
Assert.AreEqual(result1["sec-ch-ua-arch"], "\"x86\"");
Assert.AreEqual(result1["sec-ch-ua"], "\"Chromium\";v=\"128\", \"Not;A=Brand\";v=\"24\", \"Google Chrome\";v=\"128\"");
Assert.AreEqual(result1["sec-ch-ua-full-version-list"], "\"Chromium\";v=\"128.0.6613.84\", \"Not;A=Brand\";v=\"24.0.0.0\", \"Google Chrome\";v=\"128.0.6613.84\"");
Assert.AreEqual(result1["sec-ch-ua-platform"], "\"macOS\"");
Assert.AreEqual(result1["sec-ch-ua-platform-version"], "\"14.6.1\"");
Assert.AreEqual(result1["sec-ch-ua-mobile"], "?0");

var result2 = transform.fromSUA("{\"browsers\":[{\"brand\":\"Chromium\",\"version\":[\"124\",\"0\",\"6367\",\"82\"]},{\"brand\":\"Google Chrome\",\"version\":[\"124\",\"0\",\"6367\",\"82\"]},{\"brand\":\"Not-A.Brand\",\"version\":[\"99\",\"0\",\"0\",\"0\"]}],\"platform\":{\"brand\":\"Android\",\"version\":[\"14\",\"0\",\"0\"]},\"mobile\":1,\"model\":\"SM-G998U\",\"source\":2}");
Assert.AreEqual(result2["sec-ch-ua-model"], "\"SM-G998U\"");
Assert.AreEqual(result2["sec-ch-ua-full-version-list"], "\"Chromium\";v=\"124.0.6367.82\", \"Google Chrome\";v=\"124.0.6367.82\", \"Not-A.Brand\";v=\"99.0.0.0\"");
Assert.AreEqual(result2["sec-ch-ua-platform"], "\"Android\"");
Assert.AreEqual(result2["sec-ch-ua-platform-version"], "\"14.0.0\"");
Assert.AreEqual(result2["sec-ch-ua-mobile"], "?1");

var result3 = transform.fromBase64GHEV("eyJhcmNoaXRlY3R1cmUiOiJ4ODYiLCJiaXRuZXNzIjoiNjQiLCJicmFuZHMiOlt7ImJyYW5kIjoiQ2hyb21pdW0iLCJ2ZXJzaW9uIjoiMTI4In0seyJicmFuZCI6Ik5vdDtBPUJyYW5kIiwidmVyc2lvbiI6IjI0In0seyJicmFuZCI6Ikdvb2dsZSBDaHJvbWUiLCJ2ZXJzaW9uIjoiMTI4In1dLCJmdWxsVmVyc2lvbkxpc3QiOlt7ImJyYW5kIjoiQ2hyb21pdW0iLCJ2ZXJzaW9uIjoiMTI4LjAuNjYxMy44NCJ9LHsiYnJhbmQiOiJOb3Q7QT1CcmFuZCIsInZlcnNpb24iOiIyNC4wLjAuMCJ9LHsiYnJhbmQiOiJHb29nbGUgQ2hyb21lIiwidmVyc2lvbiI6IjEyOC4wLjY2MTMuODQifV0sIm1vYmlsZSI6ZmFsc2UsIm1vZGVsIjoiTWFjQm9vayBQcm8iLCJwbGF0Zm9ybSI6Im1hY09TIn0=");
Assert.AreEqual(result3["sec-ch-ua-arch"], "\"x86\"");
Assert.AreEqual(result3["sec-ch-ua-full-version-list"], "\"Chromium\";v=\"128.0.6613.84\", \"Not;A=Brand\";v=\"24.0.0.0\", \"Google Chrome\";v=\"128.0.6613.84\"");
Assert.AreEqual(result3["sec-ch-ua-platform"], "\"macOS\"");
public void TestTransform()
{
var transform = new Transform();

var result1 = transform.fromJsonGHEV("{\"architecture\":\"x86\",\"brands\":[{\"brand\":\"Chromium\",\"version\":\"128\"},{\"brand\":\"Not;A=Brand\",\"version\":\"24\"},{\"brand\":\"Google Chrome\",\"version\":\"128\"}],\"fullVersionList\":[{\"brand\":\"Chromium\",\"version\":\"128.0.6613.84\"},{\"brand\":\"Not;A=Brand\",\"version\":\"24.0.0.0\"},{\"brand\":\"Google Chrome\",\"version\":\"128.0.6613.84\"}],\"mobile\":false,\"model\":\"\",\"platform\":\"macOS\",\"platformVersion\":\"14.6.1\"}");
Assert.AreEqual(result1["sec-ch-ua-arch"], "\"x86\"");
Assert.AreEqual(result1["sec-ch-ua"], "\"Chromium\";v=\"128\", \"Not;A=Brand\";v=\"24\", \"Google Chrome\";v=\"128\"");
Assert.AreEqual(result1["sec-ch-ua-full-version-list"], "\"Chromium\";v=\"128.0.6613.84\", \"Not;A=Brand\";v=\"24.0.0.0\", \"Google Chrome\";v=\"128.0.6613.84\"");
Assert.AreEqual(result1["sec-ch-ua-platform"], "\"macOS\"");
Assert.AreEqual(result1["sec-ch-ua-platform-version"], "\"14.6.1\"");
Assert.AreEqual(result1["sec-ch-ua-mobile"], "?0");

var result2 = transform.fromSUA("{\"browsers\":[{\"brand\":\"Chromium\",\"version\":[\"124\",\"0\",\"6367\",\"82\"]},{\"brand\":\"Google Chrome\",\"version\":[\"124\",\"0\",\"6367\",\"82\"]},{\"brand\":\"Not-A.Brand\",\"version\":[\"99\",\"0\",\"0\",\"0\"]}],\"platform\":{\"brand\":\"Android\",\"version\":[\"14\",\"0\",\"0\"]},\"mobile\":1,\"model\":\"SM-G998U\",\"source\":2}");
Assert.AreEqual(result2["sec-ch-ua-model"], "\"SM-G998U\"");
Assert.AreEqual(result2["sec-ch-ua-full-version-list"], "\"Chromium\";v=\"124.0.6367.82\", \"Google Chrome\";v=\"124.0.6367.82\", \"Not-A.Brand\";v=\"99.0.0.0\"");
Assert.AreEqual(result2["sec-ch-ua-platform"], "\"Android\"");
Assert.AreEqual(result2["sec-ch-ua-platform-version"], "\"14.0.0\"");
Assert.AreEqual(result2["sec-ch-ua-mobile"], "?1");

var result3 = transform.fromBase64GHEV("eyJhcmNoaXRlY3R1cmUiOiJ4ODYiLCJiaXRuZXNzIjoiNjQiLCJicmFuZHMiOlt7ImJyYW5kIjoiQ2hyb21pdW0iLCJ2ZXJzaW9uIjoiMTI4In0seyJicmFuZCI6Ik5vdDtBPUJyYW5kIiwidmVyc2lvbiI6IjI0In0seyJicmFuZCI6Ikdvb2dsZSBDaHJvbWUiLCJ2ZXJzaW9uIjoiMTI4In1dLCJmdWxsVmVyc2lvbkxpc3QiOlt7ImJyYW5kIjoiQ2hyb21pdW0iLCJ2ZXJzaW9uIjoiMTI4LjAuNjYxMy44NCJ9LHsiYnJhbmQiOiJOb3Q7QT1CcmFuZCIsInZlcnNpb24iOiIyNC4wLjAuMCJ9LHsiYnJhbmQiOiJHb29nbGUgQ2hyb21lIiwidmVyc2lvbiI6IjEyOC4wLjY2MTMuODQifV0sIm1vYmlsZSI6ZmFsc2UsIm1vZGVsIjoiTWFjQm9vayBQcm8iLCJwbGF0Zm9ybSI6Im1hY09TIn0=");
Assert.AreEqual(result3["sec-ch-ua-arch"], "\"x86\"");
Assert.AreEqual(result3["sec-ch-ua-full-version-list"], "\"Chromium\";v=\"128.0.6613.84\", \"Not;A=Brand\";v=\"24.0.0.0\", \"Google Chrome\";v=\"128.0.6613.84\"");
Assert.AreEqual(result3["sec-ch-ua-platform"], "\"macOS\"");
Assert.AreEqual(result3["sec-ch-ua-mobile"], "?0");
}

[TestMethod]
public void TestHardcodedEvidenceKeyFilterKeys()
{
InitWrapperAndUserAgents(PerformanceProfiles.MaxPerformance);

Assert.IsTrue(Wrapper.Engine.EvidenceKeyFilter.Include(Constants.EVIDENCE_QUERY_GHEV));
Assert.IsTrue(Wrapper.Engine.EvidenceKeyFilter.Include(Constants.EVIDENCE_QUERY_SUA));
Assert.IsTrue(Wrapper.Engine.EvidenceKeyFilter.Include(Constants.EVIDENCE_COOKIE_GHEV));
Assert.IsTrue(Wrapper.Engine.EvidenceKeyFilter.Include(Constants.EVIDENCE_COOKIE_SUA));

//just in case also testing spelled out variant of the constants:
Assert.IsTrue(Wrapper.Engine.EvidenceKeyFilter.Include("query.51d_gethighentropyvalues"));
Assert.IsTrue(Wrapper.Engine.EvidenceKeyFilter.Include("query.51d_structureduseragent"));
Assert.IsTrue(Wrapper.Engine.EvidenceKeyFilter.Include("cookie.51d_gethighentropyvalues"));
Assert.IsTrue(Wrapper.Engine.EvidenceKeyFilter.Include("cookie.51d_structureduseragent"));

Assert.IsTrue(Wrapper.Engine.EvidenceKeyFilter.Include("header.user-agent"));
Assert.IsFalse(Wrapper.Engine.EvidenceKeyFilter.Include("header.nonexistant"));
}
}
}

0 comments on commit 4fe7dc8

Please sign in to comment.