From: =?utf-8?q?Ferenc_W=C3=A1gner?= <wferi@debian.org>
Date: Fri, 22 Aug 2025 22:17:25 +0200
Subject: Make test data URL prefix overridable by environment variable

---
 xmltoolingtest/SecurityHelperTest.h | 22 ++++++++++++++++------
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/xmltoolingtest/SecurityHelperTest.h b/xmltoolingtest/SecurityHelperTest.h
index 7ac3169..2521bd7 100644
--- a/xmltoolingtest/SecurityHelperTest.h
+++ b/xmltoolingtest/SecurityHelperTest.h
@@ -42,6 +42,16 @@ class SecurityHelperTest : public CxxTest::TestSuite {
         }
     }
 
+    string dataURL(string path) {
+        const string default_prefix = "https://test.shibboleth.net/git/view/?p=cpp-xmltooling.git&a=blob_plain&hb=HEAD&f=xmltoolingtest/data/";
+        const char *prefix = getenv("XMLTOOLINGTEST_DATA_URL");
+        if (prefix) {
+            return string(prefix) + path;
+        } else {
+            return default_prefix + path;
+        }
+    }
+
 public:
     void setUp() {
     }
@@ -70,13 +80,13 @@ public:
     void testKeysFromURLs() {
         skipNetworked();
         string pathname = data_path + "key.pem.bak";
-        scoped_ptr<SOAPTransport> t1(getTransport("https://test.shibboleth.net/git/view/?p=cpp-xmltooling.git&a=blob_plain&hb=HEAD&f=xmltoolingtest/data/key.pem"));
+        scoped_ptr<SOAPTransport> t1(getTransport(dataURL("key.pem").c_str()));
         scoped_ptr<XSECCryptoKey> key1(SecurityHelper::loadKeyFromURL(*t1.get(), pathname.c_str()));
         pathname = data_path + "key.der.bak";
-        scoped_ptr<SOAPTransport> t2(getTransport("https://test.shibboleth.net/git/view/?p=cpp-xmltooling.git&a=blob_plain&hb=HEAD&f=xmltoolingtest/data/key.der"));
+        scoped_ptr<SOAPTransport> t2(getTransport(dataURL("key.der").c_str()));
         scoped_ptr<XSECCryptoKey> key2(SecurityHelper::loadKeyFromURL(*t2.get(), pathname.c_str()));
         pathname = data_path + "test.pfx.bak";
-        scoped_ptr<SOAPTransport> t3(getTransport("https://test.shibboleth.net/git/view/?p=cpp-xmltooling.git&a=blob_plain&hb=HEAD&f=xmltoolingtest/data/test.pfx"));
+        scoped_ptr<SOAPTransport> t3(getTransport(dataURL("test.pfx").c_str()));
         scoped_ptr<XSECCryptoKey> key3(SecurityHelper::loadKeyFromURL(*t3.get(), pathname.c_str(), nullptr, "password"));
 
         TSM_ASSERT("PEM/DER keys did not match", SecurityHelper::matches(*key1.get(), *key2.get()));
@@ -122,13 +132,13 @@ public:
     void testCertificatesFromURLs() {
         skipNetworked();
         string pathname = data_path + "cert.pem.bak";
-        scoped_ptr<SOAPTransport> t1(getTransport("https://test.shibboleth.net/git/view/?p=cpp-xmltooling.git&a=blob_plain&hb=HEAD&f=xmltoolingtest/data/cert.pem"));
+        scoped_ptr<SOAPTransport> t1(getTransport(dataURL("cert.pem").c_str()));
         SecurityHelper::loadCertificatesFromURL(certs, *t1.get(), pathname.c_str());
         pathname = data_path + "cert.der.bak";
-        scoped_ptr<SOAPTransport> t2(getTransport("https://test.shibboleth.net/git/view/?p=cpp-xmltooling.git&a=blob_plain&hb=HEAD&f=xmltoolingtest/data/cert.der"));
+        scoped_ptr<SOAPTransport> t2(getTransport(dataURL("cert.der").c_str()));
         SecurityHelper::loadCertificatesFromURL(certs, *t2.get(), pathname.c_str());
         pathname = data_path + "test.pfx.bak";
-        scoped_ptr<SOAPTransport> t3(getTransport("https://test.shibboleth.net/git/view/?p=cpp-xmltooling.git&a=blob_plain&hb=HEAD&f=xmltoolingtest/data/test.pfx"));
+        scoped_ptr<SOAPTransport> t3(getTransport(dataURL("test.pfx").c_str()));
         SecurityHelper::loadCertificatesFromURL(certs, *t3.get(), pathname.c_str(), nullptr, "password");
 
         TSM_ASSERT_EQUALS("Wrong certificate count", certs.size(), 3);
