Issue #23507 mail-connector now uses junit5 instead of junit4
diff --git a/appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/admin/cli/CreateMailResourceTest.java b/appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/admin/cli/CreateMailResourceTest.java
index cf2f1b1..d9f54a5 100644
--- a/appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/admin/cli/CreateMailResourceTest.java
+++ b/appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/admin/cli/CreateMailResourceTest.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2009, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021 Contributors to the Eclipse Foundation
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -16,72 +17,76 @@
 
 package org.glassfish.resources.mail.admin.cli;
 
-import com.sun.enterprise.config.serverbeans.*;
+import com.sun.enterprise.config.serverbeans.Domain;
+import com.sun.enterprise.config.serverbeans.Resource;
+import com.sun.enterprise.config.serverbeans.ResourceRef;
+import com.sun.enterprise.config.serverbeans.Resources;
+import com.sun.enterprise.config.serverbeans.Server;
+import com.sun.enterprise.config.serverbeans.Servers;
 import com.sun.enterprise.util.SystemPropertyConstants;
 import com.sun.enterprise.v3.common.PropsFileActionReporter;
 import com.sun.logging.LogDomains;
+
+import java.util.logging.Logger;
+
+import javax.security.auth.Subject;
+
 import org.glassfish.api.ActionReport;
 import org.glassfish.api.admin.AdminCommandContext;
 import org.glassfish.api.admin.AdminCommandContextImpl;
 import org.glassfish.api.admin.CommandRunner;
 import org.glassfish.api.admin.ParameterMap;
 import org.glassfish.hk2.api.ServiceLocator;
-
-import com.sun.enterprise.config.serverbeans.Resource;
-import com.sun.enterprise.config.serverbeans.ResourceRef;
-import com.sun.enterprise.config.serverbeans.Resources;
 import org.glassfish.resources.mail.config.MailResource;
-import org.glassfish.tests.utils.ConfigApiTest;
-import org.junit.After;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.jvnet.hk2.config.DomDocument;
+import org.glassfish.resources.mail.test.MailJunit5Extension;
+import org.glassfish.tests.utils.Utils;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.jvnet.hk2.config.TransactionFailure;
 
+import jakarta.inject.Inject;
 
