From aacd6b677332f2e262d0df67603c246cd65d833e Mon Sep 17 00:00:00 2001 From: Sean Hall Date: Mon, 1 Aug 2022 17:07:25 -0500 Subject: Store list of persisted well-known variables in Burn. This allows it to reject Variables declared in the manifest that start with the reserved prefix 'Wix'. --- src/burn/test/BurnUnitTest/VariableTest.cpp | 37 +++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'src/burn/test/BurnUnitTest/VariableTest.cpp') diff --git a/src/burn/test/BurnUnitTest/VariableTest.cpp b/src/burn/test/BurnUnitTest/VariableTest.cpp index 1d5fc6f3..f864307c 100644 --- a/src/burn/test/BurnUnitTest/VariableTest.cpp +++ b/src/burn/test/BurnUnitTest/VariableTest.cpp @@ -131,6 +131,37 @@ namespace Bootstrapper } } + [Fact] + void VariablesParseXmlFailureTest() + { + HRESULT hr = S_OK; + IXMLDOMElement* pixeBundle = NULL; + BURN_VARIABLES variables = { }; + + try + { + LPCWSTR wzDocument = + L"" + L" "; + + hr = VariableInitialize(&variables); + TestThrowOnFailure(hr, L"Failed to initialize variables."); + + // load XML document + LoadBundleXmlHelper(wzDocument, &pixeBundle); + + hr = VariablesParseFromXml(&variables, pixeBundle); + NativeAssert::SpecificReturnCode(E_INVALIDARG, hr, "Should have failed due to 'WixCustomVariable' starting with Wix."); + } + finally + { + ReleaseObject(pixeBundle); + VariablesUninitialize(&variables); + } + } + [Fact] void VariablesFormatTest() { @@ -417,6 +448,8 @@ namespace Bootstrapper VariableSetVersionHelper(&variables1, L"PROP3", L"1.1.1.1"); VariableSetStringHelper(&variables1, L"PROP4", L"VAL4", FALSE); VariableSetStringHelper(&variables1, L"PROP5", L"[PROP1]", TRUE); + VariableSetStringHelper(&variables1, L"WixBundleName", L"DifferentName", FALSE); + VariableSetStringHelper(&variables1, L"WixBundleLog_PackageA", L"C:\\path\\[to]\\log", FALSE); hr = VariableSerialize(&variables1, FALSE, &pbBuffer, &cbBuffer); TestThrowOnFailure(hr, L"Failed to serialize variables."); @@ -433,12 +466,16 @@ namespace Bootstrapper Assert::Equal(gcnew String(L"1.1.1.1"), VariableGetVersionHelper(&variables2, L"PROP3")); Assert::Equal(gcnew String(L"VAL4"), VariableGetStringHelper(&variables2, L"PROP4")); Assert::Equal(gcnew String(L"[PROP1]"), VariableGetStringHelper(&variables2, L"PROP5")); + Assert::Equal(gcnew String(L"DifferentName"), VariableGetStringHelper(&variables2, L"WixBundleName")); + Assert::Equal(gcnew String(L"C:\\path\\[to]\\log"), VariableGetStringHelper(&variables2, L"WixBundleLog_PackageA")); Assert::Equal((int)BURN_VARIANT_TYPE_STRING, VariableGetTypeHelper(&variables2, L"PROP1")); Assert::Equal((int)BURN_VARIANT_TYPE_NUMERIC, VariableGetTypeHelper(&variables2, L"PROP2")); Assert::Equal((int)BURN_VARIANT_TYPE_VERSION, VariableGetTypeHelper(&variables2, L"PROP3")); Assert::Equal((int)BURN_VARIANT_TYPE_STRING, VariableGetTypeHelper(&variables2, L"PROP4")); Assert::Equal((int)BURN_VARIANT_TYPE_FORMATTED, VariableGetTypeHelper(&variables2, L"PROP5")); + Assert::Equal((int)BURN_VARIANT_TYPE_STRING, VariableGetTypeHelper(&variables2, L"WixBundleName")); + Assert::Equal((int)BURN_VARIANT_TYPE_STRING, VariableGetTypeHelper(&variables2, L"WixBundleLog_PackageA")); } finally { -- cgit v1.2.3-55-g6feb