Пример #1
0
    def test_valid_shared(self):
        """Should synchronize file remotely to shared library location."""
        support.create_project(self, 'peter-2')
        project = cauldron.project.get_internal_project()

        response = support.run_remote_command(
            'open "{}" --forget'.format(project.source_directory)
        )
        self.assert_no_errors(response)
        project = cauldron.project.get_internal_project()

        posted = self.post('/sync-file', {
            'relative_path': 'library/test.md',
            'chunk': sync.io.pack_chunk(b'abcdefg'),
            'location': 'shared'
        })
        self.assert_no_errors(posted.response)

        written_path = os.path.join(
            project.source_directory,
            '..',
            '__cauldron_shared_libs',
            'library',
            'test.md'
        )
        self.assertTrue(os.path.exists(written_path))

        support.run_remote_command('close')
Пример #2
0
    def test_show_remote(self):
        """ should show remote url """

        remote_connection = environ.RemoteConnection(
            url='http://my-fake.url',
            active=True
        )

        support.run_remote_command(
            command='open @examples:hello_cauldron',
            remote_connection=remote_connection
        )

        project = cauldron.project.internal_project
        url = project.make_remote_url(remote_connection.url)

        with patch('webbrowser.open') as func:
            r = support.run_remote_command(
                command='show',
                remote_connection=remote_connection
            )
            self.assertFalse(r.failed, 'should not have failed')
            func.assert_called_once_with(url)

        support.run_command('close')
Пример #3
0
    def test_sync_project_again(self):
        """ should synchronize files only when needed """

        support.run_remote_command('open @examples:hello_cauldron')
        response = support.run_remote_command('sync')
        self.assertTrue(response.success)

        self.assertGreater(response.data['synchronized_count'], 0)

        response = support.run_remote_command('sync')
        self.assertEqual(response.data['synchronized_count'], 0)
Пример #4
0
    def test_sync_project_again(self):
        """ should synchronize files only when needed """

        support.run_remote_command('open @examples:hello_cauldron')
        response = support.run_remote_command('sync')
        self.assertTrue(response.success)

        self.assertGreater(response.data['synchronized_count'], 0)

        response = support.run_remote_command('sync')
        self.assertEqual(response.data['synchronized_count'], 0)
Пример #5
0
    def test_sync_project(self):
        """ should synchronize local files to remote location """

        support.run_remote_command('open @examples:hello_cauldron')
        response = support.run_remote_command('sync')
        self.assertTrue(response.success)

        project = cauldron.project.get_internal_project()
        remote_files = sorted(os.listdir(project.remote_source_directory))
        local_files = sorted(os.listdir(project.source_directory))

        self.assertEqual(remote_files, local_files)
Пример #6
0
    def test_sync_project(self):
        """ should synchronize local files to remote location """

        support.run_remote_command('open @examples:hello_cauldron')
        response = support.run_remote_command('sync')
        self.assertTrue(response.success)

        project = cauldron.project.internal_project
        remote_files = sorted(os.listdir(project.remote_source_directory))
        local_files = sorted(os.listdir(project.source_directory))

        self.assertEqual(remote_files, local_files)
Пример #7
0
    def test_remote_download_error(self, download_file: MagicMock):
        """ """

        download_file.return_value = Response().fail().response

        support.create_project(self, 'apophis')
        project = cauldron.project.get_internal_project()

        support.run_remote_command('open "{}"'.format(project.source_directory))

        response = support.run_remote_command('save')
        self.assertTrue(response.failed)
Пример #8
0
    def test_remote(self, download_file: MagicMock):
        """ """

        download_file.return_value = Response()

        support.create_project(self, 'apophis')
        project = cauldron.project.internal_project

        support.run_remote_command('open "{}"'.format(project.source_directory))

        response = support.run_remote_command('save')
        self.assert_has_success_code(response, 'DOWNLOAD_SAVED')
Пример #9
0
    def test_remote(self, download_file: MagicMock):
        """ """

        download_file.return_value = Response()

        support.create_project(self, 'apophis')
        project = cauldron.project.get_internal_project()

        support.run_remote_command('open "{}"'.format(project.source_directory))

        response = support.run_remote_command('save')
        self.assert_has_success_code(response, 'DOWNLOAD_SAVED')
Пример #10
0
    def test_remote_download_error(self, download_file: MagicMock):
        """ """

        download_file.return_value = Response().fail().response

        support.create_project(self, 'apophis')
        project = cauldron.project.internal_project

        support.run_remote_command('open "{}"'.format(project.source_directory))

        response = support.run_remote_command('save')
        self.assertTrue(response.failed)
Пример #11
0
    def test_valid(self):
        """ should successfully download file """

        support.create_project(self, 'downloader')
        project = cauldron.project.get_internal_project()

        support.run_remote_command('open "{}"'.format(project.source_directory))

        my_path = os.path.realpath(__file__)
        with patch('os.path.realpath', return_value=my_path) as func:
            downloaded = self.get('/download/fake.filename.not_real')
            self.assertGreater(func.call_count, 0)

        self.assertEqual(downloaded.flask.status_code, 200)
