From 144aea47911cc017595dc27995a96c901cb154a1 Mon Sep 17 00:00:00 2001
From: Robert Scott <code@humanleg.org.uk>
Date: Sat, 18 Aug 2018 17:08:08 +0100
Subject: [PATCH v1 3/5] appveyor: RemoteControlTest: mock out
 PlatformHookWindows.setupHttpsCertificate()

appveyor test run hangs if root keystore access is attempted
---
 .../josm/io/remotecontrol/RemoteControlTest.java    | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/test/unit/org/openstreetmap/josm/io/remotecontrol/RemoteControlTest.java b/test/unit/org/openstreetmap/josm/io/remotecontrol/RemoteControlTest.java
index ad73e835a..9a580dfce 100644
--- a/test/unit/org/openstreetmap/josm/io/remotecontrol/RemoteControlTest.java
+++ b/test/unit/org/openstreetmap/josm/io/remotecontrol/RemoteControlTest.java
@@ -13,6 +13,7 @@ import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.security.GeneralSecurityException;
+import java.security.KeyStore;
 import java.security.SecureRandom;
 import java.security.cert.X509Certificate;
 
@@ -26,8 +27,14 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.openstreetmap.josm.JOSMFixture;
+import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.Logging;
+import org.openstreetmap.josm.tools.PlatformHookWindows;
+import org.openstreetmap.josm.tools.PlatformManager;
+
+import mockit.Mock;
+import mockit.MockUp;
 
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
@@ -49,6 +56,20 @@ public class RemoteControlTest {
         RemoteControl.PROP_REMOTECONTROL_HTTPS_ENABLED.put(true);
         deleteKeystore();
 
+        if (PlatformManager.isPlatformWindows() && "True".equals(System.getenv("APPVEYOR"))) {
+            // appveyor doesn't like us tinkering with the root keystore, so mock this out
+            TestUtils.assumeWorkingJMockit();
+            new MockUp<PlatformHookWindows>() {
+                @Mock
+                public boolean setupHttpsCertificate(
+                    String entryAlias,
+                    KeyStore.TrustedCertificateEntry trustedCert
+                ) {
+                    return true;
+                }
+            };
+        }
+
         RemoteControl.start();
         disableCertificateValidation();
         httpBase = "http://127.0.0.1:"+Config.getPref().getInt("remote.control.port", 8111);
-- 
2.11.0