-public class CreateMailResourceTest extends ConfigApiTest {
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
+@ExtendWith(MailJunit5Extension.class)
+public class CreateMailResourceTest {
+
+    @Inject
     private ServiceLocator habitat;
+    @Inject
+    private Logger logger;
     private Resources resources;
     private ParameterMap parameters;
     private AdminCommandContext context;
+    @Inject
     private CommandRunner cr;
+    private final Subject adminSubject = Utils.createInternalAsadminSubject();
 
-    public DomDocument getDocument(ServiceLocator habitat) {
-        return new TestDocument(habitat);
-    }
-
-    public String getFileName() {
-        return "DomainTest";
-    }
-
-    @Before
+    @BeforeEach
     public void setUp() {
-        habitat = getHabitat();
         resources = habitat.<Domain>getService(Domain.class).getResources();
-        assertTrue(resources != null);
+        assertNotNull(resources);
         parameters = new ParameterMap();
         context = new AdminCommandContextImpl(
                 LogDomains.getLogger(CreateMailResourceTest.class, LogDomains.ADMIN_LOGGER),
                 new PropsFileActionReporter());
-        cr = habitat.getService(CommandRunner.class);
-        assertTrue(cr != null);
+        assertNotNull(cr);
     }
 
-    @After
+    @AfterEach
     public void tearDown() throws TransactionFailure {
         org.glassfish.resources.mail.admin.cli.DeleteMailResource deleteCommand = habitat.getService(org.glassfish.resources.mail.admin.cli.DeleteMailResource.class);
         parameters = new ParameterMap();
         parameters.set("jndi_name", "mail/MyMailSession");
 
-        cr.getCommandInvocation("delete-mail-resource", context.getActionReport(), adminSubject()).parameters(parameters).execute(deleteCommand);
+        cr.getCommandInvocation("delete-mail-resource", context.getActionReport(), adminSubject).parameters(parameters).execute(deleteCommand);
         parameters = new ParameterMap();
         parameters.set("jndi_name", "dupRes");
-        cr.getCommandInvocation("delete-mail-resource", context.getActionReport(), adminSubject()).parameters(parameters).execute(deleteCommand);
+        cr.getCommandInvocation("delete-mail-resource", context.getActionReport(), adminSubject).parameters(parameters).execute(deleteCommand);
     }
 
     /**
@@ -97,7 +102,7 @@
         parameters.set("jndi_name", "mail/MyMailSession");
         org.glassfish.resources.mail.admin.cli.CreateMailResource command = habitat.getService(org.glassfish.resources.mail.admin.cli.CreateMailResource.class);
         assertTrue(command != null);
-        cr.getCommandInvocation("create-mail-resource", context.getActionReport(), adminSubject()).parameters(parameters).execute(command);
+        cr.getCommandInvocation("create-mail-resource", context.getActionReport(), adminSubject).parameters(parameters).execute(command);
         assertEquals(ActionReport.ExitCode.SUCCESS, context.getActionReport().getActionExitCode());
         boolean isCreated = false;
         for (Resource resource : resources.getResources()) {
@@ -152,7 +157,7 @@
         parameters.set("jndi_name", "dupRes");
         org.glassfish.resources.mail.admin.cli.CreateMailResource command1 = habitat.getService(org.glassfish.resources.mail.admin.cli.CreateMailResource.class);
         assertTrue(command1 != null);
-        cr.getCommandInvocation("create-mail-resource", context.getActionReport(), adminSubject()).parameters(parameters).execute(command1);
+        cr.getCommandInvocation("create-mail-resource", context.getActionReport(), adminSubject).parameters(parameters).execute(command1);
         assertEquals(ActionReport.ExitCode.SUCCESS, context.getActionReport().getActionExitCode());
         boolean isCreated = false;
         for (Resource resource : resources.getResources()) {
@@ -168,7 +173,7 @@
         assertTrue(isCreated);
 
         org.glassfish.resources.mail.admin.cli.CreateMailResource command2 = habitat.getService(org.glassfish.resources.mail.admin.cli.CreateMailResource.class);
-        cr.getCommandInvocation("create-mail-resource", context.getActionReport(), adminSubject()).parameters(parameters).execute(command2);
+        cr.getCommandInvocation("create-mail-resource", context.getActionReport(), adminSubject).parameters(parameters).execute(command2);
         assertEquals(ActionReport.ExitCode.FAILURE, context.getActionReport().getActionExitCode());
         int numDupRes = 0;
         for (Resource resource : resources.getResources()) {
@@ -207,7 +212,7 @@
         parameters.set("jndi_name", "mail/MyMailSession");
         org.glassfish.resources.mail.admin.cli.CreateMailResource command = habitat.getService(org.glassfish.resources.mail.admin.cli.CreateMailResource.class);
         assertTrue(command != null);
-        cr.getCommandInvocation("create-mail-resource", context.getActionReport(), adminSubject()).parameters(parameters).execute(command);
+        cr.getCommandInvocation("create-mail-resource", context.getActionReport(), adminSubject).parameters(parameters).execute(command);
         assertEquals(ActionReport.ExitCode.SUCCESS, context.getActionReport().getActionExitCode());
         boolean isCreated = false;
         for (Resource resource : resources.getResources()) {
diff --git a/appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/admin/cli/DeleteMailResourceTest.java b/appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/admin/cli/DeleteMailResourceTest.java
index 4e93a62..8b9f285 100644
--- a/appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/admin/cli/DeleteMailResourceTest.java
+++ b/appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/admin/cli/DeleteMailResourceTest.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2009, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021 Contributors to the Eclipse Foundation
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -16,45 +17,57 @@
 
 package org.glassfish.resources.mail.admin.cli;
 
-import com.sun.enterprise.config.serverbeans.*;
+import com.sun.enterprise.config.serverbeans.Domain;
+import com.sun.enterprise.config.serverbeans.Resource;
+import com.sun.enterprise.config.serverbeans.ResourceRef;
+import com.sun.enterprise.config.serverbeans.Resources;
+import com.sun.enterprise.config.serverbeans.Server;
+import com.sun.enterprise.config.serverbeans.Servers;
 import com.sun.enterprise.util.SystemPropertyConstants;
 import com.sun.enterprise.v3.common.PropsFileActionReporter;
 import com.sun.logging.LogDomains;
+
+import java.util.logging.Logger;
+
+import javax.security.auth.Subject;
+
 import org.glassfish.api.ActionReport;
 import org.glassfish.api.admin.AdminCommandContext;
 import org.glassfish.api.admin.AdminCommandContextImpl;
 import org.glassfish.api.admin.CommandRunner;
 import org.glassfish.api.admin.ParameterMap;
 import org.glassfish.hk2.api.ServiceLocator;
-
-import com.sun.enterprise.config.serverbeans.Resource;
-import com.sun.enterprise.config.serverbeans.ResourceRef;
-import com.sun.enterprise.config.serverbeans.Resources;
 import org.glassfish.resources.mail.config.MailResource;
-import org.glassfish.tests.utils.ConfigApiTest;
-import org.junit.After;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import org.junit.Before;
-import org.junit.Test;
+import org.glassfish.resources.mail.test.MailJunit5Extension;
+import org.glassfish.tests.utils.Utils;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.jvnet.hk2.config.ConfigSupport;
-import org.jvnet.hk2.config.DomDocument;
 import org.jvnet.hk2.config.SingleConfigCode;
 import org.jvnet.hk2.config.TransactionFailure;
 
-import java.beans.PropertyVetoException;
+import jakarta.inject.Inject;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 
-public class DeleteMailResourceTest extends ConfigApiTest {
+@ExtendWith(MailJunit5Extension.class)
+public class DeleteMailResourceTest {
+    @Inject
     private ServiceLocator habitat;
+    @Inject
+    private Logger logger;
     private Resources resources;
     private ParameterMap parameters;
     private AdminCommandContext context;
     private CommandRunner cr;
+    private final Subject adminSubject = Utils.createInternalAsadminSubject();
 
-    @Before
+    @BeforeEach
     public void setUp() {
-        habitat = getHabitat();
         parameters = new ParameterMap();
         cr = habitat.getService(CommandRunner.class);
         resources = habitat.<Domain>getService(Domain.class).getResources();
@@ -63,36 +76,27 @@
                 new PropsFileActionReporter());
     }
 
-    @After
+    @AfterEach
     public void tearDown() throws TransactionFailure {
-        ConfigSupport.apply(new SingleConfigCode<Resources>() {
-            public Object run(Resources param) throws PropertyVetoException, TransactionFailure {
-                Resource target = null;
-                for (Resource resource : param.getResources()) {
-                    if (resource instanceof MailResource) {
-                        MailResource r = (MailResource) resource;
-                        if (r.getJndiName().equals("mail/MyMailSession")) {
-                            target = resource;
-                            break;
-                        }
+        SingleConfigCode<Resources> configCode = resourcesProxy -> {
+            Resource target = null;
+            for (Resource resource : resourcesProxy.getResources()) {
+                if (resource instanceof MailResource) {
+                    MailResource r = (MailResource) resource;
+                    if (r.getJndiName().equals("mail/MyMailSession")) {
+                        target = resource;
+                        break;
                     }
                 }
-                if (target != null) {
-                    param.getResources().remove(target);
-                }
-                return null;
             }
-        }, resources);
-        parameters = new ParameterMap();
+            if (target != null) {
+                resourcesProxy.getResources().remove(target);
+            }
+            return null;
+        };
+        ConfigSupport.apply(configCode, resources);
     }
 
-    public DomDocument getDocument(ServiceLocator habitat) {
-        return new TestDocument(habitat);
-    }
-
-    public String getFileName() {
-        return "DomainTest";
-    }
 
     /**
      * Test of execute method, of class DeleteMailResource.
@@ -108,14 +112,14 @@
         parameters.set("jndi_name", "mail/MyMailSession");
         org.glassfish.resources.mail.admin.cli.CreateMailResource createCommand = habitat.getService(org.glassfish.resources.mail.admin.cli.CreateMailResource.class);
         assertTrue(createCommand != null);
-        cr.getCommandInvocation("create-mail-resource", context.getActionReport(), adminSubject()).parameters(parameters).execute(createCommand);
+        cr.getCommandInvocation("create-mail-resource", context.getActionReport(), adminSubject).parameters(parameters).execute(createCommand);
         assertEquals(ActionReport.ExitCode.SUCCESS, context.getActionReport().getActionExitCode());
 
         parameters = new ParameterMap();
         parameters.set("jndi_name", "mail/MyMailSession");
         org.glassfish.resources.mail.admin.cli.DeleteMailResource deleteCommand = habitat.getService(org.glassfish.resources.mail.admin.cli.DeleteMailResource.class);
         assertTrue(deleteCommand != null);
-        cr.getCommandInvocation("delete-mail-resource", context.getActionReport(), adminSubject()).parameters(parameters).execute(deleteCommand);
+        cr.getCommandInvocation("delete-mail-resource", context.getActionReport(), adminSubject).parameters(parameters).execute(deleteCommand);
         assertEquals(ActionReport.ExitCode.SUCCESS, context.getActionReport().getActionExitCode());
         boolean isDeleted = true;
         for (Resource resource : resources.getResources()) {
@@ -154,7 +158,7 @@
     public void testExecuteFailDoesNotExist() {
         parameters.set("jndi_name", "doesnotexist");
         org.glassfish.resources.mail.admin.cli.DeleteMailResource deleteCommand = habitat.getService(org.glassfish.resources.mail.admin.cli.DeleteMailResource.class);
-        cr.getCommandInvocation("delete-mail-resource", context.getActionReport(), adminSubject()).parameters(parameters).execute(deleteCommand);
+        cr.getCommandInvocation("delete-mail-resource", context.getActionReport(), adminSubject).parameters(parameters).execute(deleteCommand);
         assertEquals(ActionReport.ExitCode.FAILURE, context.getActionReport().getActionExitCode());
         logger.fine("msg: " + context.getActionReport().getMessage());
     }
diff --git a/appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/admin/cli/ListMailResourcesTest.java b/appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/admin/cli/ListMailResourcesTest.java
index 4f0f260..9396282 100644
--- a/appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/admin/cli/ListMailResourcesTest.java
+++ b/appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/admin/cli/ListMailResourcesTest.java
@@ -22,6 +22,12 @@
 import com.sun.enterprise.config.serverbeans.Resources;
 import com.sun.enterprise.v3.common.PropsFileActionReporter;
 import com.sun.logging.LogDomains;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.security.auth.Subject;
+
 import org.glassfish.api.ActionReport;
 import org.glassfish.api.ActionReport.MessagePart;
 import org.glassfish.api.admin.AdminCommandContext;
@@ -30,39 +36,35 @@
 import org.glassfish.api.admin.ParameterMap;
 import org.glassfish.hk2.api.ServiceLocator;
 import org.glassfish.resources.mail.config.MailResource;
-import org.glassfish.tests.utils.ConfigApiTest;
-import org.junit.After;
-import static org.junit.Assert.*;
-import org.junit.Before;
-import org.junit.Test;
-import org.jvnet.hk2.config.DomDocument;
+import org.glassfish.resources.mail.test.MailJunit5Extension;
+import org.glassfish.tests.utils.Utils;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 
-import java.util.ArrayList;
-import java.util.List;
+import jakarta.inject.Inject;
 
-public class ListMailResourcesTest extends ConfigApiTest {
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
+@ExtendWith(MailJunit5Extension.class)
+public class ListMailResourcesTest {
+
+    @Inject
     private ServiceLocator habitat;
     private int origNum = 0;
     private ParameterMap parameters;
     private AdminCommandContext context;
     private CommandRunner cr;
+    private final Subject adminSubject = Utils.createInternalAsadminSubject();
 
-    @Override
-    public DomDocument getDocument(ServiceLocator habitat) {
-        return new TestDocument(habitat);
-    }
-
-    public String getFileName() {
-        return "DomainTest";
-    }
-
-    @Before
+    @BeforeEach
     public void setUp() {
-        habitat = getHabitat();
         parameters = new ParameterMap();
         cr = habitat.getService(CommandRunner.class);
-        assertTrue(cr != null);
+        assertNotNull(cr);
         Resources resources = habitat.<Domain>getService(Domain.class).getResources();
         context = new AdminCommandContextImpl(
                 LogDomains.getLogger(ListMailResourcesTest.class, LogDomains.ADMIN_LOGGER),
@@ -74,10 +76,6 @@
         }
     }
 
-    @After
-    public void tearDown() {
-    }
-
     /**
      * Test of execute method, of class ListMailResources.
      * list-mail-resources
@@ -85,7 +83,7 @@
     @Test
     public void testExecuteSuccessListOriginal() {
         org.glassfish.resources.mail.admin.cli.ListMailResources listCommand = habitat.getService(org.glassfish.resources.mail.admin.cli.ListMailResources.class);
-        cr.getCommandInvocation("list-mail-resources", context.getActionReport(), adminSubject()).parameters(parameters).execute(listCommand);
+        cr.getCommandInvocation("list-mail-resources", context.getActionReport(), adminSubject).parameters(parameters).execute(listCommand);
         List<MessagePart> list = context.getActionReport().getTopMessagePart().getChildren();
         if (origNum == 0) {
             //Nothing to list
@@ -107,12 +105,12 @@
         createMailResource();
 
         parameters = new ParameterMap();
-        org.glassfish.resources.mail.admin.cli.ListMailResources listCommand = habitat.getService(org.glassfish.resources.mail.admin.cli.ListMailResources.class);
-        assertTrue(listCommand != null);
-        cr.getCommandInvocation("list-mail-resources", context.getActionReport(), adminSubject()).parameters(parameters).execute(listCommand);
+        ListMailResources listCommand = habitat.getService(ListMailResources.class);
+        assertNotNull(listCommand);
+        cr.getCommandInvocation("list-mail-resources", context.getActionReport(), adminSubject).parameters(parameters).execute(listCommand);
         List<MessagePart> list = context.getActionReport().getTopMessagePart().getChildren();
         assertEquals(origNum + 1, list.size());
-        List<String> listStr = new ArrayList<String>();
+        List<String> listStr = new ArrayList<>();
         for (MessagePart mp : list) {
             listStr.add(mp.getMessage());
         }
@@ -129,7 +127,7 @@
         parameters.set("jndi_name", "mailresource");
         CreateMailResource createCommand = habitat.getService(CreateMailResource.class);
         assertTrue(createCommand != null);
-        cr.getCommandInvocation("create-mail-resource", context.getActionReport(), adminSubject()).parameters(parameters).execute(createCommand);
+        cr.getCommandInvocation("create-mail-resource", context.getActionReport(), adminSubject).parameters(parameters).execute(createCommand);
         assertEquals(ActionReport.ExitCode.SUCCESS, context.getActionReport().getActionExitCode());
     }
 
@@ -145,7 +143,7 @@
 
         parameters = new ParameterMap();
         org.glassfish.resources.mail.admin.cli.ListMailResources listCommand = habitat.getService(org.glassfish.resources.mail.admin.cli.ListMailResources.class);
-        cr.getCommandInvocation("list-mail-resources", context.getActionReport(), adminSubject()).parameters(parameters).execute(listCommand);
+        cr.getCommandInvocation("list-mail-resources", context.getActionReport(), adminSubject).parameters(parameters).execute(listCommand);
 
         List<ActionReport.MessagePart> list = context.getActionReport().getTopMessagePart().getChildren();
         assertEquals(origNum + 1, list.size());
@@ -157,14 +155,14 @@
         context = new AdminCommandContextImpl(
                 LogDomains.getLogger(ListMailResourcesTest.class, LogDomains.ADMIN_LOGGER),
                 new PropsFileActionReporter());
-        cr.getCommandInvocation("list-mail-resources", context.getActionReport(), adminSubject()).parameters(parameters).execute(listCommand);
+        cr.getCommandInvocation("list-mail-resources", context.getActionReport(), adminSubject).parameters(parameters).execute(listCommand);
         list = context.getActionReport().getTopMessagePart().getChildren();
         if ((origNum - 1) == 0) {
             //Nothing to list.
         } else {
             assertEquals(origNum - 1, list.size());
         }
-        List<String> listStr = new ArrayList<String>();
+        List<String> listStr = new ArrayList<>();
         for (MessagePart mp : list) {
             listStr.add(mp.getMessage());
         }
@@ -177,7 +175,7 @@
         parameters.set("jndi_name", "mailresource");
         DeleteMailResource deleteCommand = habitat.getService(DeleteMailResource.class);
         assertTrue(deleteCommand != null);
-        cr.getCommandInvocation("delete-mail-resource", context.getActionReport(), adminSubject()).parameters(parameters).execute(deleteCommand);
+        cr.getCommandInvocation("delete-mail-resource", context.getActionReport(), adminSubject).parameters(parameters).execute(deleteCommand);
         assertEquals(ActionReport.ExitCode.SUCCESS, context.getActionReport().getActionExitCode());
     }
 }
diff --git a/appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/test/MailJunit5Extension.java b/appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/test/MailJunit5Extension.java
new file mode 100644
index 0000000..de44d1f
--- /dev/null
+++ b/appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/test/MailJunit5Extension.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2021 Eclipse Foundation and/or its affiliates. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0, which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * This Source Code may also be made available under the following Secondary
+ * Licenses when the conditions for such availability set forth in the
+ * Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
+ * version 2 with the GNU Classpath Exception, which is available at
+ * https://www.gnu.org/software/classpath/license.html.
+ *
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+ */
+
+package org.glassfish.resources.mail.test;
+
+import com.sun.enterprise.admin.util.InstanceStateService;
+
+import org.glassfish.tests.utils.HK2JUnit5Extension;
+import org.glassfish.tests.utils.Utils;
+import org.junit.jupiter.api.extension.ExtensionContext;
+
+import static org.glassfish.hk2.utilities.ServiceLocatorUtilities.addOneDescriptor;
+
+
+/**
+ * @author David Matejcek
+ */
+public class MailJunit5Extension extends HK2JUnit5Extension {
+
+    @Override
+    protected String getDomainXml(final Class<?> testClass) {
+        return "DomainTest.xml";
+    }
+
+
+    @Override
+    protected Class<TestDocument> getDomainXmlDomClass(Class<?> testClass) {
+        return TestDocument.class;
+    }
+
+
+    @Override
+    public void postProcessTestInstance(final Object testInstance, ExtensionContext context) throws Exception {
+        addOneDescriptor(getLocator(), Utils.createMockDescriptor(InstanceStateService.class));
+        super.postProcessTestInstance(testInstance, context);
+    }
+}
diff --git a/appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/admin/cli/TestDocument.java b/appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/test/TestDocument.java
similarity index 93%
rename from appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/admin/cli/TestDocument.java
rename to appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/test/TestDocument.java
index 9f3c7ba..3d06ce7 100644
--- a/appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/admin/cli/TestDocument.java
+++ b/appserver/resources/mail/mail-connector/src/test/java/org/glassfish/resources/mail/test/TestDocument.java
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2008, 2020 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021 Contributors to the Eclipse Foundation
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v. 2.0, which is available at
@@ -14,15 +15,13 @@
  * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
  */
 
-package org.glassfish.resources.mail.admin.cli;
+package org.glassfish.resources.mail.test;
 
 import org.glassfish.config.support.GlassFishConfigBean;
 import org.glassfish.hk2.api.ServiceLocator;
 import org.jvnet.hk2.config.ConfigModel;
 import org.jvnet.hk2.config.Dom;
 import org.jvnet.hk2.config.DomDocument;
-import org.junit.Ignore;
-
 import javax.xml.stream.XMLStreamReader;
 
 /**
@@ -32,7 +31,6 @@
  *
  * User: Jerome Dochez
  */
-@Ignore
 public class TestDocument extends DomDocument<GlassFishConfigBean> {
 
     public TestDocument(ServiceLocator habitat) {