def test_extensions_https(self):
        # HTTPS and allowing insecure

        # expect not to find SSL cert problem
        with self.assertRaises(Exception) as e:
            DockerUtil.wait_for_log_message(
                [self.container],
                "SSL certificate problem: self signed certificate",
                self.max_wait_time)

        # expect to find downloading extensions in to folder
        try:
            DockerUtil.wait_for_log_message([self.container],
                                            "Downloading extensions at",
                                            self.max_wait_time)
            DockerUtil.wait_for_log_message([self.container],
                                            "Unzipping contents of",
                                            self.max_wait_time)
        except Exception as e:
            self.fail(e)

        # Verify plugin.xml file for each test Extensions in MC extensions folder
        # retrieve container extensions folder
        exts = DockerUtil.list_container_dir(self.__class__.container,
                                             "/opt/connect/extensions/")
        self.assertTrue(("extensions/testExtension3/plugin.xml" in exts)
                        and ("extensions/testExtension2/plugin.xml" in exts)
                        and ("extensions/testExtension1/plugin.xml" in exts))

        # expect to see Connect start
        try:
            DockerUtil.wait_for_containers([self.container],
                                           self.max_wait_time)
        except Exception as e:
            self.fail(e)
    def test_extensions_http(self):
        # HTTP download

        # expect to find downloading extensions in to folder
        # expect to see Connect start
        try:
            # wait for extensions download message
            DockerUtil.wait_for_log_message([self.container],
                                            "Downloading extensions at",
                                            self.max_wait_time)
            DockerUtil.wait_for_log_message([self.container],
                                            "Unzipping contents of",
                                            self.max_wait_time)

            # Verify plugin.xml file for each test Extensions in MC extensions folder
            # retrieve container extensions folder
            exts = DockerUtil.list_container_dir(self.__class__.container,
                                                 "/opt/connect/extensions/")
            self.assertTrue(
                ("extensions/testExtension3/plugin.xml" in exts)
                and ("extensions/testExtension2/plugin.xml" in exts)
                and ("extensions/testExtension1/plugin.xml" in exts))

            # wait for MC to come up
            DockerUtil.wait_for_containers([self.container],
                                           self.max_wait_time)
        except Exception as e:
            # fail if there is any exception
            self.fail(e)
Exemple #3
0
class DockerTests3(unittest.TestCase):
    docker_image = ""
    container = ""
    mirth_properties_map = {}
    extensions_list = []
    test_yml = os.path.join('.', 'tmp', 'test.yml')
    composeCmd = 'docker-compose -f ' + test_yml + ' -p mctest3'
    max_wait_time = 240

    @classmethod
    def setUpClass(cls):
        print(
            ' \n >>>> ==== Running Test 3 - Verify Compose with secret, postgres, custom-extensions'
            + ' ===== ')
        print(' >>>> ==== using IMAGE = ' + cls.docker_image + ' ===== ')
        DockerUtil.empty_test_folder("tmp")
        # Setup test dir as volume to by mounted by container
        # exts =  DockerUtil.create_test_dir("tmp/exts")
        if os.name == 'nt':
            DockerUtil.create_test_dir("tmp\\exts")
            os.system('copy /y .\\testdata\\*.zip .\\tmp\\exts')
            os.system('copy /y .\\testdata\\secret.properties .\\tmp')
        else:
            DockerUtil.create_test_dir("tmp/exts")
            os.system('cp ./testdata/*.zip ./tmp/exts/')
            os.system('cp ./testdata/secret.properties ./tmp/')
        DockerUtil.generate_compose_yml(cls.test_yml, cls.docker_image)
        # Run docker compose
        os.system(cls.composeCmd + " up -d")
        client = docker.from_env()
        cls.container = client.containers.get("mctest3_mc_1")
        # wait for MC to come up
        try:
            DockerUtil.wait_for_containers([cls.container], cls.max_wait_time)
        except Exception, e:
            print(">>>> MC server failed to start")
            cls.tearDownClass()
            raise e
        # retrieve container mirth.properties file as a map
        cls.mirth_properties_map = DockerUtil.get_prop_file_as_map(
            cls.container, "/opt/connect/conf/mirth.properties")
        # retrieve container extensions folder
        cls.extensions_list = DockerUtil.list_container_dir(
            cls.container, "/opt/connect/extensions/")