diff --git a/Runtime/Model/JsonData/Annotations.cs b/Runtime/Model/JsonData/Annotations.cs index 87b423aa..05147688 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(value); } } @@ -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..53742dd4 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) => @@ -124,31 +129,19 @@ public IEnumerator PiiTests_ShouldModifyEnvironmentVariable_IntegrationShouldUse yield return null; } - [UnityTest] - public IEnumerator PiiTests_ShouldRemoveEnvironmentVariableValue_IntegrationShouldUseModifiedEnvironmentVariables() + public IEnumerator PiiTests_ShouldNotIncludeEnvironmentVariable_IntegrationShouldSkipEnvironmentVariables() { var trigger = false; var exception = new Exception("custom exception message"); - var environmentVariableKey = "USERNAME"; - var expectedValue = "%USERNAME%"; - if (!Annotations.EnvironmentVariablesCache.ContainsKey(environmentVariableKey)) - { - Annotations.EnvironmentVariablesCache[environmentVariableKey] = "fake user name"; - } - - var defaultUserName = Annotations.EnvironmentVariablesCache[environmentVariableKey]; - Annotations.EnvironmentVariablesCache[environmentVariableKey] = expectedValue; - - 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(); @@ -180,5 +173,36 @@ public IEnumerator PiiTests_ShouldRemoveEnvironmentVariables_AnnotationsShouldnt Assert.IsTrue(trigger); yield return null; } + + [UnityTest] + public IEnumerator PiiTests_ShouldRemoveEnvironmentVariableValue_IntegrationShouldUseModifiedEnvironmentVariables() + { + var trigger = false; + var exception = new Exception("custom exception message"); + + var environmentVariableKey = "USERNAME"; + var expectedValue = "%USERNAME%"; + if (!Annotations.EnvironmentVariablesCache.ContainsKey(environmentVariableKey)) + { + Annotations.EnvironmentVariablesCache[environmentVariableKey] = "fake user name"; + } + + 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; + return data; + }; + client.Send(exception); + yield return WaitForFrame.Wait(); + + Assert.IsTrue(trigger); + yield return null; + } } }