From 919d21ae63807fd1932221f299633216f2315643 Mon Sep 17 00:00:00 2001 From: Konrad Dysput Date: Tue, 4 Mar 2025 07:52:15 +0100 Subject: [PATCH 1/3] Make env variable optional --- Runtime/Model/JsonData/Annotations.cs | 22 +++++++--------------- Tests/Runtime/ClientSendTests.cs | 7 ++++++- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/Runtime/Model/JsonData/Annotations.cs b/Runtime/Model/JsonData/Annotations.cs index 87b423aa..acedbb6b 100644 --- a/Runtime/Model/JsonData/Annotations.cs +++ b/Runtime/Model/JsonData/Annotations.cs @@ -19,11 +19,6 @@ public class Annotations /// internal static Dictionary _environmentVariablesCache; - /// - /// Determinate if static helper should load environment variables or not. - /// - internal static bool VariablesLoaded; - /// /// Loaded environment variables /// @@ -31,16 +26,11 @@ public static Dictionary EnvironmentVariablesCache { get { - if (VariablesLoaded == false) - { - _environmentVariablesCache = SetEnvironmentVariables(); - VariablesLoaded = true; - } return _environmentVariablesCache; } set { - _environmentVariablesCache = value; + _environmentVariablesCache = SetEnvironmentVariables(_environmentVariablesCache); } } @@ -78,10 +68,9 @@ public Annotations(Exception exception, int gameObjectDepth) Exception = exception; } - private static Dictionary SetEnvironmentVariables() + private static Dictionary SetEnvironmentVariables(IDictionary environmentVariables) { var result = new Dictionary(); - var environmentVariables = Environment.GetEnvironmentVariables(); if (environmentVariables == null) { return result; @@ -104,7 +93,10 @@ private static Dictionary SetEnvironmentVariables() public BacktraceJObject ToJson() { var annotations = new BacktraceJObject(); - annotations.Add("Environment Variables", new BacktraceJObject(EnvironmentVariables)); + if (EnvironmentVariables != null) + { + annotations.Add("Environment Variables", new BacktraceJObject(EnvironmentVariables)); + } if (Exception != null) { @@ -203,4 +195,4 @@ private BacktraceJObject GetJObject(Component gameObject, string parentName = "" }); } } -} \ No newline at end of file +} diff --git a/Tests/Runtime/ClientSendTests.cs b/Tests/Runtime/ClientSendTests.cs index ce38be2a..f99ac0d0 100644 --- a/Tests/Runtime/ClientSendTests.cs +++ b/Tests/Runtime/ClientSendTests.cs @@ -3,6 +3,8 @@ using NUnit.Framework; using System; using System.Collections; +using System.Collections.Generic; +using System.Linq; using UnityEngine; using UnityEngine.TestTools; @@ -29,7 +31,7 @@ public void Setup() public void Cleanup() { client.RequestHandler = null; - Annotations.VariablesLoaded = false; + Annotations.EnvironmentVariablesCache = null; } [UnityTest] @@ -108,6 +110,9 @@ public IEnumerator PiiTests_ShouldModifyEnvironmentVariable_IntegrationShouldUse var environmentVariableKey = "foo"; var expectedValue = "bar"; + Annotations.EnvironmentVariablesCache = Environment.GetEnvironmentVariables() + .Cast() + .ToDictionary(entry => (string)entry.Key, entry => entry.Value as string); Annotations.EnvironmentVariablesCache[environmentVariableKey] = expectedValue; client.BeforeSend = (BacktraceData data) => From 908fc8f883f995d0707168019a583c58fc670a10 Mon Sep 17 00:00:00 2001 From: Konrad Dysput Date: Tue, 4 Mar 2025 12:04:15 +0100 Subject: [PATCH 2/3] Add more tests for all specific situations --- Runtime/Model/JsonData/Annotations.cs | 2 +- Tests/Runtime/ClientSendTests.cs | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Runtime/Model/JsonData/Annotations.cs b/Runtime/Model/JsonData/Annotations.cs index acedbb6b..05147688 100644 --- a/Runtime/Model/JsonData/Annotations.cs +++ b/Runtime/Model/JsonData/Annotations.cs @@ -30,7 +30,7 @@ public static Dictionary EnvironmentVariablesCache } set { - _environmentVariablesCache = SetEnvironmentVariables(_environmentVariablesCache); + _environmentVariablesCache = SetEnvironmentVariables(value); } } diff --git a/Tests/Runtime/ClientSendTests.cs b/Tests/Runtime/ClientSendTests.cs index f99ac0d0..3809f041 100644 --- a/Tests/Runtime/ClientSendTests.cs +++ b/Tests/Runtime/ClientSendTests.cs @@ -129,6 +129,25 @@ public IEnumerator PiiTests_ShouldModifyEnvironmentVariable_IntegrationShouldUse yield return null; } + [UnityTest] + public IEnumerator PiiTests_ShouldNotIncludeEnvironmentVariable_IntegrationShouldSkipEnvironmentVariables() + { + var trigger = false; + var exception = new Exception("custom exception message"); + + client.BeforeSend = (BacktraceData data) => + { + Assert.IsNull(data.Annotation.EnvironmentVariables); + trigger = true; + return data; + }; + client.Send(exception); + yield return WaitForFrame.Wait(); + + Assert.IsTrue(trigger); + yield return null; + } + [UnityTest] public IEnumerator PiiTests_ShouldRemoveEnvironmentVariableValue_IntegrationShouldUseModifiedEnvironmentVariables() From 5d1bc56a266f777d1d25602c13586adb5bb5fd34 Mon Sep 17 00:00:00 2001 From: Konrad Dysput Date: Tue, 4 Mar 2025 12:14:11 +0100 Subject: [PATCH 3/3] Use different handler --- Tests/Runtime/ClientSendTests.cs | 56 ++++++++++++++++---------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/Tests/Runtime/ClientSendTests.cs b/Tests/Runtime/ClientSendTests.cs index 3809f041..53742dd4 100644 --- a/Tests/Runtime/ClientSendTests.cs +++ b/Tests/Runtime/ClientSendTests.cs @@ -135,12 +135,13 @@ public IEnumerator PiiTests_ShouldNotIncludeEnvironmentVariable_IntegrationShoul var trigger = false; var exception = new Exception("custom exception message"); - client.BeforeSend = (BacktraceData data) => + client.RequestHandler = (string url, BacktraceData data) => { - Assert.IsNull(data.Annotation.EnvironmentVariables); trigger = true; - return data; + Assert.IsNull(data.Annotation.EnvironmentVariables); + return new BacktraceResult(); }; + client.Send(exception); yield return WaitForFrame.Wait(); @@ -148,30 +149,23 @@ public IEnumerator PiiTests_ShouldNotIncludeEnvironmentVariable_IntegrationShoul yield return null; } - [UnityTest] - public IEnumerator PiiTests_ShouldRemoveEnvironmentVariableValue_IntegrationShouldUseModifiedEnvironmentVariables() + public IEnumerator PiiTests_ShouldRemoveEnvironmentVariables_AnnotationsShouldntBeAvailable() { var trigger = false; var exception = new Exception("custom exception message"); - - var environmentVariableKey = "USERNAME"; - var expectedValue = "%USERNAME%"; - if (!Annotations.EnvironmentVariablesCache.ContainsKey(environmentVariableKey)) + client.BeforeSend = (BacktraceData data) => { - Annotations.EnvironmentVariablesCache[environmentVariableKey] = "fake user name"; - } - - var defaultUserName = Annotations.EnvironmentVariablesCache[environmentVariableKey]; - Annotations.EnvironmentVariablesCache[environmentVariableKey] = expectedValue; + Assert.IsNotNull(data.Annotation.EnvironmentVariables); + data.Annotation.EnvironmentVariables = null; + return data; + }; - client.BeforeSend = (BacktraceData data) => + client.RequestHandler = (string url, BacktraceData data) => { - var actualValue = data.Annotation.EnvironmentVariables[environmentVariableKey]; - Assert.AreEqual(expectedValue, actualValue); - Assert.AreNotEqual(defaultUserName, actualValue); trigger = true; - return data; + Assert.IsNull(data.Annotation.EnvironmentVariables); + return new BacktraceResult(); }; client.Send(exception); yield return WaitForFrame.Wait(); @@ -181,22 +175,28 @@ public IEnumerator PiiTests_ShouldRemoveEnvironmentVariableValue_IntegrationShou } [UnityTest] - public IEnumerator PiiTests_ShouldRemoveEnvironmentVariables_AnnotationsShouldntBeAvailable() + public IEnumerator PiiTests_ShouldRemoveEnvironmentVariableValue_IntegrationShouldUseModifiedEnvironmentVariables() { var trigger = false; var exception = new Exception("custom exception message"); - client.BeforeSend = (BacktraceData data) => + + var environmentVariableKey = "USERNAME"; + var expectedValue = "%USERNAME%"; + if (!Annotations.EnvironmentVariablesCache.ContainsKey(environmentVariableKey)) { - Assert.IsNotNull(data.Annotation.EnvironmentVariables); - data.Annotation.EnvironmentVariables = null; - return data; - }; + Annotations.EnvironmentVariablesCache[environmentVariableKey] = "fake user name"; + } - client.RequestHandler = (string url, BacktraceData data) => + var defaultUserName = Annotations.EnvironmentVariablesCache[environmentVariableKey]; + Annotations.EnvironmentVariablesCache[environmentVariableKey] = expectedValue; + + client.BeforeSend = (BacktraceData data) => { + var actualValue = data.Annotation.EnvironmentVariables[environmentVariableKey]; + Assert.AreEqual(expectedValue, actualValue); + Assert.AreNotEqual(defaultUserName, actualValue); trigger = true; - Assert.IsNull(data.Annotation.EnvironmentVariables); - return new BacktraceResult(); + return data; }; client.Send(exception); yield return WaitForFrame.Wait();