Пример #12
0
    def test_remote(self):
        """Should function remotely"""
        support.create_project(self, 'nails')
        project = cauldron.project.get_internal_project()

        support.run_remote_command('open "{}" --forget'.format(
            project.source_directory))
        project = cauldron.project.get_internal_project()

        added_response = support.run_remote_command('steps add')
        self.assertTrue(added_response.success,
                        Message('Add Step Failed', response=added_response))

        self.assertEqual(len(project.steps), 1)
Пример #13
0
    def test_run_remote(self):
        """ should successfully run remote project """

        support.create_project(self, 'rhino')
        support.add_step(self, contents='print("hello!")')

        source_directory = cauldron.project.internal_project.source_directory

        opened_response = support.run_remote_command(
            'open "{}"'.format(source_directory))
        self.assertTrue(opened_response.success)

        run_response = support.run_remote_command('run')
        self.assertTrue(run_response.success)
Пример #14
0
    def test_valid(self):
        """ should successfully download file """

        support.create_project(self, 'downloader')
        project = cauldron.project.get_internal_project()

        support.run_remote_command('open "{}"'.format(
            project.source_directory))

        my_path = os.path.realpath(__file__)
        with patch('os.path.realpath', return_value=my_path) as func:
            downloaded = self.get('/download/fake.filename.not_real')
            self.assertGreater(func.call_count, 0)

        self.assertEqual(downloaded.flask.status_code, 200)
Пример #15
0
    def test_status_remote(self):
        """ """

        support.run_command('open @examples:seaborn')
        r = support.run_remote_command('status')
        self.assertFalse(r.failed, 'should not have failed')
        self.assertEqual(r.messages[0].code, 'STATUS_CREATED')
Пример #16
0
    def test_refresh_remote(self):
        """ should refresh """

        support.run_command('open @examples:hello_cauldron')
        r = support.run_remote_command('refresh')
        self.assertFalse(r.failed, 'should not have failed')
        self.assert_has_success_code(r, 'PROJECT_REFRESHED')
Пример #17
0
    def test_refresh_remote(self):
        """ should refresh """

        support.run_command('open @examples:hello_cauldron')
        r = support.run_remote_command('refresh')
        self.assertFalse(r.failed, 'should not have failed')
        self.assert_has_success_code(r, 'PROJECT_REFRESHED')
Пример #18
0
    def test_status_remote(self):
        """ """

        support.run_command('open @examples:seaborn')
        r = support.run_remote_command('status')
        self.assertFalse(r.failed, 'should not have failed')
        self.assertEqual(r.messages[0].code, 'STATUS_CREATED')
Пример #19
0
    def test_reload_remote(self):
        """ should reload the currently opened project """

        support.run_command('open @examples:hello_cauldron')
        r = support.run_remote_command('reload')
        self.assertFalse(r.failed, 'should not have failed')
        support.run_command('close')
Пример #20
0
    def test_run_remote_sync_fail(self, sync_execute: MagicMock):
        """ should fail if the remote sync was not successful """

        sync_execute.return_value = Response().fail().response

        support.create_project(self, 'pig')
        support.add_step(self, contents='print("hello!")')

        source_directory = cauldron.project.internal_project.source_directory

        opened_response = support.run_remote_command(
            'open "{}"'.format(source_directory))
        self.assertTrue(opened_response.success)

        run_response = support.run_remote_command('run')
        self.assertTrue(run_response.failed)
Пример #21
0
    def test_run_remote(self):
        """ should successfully run remote project """

        support.create_project(self, 'rhino')
        support.add_step(self, contents='print("hello!")')

        source_directory = (
            cauldron.project.get_internal_project().source_directory
        )

        opened_response = support.run_remote_command(
            'open "{}"'.format(source_directory)
        )
        self.assertTrue(opened_response.success)

        run_response = support.run_remote_command('run')
        self.assertTrue(run_response.success)
Пример #22
0
    def test_remote(self):
        """Should function remotely"""
        support.create_project(self, 'nails')
        project = cauldron.project.get_internal_project()

        support.run_remote_command('open "{}" --forget'.format(
            project.source_directory
        ))
        project = cauldron.project.get_internal_project()

        added_response = support.run_remote_command('steps add')
        self.assertTrue(added_response.success, Message(
            'Add Step Failed',
            response=added_response
        ))

        self.assertEqual(len(project.steps), 1)
Пример #23
0
    def test_failed_status(self):
        """ should fail if unable to get remote sync status """
        def mock_send_request(*args, **kwargs):
            return Response().fail(code='FAKE-ERROR').response

        response = support.run_remote_command(
            command='sync', mock_send_request=mock_send_request)
        self.assertTrue(response.failed)
        self.assert_has_error_code(response, 'FAKE-ERROR')
