def mutate_and_get_payload(cls, root, info, owner, labbook_name, remote_url, client_mutation_id=None): username = get_logged_in_username() logger.info(f"Importing remote labbook from {remote_url}") lb = LabBook(author=get_logged_in_author()) # TODO: Future work will look up remote in LabBook data, allowing user to select remote. default_remote = lb.labmanager_config.config['git']['default_remote'] admin_service = None for remote in lb.labmanager_config.config['git']['remotes']: if default_remote == remote: admin_service = lb.labmanager_config.config['git']['remotes'][ remote]['admin_service'] break # Extract valid Bearer token if hasattr(info.context, 'headers' ) and "HTTP_AUTHORIZATION" in info.context.headers.environ: token = parse_token( info.context.headers.environ["HTTP_AUTHORIZATION"]) else: raise ValueError( "Authorization header not provided. Must have a valid session to query for collaborators" ) mgr = GitLabManager(default_remote, admin_service, token) mgr.configure_git_credentials(default_remote, username) lb.from_remote(remote_url, username, owner, labbook_name) return ImportRemoteLabbook(active_branch=lb.active_branch)
def test_sync_1(self, remote_bare_repo, mock_create_labbooks_no_lfs, mock_config_file): # Setup responses mock for this test responses.add(responses.GET, 'https://usersrv.gigantum.io/key', json={'key': 'afaketoken'}, status=200) test_user_lb = LabBook(mock_create_labbooks_no_lfs[0]) test_user_lb.from_name('default', 'default', 'labbook1') test_user_wf = GitWorkflow(test_user_lb) test_user_wf.publish('default') # Mock the request context so a fake authorization header is present builder = EnvironBuilder(path='/labbook', method='POST', headers={'Authorization': 'Bearer AJDFHASD'}) env = builder.get_environ() req = Request(environ=env) remote_url = test_user_lb.root_dir assert remote_url sally_lb = LabBook(mock_config_file[0]) sally_lb.from_remote(remote_url, username="******", owner="default", labbook_name="labbook1") sally_wf = GitWorkflow(sally_lb) assert sally_lb.active_branch == "gm.workspace-sally" sally_lb.makedir(relative_path='code/sally-dir', create_activity_record=True) sally_wf.sync('sally') sync_query = """ mutation x { syncLabbook(input: { labbookName: "labbook1", owner: "default" }) { updateCount updatedLabbook { isRepoClean } } } """ r = mock_create_labbooks_no_lfs[2].execute(sync_query, context_value=req) assert 'errors' not in r assert r['data']['syncLabbook']['updateCount'] == 1 assert r['data']['syncLabbook']['updatedLabbook']['isRepoClean'] is True assert test_user_lb.active_branch == 'gm.workspace-default'