Browse Source

#2213 fix PluginTests

Koki Igarashi 6 years ago
parent
commit
50fcef8827
1 changed files with 75 additions and 11 deletions
  1. 75 11
      src/test/java/org/codelibs/fess/it/admin/PluginTests.java

+ 75 - 11
src/test/java/org/codelibs/fess/it/admin/PluginTests.java

@@ -15,12 +15,19 @@
  */
 package org.codelibs.fess.it.admin;
 
+import static org.codelibs.fess.helper.PluginHelper.Artifact;
+
+import static org.junit.jupiter.api.Assertions.fail;
+
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import java.util.concurrent.CountDownLatch;
+
 import static org.hamcrest.Matchers.equalTo;
+import static org.junit.Assert.assertTrue;
 
 import io.restassured.response.Response;
 import org.codelibs.fess.it.CrudTestBase;
@@ -30,16 +37,16 @@ import org.junit.jupiter.api.Test;
 
 @Tag("it")
 public class PluginTests extends CrudTestBase {
-    // TODO delete
-    private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(CrudTestBase.class);
 
     private static final String NAME_PREFIX = "pluginTests_";
     private static final String API_PATH = "/api/admin/plugin";
+    private static final String LIST_ENDPOINT_SUFFIX = "";
+    private static final String ITEM_ENDPOINT_SUFFIX = "";
     private static final String INSTALLED_ENDPOINT_SUFFIX = "installed";
     private static final String AVAILABLE_ENDPOINT_SUFFIX = "available";
+    private static final String INSTALL_ENDPOINT_SUFFIX = "";
+    private static final String DELETE_ENDPOINT_SUFFIX = "";
 
-    private static final String LIST_ENDPOINT_SUFFIX = "";
-    private static final String ITEM_ENDPOINT_SUFFIX = "";
     private static final String KEY_PROPERTY = "";
 
     @Override
@@ -92,32 +99,89 @@ public class PluginTests extends CrudTestBase {
         return AVAILABLE_ENDPOINT_SUFFIX;
     }
 
+    protected String getInstallEndpointSuffix() {
+        return INSTALL_ENDPOINT_SUFFIX;
+    }
+
+    protected String getDeleteEndpointSuffix() {
+        return DELETE_ENDPOINT_SUFFIX;
+    }
+
     protected Response checkDeleteMethod(final Map<String, Object> body) {
         return checkMethodBase(body).delete(getApiPath() + "/");
     }
 
     @Test
-    void testInstalled() {
+    void testInstalled_ok() {
         checkGetMethod(Collections.emptyMap(), getInstalledEndpointSuffix() + "/").then().body("response.status", equalTo(0));
     }
 
     @Test
-    void testAvailable() {
+    void testAvailable_ok() {
         checkGetMethod(Collections.emptyMap(), getAvailableEndpointSuffix() + "/").then().body("response.status", equalTo(0));
     }
 
     @Test
-    void testIntall() {
-        checkPutMethod(Collections.emptyMap(), "").then().body("response.status", equalTo(1));
+    void testInstall_ng() {
+        checkPutMethod(Collections.emptyMap(), getInstallEndpointSuffix()).then().body("response.status", equalTo(1));
     }
 
     @Test
-    void testUninstall() {
+    void testDelete_ng() {
         checkDeleteMethod(Collections.emptyMap()).then().body("response.status", equalTo(1));
     }
 
     @Test
-    void testCRUD() {
-        // TODO
+    void testCRUD() throws Exception {
+        List<Map<String, Object>> available =
+                checkGetMethod(Collections.emptyMap(), getAvailableEndpointSuffix() + "/").body().jsonPath().get("response.plugins");
+        final Map<String, Object> targetMap = available.get(0);
+        final Artifact target = getArtifactFromMap(targetMap);
+
+        // Install
+        {
+            checkPutMethod(targetMap, getInstallEndpointSuffix()).then().body("response.status", equalTo(0));
+            final CountDownLatch latch = new CountDownLatch(1);
+            try {
+                Thread.sleep(5000);
+                latch.countDown();
+            } catch (final Exception e) {
+                try {
+                    fail(e.getMessage());
+                } finally {
+                    latch.countDown();
+                }
+            }
+            latch.await();
+            final List<Map<String, Object>> installed =
+                    checkGetMethod(Collections.emptyMap(), getInstalledEndpointSuffix() + "/").body().jsonPath().get("response.plugins");
+            assertTrue(installed.stream().map(o -> getArtifactFromMap(o))
+                    .anyMatch(a -> a.getName().equals(target.getName()) && a.getVersion().equals(target.getVersion())));
+        }
+        // Delete
+        {
+            checkDeleteMethod(targetMap).then().body("response.status", equalTo(0));
+            final CountDownLatch latch = new CountDownLatch(1);
+            try {
+                Thread.sleep(5000);
+                latch.countDown();
+            } catch (final Exception e) {
+                try {
+                    fail(e.getMessage());
+                } finally {
+                    latch.countDown();
+                }
+            }
+            latch.await();
+            final List<Map<String, Object>> installed =
+                    checkGetMethod(Collections.emptyMap(), getInstalledEndpointSuffix() + "/").body().jsonPath().get("response.plugins");
+            assertTrue(!installed.stream().map(o -> getArtifactFromMap(o))
+                    .anyMatch(a -> a.getName().equals(target.getName()) && a.getVersion().equals(target.getVersion())));
+        }
+    }
+
+    protected Artifact getArtifactFromMap(final Map<String, Object> item) {
+        return new Artifact(String.valueOf(item.get("name").toString()), String.valueOf(item.get("version")), String.valueOf(item
+                .get("url")));
     }
 }