Пример #24
0
    def test_run_remote_sync_fail(self, sync_execute: MagicMock):
        """ should fail if the remote sync was not successful """

        sync_execute.return_value = Response().fail().response

        support.create_project(self, 'pig')
        support.add_step(self, contents='print("hello!")')

        source_directory = (
            cauldron.project.get_internal_project().source_directory
        )

        opened_response = support.run_remote_command(
            'open "{}"'.format(source_directory)
        )
        self.assertTrue(opened_response.success)

        run_response = support.run_remote_command('run')
        self.assertTrue(run_response.failed)
Пример #25
0
    def test_no_such_project(self):
        """ should fail if unable to get remote sync status """
        def mock_send_request(*args, **kwargs):
            return Response().update(
                remote_source_directory=directory).response

        directory = os.path.dirname(os.path.realpath(__file__))
        response = support.run_remote_command(
            command='sync', mock_send_request=mock_send_request)
        self.assert_has_error_code(response, 'NO_PROJECT')
Пример #26
0
    def test_valid(self):
        """ should synchronize file remotely """

        support.create_project(self, 'peter')
        project = cauldron.project.get_internal_project()

        response = support.run_remote_command('open "{}"'.format(
            project.source_directory))
        self.assert_no_errors(response)
        project = cauldron.project.get_internal_project()

        posted = self.post('/sync-file', {
            'relative_path': 'test.md',
            'chunk': sync.io.pack_chunk(b'abcdefg')
        })
        self.assert_no_errors(posted.response)

        written_path = os.path.join(project.source_directory, 'test.md')
        self.assertTrue(os.path.exists(written_path))

        support.run_remote_command('close')
Пример #27
0
    def test_failed_status(self):
        """ should fail if unable to get remote sync status """

        def mock_send_request(*args, **kwargs):
            return Response().fail(code='FAKE-ERROR').response

        response = support.run_remote_command(
            command='sync',
            mock_send_request=mock_send_request
        )
        self.assertTrue(response.failed)
        self.assert_has_error_code(response, 'FAKE-ERROR')
Пример #28
0
    def test_valid(self):
        """ should synchronize file remotely """

        support.create_project(self, 'peter')
        project = cauldron.project.get_internal_project()

        response = support.run_remote_command(
            'open "{}"'.format(project.source_directory)
        )
        self.assert_no_errors(response)
        project = cauldron.project.get_internal_project()

        posted = self.post('/sync-file', {
            'relative_path': 'test.md',
            'chunk': sync.io.pack_chunk(b'abcdefg')
        })
        self.assert_no_errors(posted.response)

        written_path = os.path.join(project.source_directory, 'test.md')
        self.assertTrue(os.path.exists(written_path))

        support.run_remote_command('close')
Пример #29
0
    def test_no_such_project(self):
        """ should fail if unable to get remote sync status """

        def mock_send_request(*args, **kwargs):
            return Response().update(
                remote_source_directory=directory
            ).response

        directory = os.path.dirname(os.path.realpath(__file__))
        response = support.run_remote_command(
            command='sync',
            mock_send_request=mock_send_request
        )
        self.assert_has_error_code(response, 'NO_PROJECT')
Пример #30
0
    def test_purge_remote(self):
        """ should purge current results directory """

        r = support.run_remote_command('purge --force')
        self.assertFalse(r.failed, 'should not have failed')
Пример #31
0
 def test_remote(self):
     """Should not close remotely when no project is open"""
     response = support.run_remote_command('close')
     self.assert_has_success_code(response, 'NO_OPEN_PROJECT')
Пример #32
0
    def test_remote_save_no_project(self):
        """ """

        response = support.run_remote_command('save')
        self.assertTrue(response.failed)
Пример #33
0
    def test_version_remote(self):
        """ should retrieve version info """

        r = support.run_remote_command('version')
        self.assertFalse(r.failed, 'should not have failed')
Пример #34
0
 def test_remote(self):
     """Should not close remotely when no project is open"""
     response = support.run_remote_command('close')
     self.assert_has_success_code(response, 'NO_OPEN_PROJECT')
Пример #35
0
    def test_remote(self):
        """ """

        response = support.run_remote_command('close')
        self.assert_has_success_code(response, 'NO_OPEN_PROJECT')
Пример #36
0
 def test_reload_remote(self):
     """ should reload the currently opened project """
     support.run_command('open @examples:hello_cauldron')
     r = support.run_remote_command('reload')
     self.assertFalse(r.failed, 'should not have failed')
Пример #37
0
    def test_remote(self):
        """ should error when no remote project is open """

        response = support.run_remote_command('clear')
        self.assert_has_error_code(response, 'NO_OPEN_PROJECT')
Пример #38
0
    def test_remote(self):
        """ should error when no remote project is open """

        response = support.run_remote_command('clear')
        self.assert_has_error_code(response, 'NO_OPEN_PROJECT')
Пример #39
0
    def test_purge_remote(self):
        """ should purge current results directory """

        r = support.run_remote_command('purge --force')
        self.assertFalse(r.failed, 'should not have failed')
Пример #40
0
    def test_remote_save_no_project(self):
        """ """

        response = support.run_remote_command('save')
        self.assertTrue(response.failed)