def test_push_wrong_dockerfile( mocker, monkeypatch, path, mode, tmpdir, dockerfile, expected_error ): dockerfile = os.path.join(cur_dir, path, dockerfile) mock = mocker.Mock() def _mock_post(url, data, headers=None, stream=True): mock(url=url, data=data) return PostMockResponse(response_code=requests.codes.created) monkeypatch.setattr(requests, 'post', _mock_post) # Second push will use --force --secret because of .jina/secret.key # Then it will use put method monkeypatch.setattr(requests, 'put', _mock_post) exec_path = os.path.join(cur_dir, path) _args_list = [exec_path, mode] args = set_hub_push_parser().parse_args(_args_list) args.dockerfile = dockerfile with pytest.raises(Exception) as info: HubIO(args).push() assert expected_error.format(dockerfile=dockerfile, work_path=args.path) in str( info.value )
def test_push(mocker, monkeypatch, path, mode, tmpdir, force, tag): mock = mocker.Mock() def _mock_post(url, data, headers=None, stream=True): mock(url=url, data=data) return PostMockResponse(response_code=requests.codes.created) monkeypatch.setattr(requests, 'post', _mock_post) # Second push will use --force --secret because of .jina/secret.key # Then it will use put method monkeypatch.setattr(requests, 'put', _mock_post) exec_path = os.path.join(cur_dir, path) _args_list = [exec_path, mode] if force: _args_list.extend(['--force', force]) if tag: _args_list.append(tag) args = set_hub_push_parser().parse_args(_args_list) result = HubIO(args).push() # remove .jina exec_config_path = os.path.join(exec_path, '.jina') shutil.rmtree(exec_config_path)
def test_push_with_authorization(mocker, monkeypatch, auth_token): mock = mocker.Mock() def _mock_post(url, data, headers, stream): mock(url=url, headers=headers) return PostMockResponse(response_code=200) monkeypatch.setattr(requests, 'post', _mock_post) exec_path = os.path.join(cur_dir, 'dummy_executor') args = set_hub_push_parser().parse_args([exec_path]) HubIO(args).push() # remove .jina exec_config_path = os.path.join(exec_path, '.jina') shutil.rmtree(exec_config_path) assert mock.call_count == 1 _, kwargs = mock.call_args_list[0] assert kwargs['headers'].get('Authorization') == f'token {auth_token}'
def test_push(mocker, monkeypatch, path, mode, tmpdir, force, tag, no_cache): mock = mocker.Mock() def _mock_post(url, data, headers=None, stream=True): mock(url=url, data=data, headers=headers) return PostMockResponse(response_code=requests.codes.created) monkeypatch.setattr(requests, 'post', _mock_post) # Second push will use --force --secret because of .jina/secret.key # Then it will use put method monkeypatch.setattr(requests, 'put', _mock_post) exec_path = os.path.join(cur_dir, path) _args_list = [exec_path, mode] if force: _args_list.extend(['--force', force]) if tag: _args_list.append(tag) if no_cache: _args_list.append('--no-cache') args = set_hub_push_parser().parse_args(_args_list) result = HubIO(args).push() # remove .jina exec_config_path = os.path.join(exec_path, '.jina') shutil.rmtree(exec_config_path) _, mock_kwargs = mock.call_args_list[0] c_type, c_data = cgi.parse_header(mock_kwargs['headers']['Content-Type']) assert c_type == 'multipart/form-data' form_data = cgi.parse_multipart(BytesIO(mock_kwargs['data']), {'boundary': c_data['boundary'].encode()}) assert 'file' in form_data assert 'md5sum' in form_data if force: assert form_data['id'] == ['UUID8'] else: assert form_data.get('id') is None if mode == '--private': assert form_data['private'] == ['True'] assert form_data['public'] == ['False'] else: assert form_data['private'] == ['False'] assert form_data['public'] == ['True'] if tag: assert form_data['tags'] == [' v0'] else: assert form_data.get('tags') is None if no_cache: assert form_data['buildWithNoCache'] == ['True'] else: assert form_data.get('buildWithNoCache') is None