def test_create_build_config_label_mismatch(self): config = Configuration() osbs = OSBS(config, config) build_json = { 'apiVersion': osbs.os_conf.get_openshift_api_version(), 'metadata': { 'name': 'build', 'labels': { 'git-repo-name': 'reponame', 'git-branch': 'branch', }, }, } existing_build_json = copy.deepcopy(build_json) existing_build_json['metadata']['name'] = 'build' existing_build_json['metadata']['labels'][ 'git-repo-name'] = 'reponame2' existing_build_json['metadata']['labels']['git-branch'] = 'branch2' build_request = flexmock(render=lambda: build_json, is_auto_instantiated=lambda: False) (flexmock(osbs).should_receive('_get_existing_build_config').once(). and_return(existing_build_json)) with pytest.raises(OsbsValidationException) as exc: osbs._create_build_config_and_build(build_request) assert 'Git labels collide' in str(exc.value)
def test_create_build_config_already_running(self): config = Configuration() osbs = OSBS(config, config) build_json = { 'apiVersion': osbs.os_conf.get_openshift_api_version(), 'metadata': { 'name': 'build', 'labels': { 'git-repo-name': 'reponame', 'git-branch': 'branch', }, }, } existing_build_json = copy.deepcopy(build_json) existing_build_json['metadata']['name'] = 'existing-build' build_request = flexmock(render=lambda: build_json, is_auto_instantiated=lambda: False) (flexmock(osbs).should_receive('_get_existing_build_config').once(). and_return(existing_build_json)) (flexmock(osbs).should_receive( '_get_running_builds_for_build_config').once().and_return([ flexmock(status='Running', get_build_name=lambda: 'build-1'), ])) with pytest.raises(OsbsException): osbs._create_build_config_and_build(build_request)
def test_create_build_config_label_mismatch(self): config = Configuration() osbs = OSBS(config, config) build_json = { 'apiVersion': osbs.os_conf.get_openshift_api_version(), 'metadata': { 'name': 'build', 'labels': { 'git-repo-name': 'reponame', 'git-branch': 'branch', }, }, } existing_build_json = copy.deepcopy(build_json) existing_build_json['metadata']['name'] = 'build' existing_build_json['metadata']['labels']['git-repo-name'] = 'reponame2' existing_build_json['metadata']['labels']['git-branch'] = 'branch2' build_request = flexmock( render=lambda: build_json, is_auto_instantiated=lambda: False) (flexmock(osbs) .should_receive('_get_existing_build_config') .once() .and_return(existing_build_json)) with pytest.raises(OsbsValidationException) as exc: osbs._create_build_config_and_build(build_request) assert 'Git labels collide' in str(exc.value)
def test_create_build_config_bad_version(self): config = Configuration() osbs = OSBS(config, config) build_json = {'apiVersion': 'spam'} build_request = flexmock(render=lambda: build_json, is_auto_instantiated=lambda: False) with pytest.raises(OsbsValidationException): osbs._create_build_config_and_build(build_request)
def test_create_build_config_bad_version(self): config = Configuration() osbs = OSBS(config, config) build_json = {'apiVersion': 'spam'} build_request = flexmock( render=lambda: build_json, is_auto_instantiated=lambda: False) with pytest.raises(OsbsValidationException): osbs._create_build_config_and_build(build_request)
def test_create_build_config_create(self): config = Configuration() osbs = OSBS(config, config) build_json = { 'apiVersion': osbs.os_conf.get_openshift_api_version(), 'metadata': { 'name': 'build', 'labels': { 'git-repo-name': 'reponame', 'git-branch': 'branch', }, }, } build_request = flexmock(render=lambda: build_json, is_auto_instantiated=lambda: False) (flexmock(osbs).should_receive( '_get_existing_build_config').once().and_return(None)) (flexmock(osbs.os).should_receive('create_build_config').with_args( json.dumps(build_json)).once().and_return( flexmock(json=lambda: {'spam': 'maps'}))) (flexmock(osbs.os).should_receive( 'start_build').with_args('build').once().and_return( flexmock(json=lambda: {'spam': 'maps'}))) build_response = osbs._create_build_config_and_build(build_request) assert build_response.json == {'spam': 'maps'}
def test_create_build_config_already_running(self): config = Configuration() osbs = OSBS(config, config) build_json = { 'apiVersion': osbs.os_conf.get_openshift_api_version(), 'metadata': { 'name': 'build', 'labels': { 'git-repo-name': 'reponame', 'git-branch': 'branch', }, }, } existing_build_json = copy.deepcopy(build_json) existing_build_json['metadata']['name'] = 'existing-build' build_request = flexmock( render=lambda: build_json, is_auto_instantiated=lambda: False) (flexmock(osbs) .should_receive('_get_existing_build_config') .once() .and_return(existing_build_json)) (flexmock(osbs) .should_receive('_get_running_builds_for_build_config') .once() .and_return([ flexmock(status='Running', get_build_name=lambda: 'build-1'), ])) with pytest.raises(OsbsException): osbs._create_build_config_and_build(build_request)
def test_create_build_config_auto_start(self): config = Configuration() osbs = OSBS(config, config) build_json = { 'apiVersion': osbs.os_conf.get_openshift_api_version(), 'metadata': { 'name': 'build', 'labels': { 'git-repo-name': 'reponame', 'git-branch': 'branch', }, }, } build_request = flexmock( render=lambda: build_json, is_auto_instantiated=lambda: True) (flexmock(osbs) .should_receive('_get_existing_build_config') .once() .and_return(None)) (flexmock(osbs.os) .should_receive('create_build_config') .with_args(json.dumps(build_json)) .once() .and_return(flexmock(json=lambda: { 'status': {'lastVersion': 'lastVersion'}} ))) (flexmock(osbs.os) .should_receive('wait_for_new_build_config_instance') .with_args('build', 'lastVersion') .once() .and_return('build-id')) (flexmock(osbs.os) .should_receive('get_build') .with_args('build-id') .once() .and_return(flexmock(json=lambda: {'spam': 'maps'}))) build_response = osbs._create_build_config_and_build(build_request) assert build_response.json == {'spam': 'maps'}
def test_create_build_config_update(self): config = Configuration() osbs = OSBS(config, config) build_json = { 'apiVersion': osbs.os_conf.get_openshift_api_version(), 'metadata': { 'name': 'build', 'labels': { 'git-repo-name': 'reponame', 'git-branch': 'branch', }, }, } existing_build_json = copy.deepcopy(build_json) existing_build_json['metadata']['name'] = 'existing-build' existing_build_json['metadata']['labels']['new-label'] = 'new-value' build_request = flexmock( render=lambda: build_json, is_auto_instantiated=lambda: False) (flexmock(osbs) .should_receive('_get_existing_build_config') .once() .and_return(existing_build_json)) (flexmock(osbs) .should_receive('_get_running_builds_for_build_config') .once() .and_return([])) (flexmock(osbs.os) .should_receive('update_build_config') .with_args('existing-build', json.dumps(existing_build_json)) .once()) (flexmock(osbs.os) .should_receive('start_build') .with_args('existing-build') .once() .and_return(flexmock(json=lambda: {'spam': 'maps'}))) build_response = osbs._create_build_config_and_build(build_request) assert build_response.json == {'spam': 'maps'}
def test_create_build_config_update(self): config = Configuration() osbs = OSBS(config, config) build_json = { 'apiVersion': osbs.os_conf.get_openshift_api_version(), 'metadata': { 'name': 'build', 'labels': { 'git-repo-name': 'reponame', 'git-branch': 'branch', }, }, } existing_build_json = copy.deepcopy(build_json) existing_build_json['metadata']['name'] = 'existing-build' existing_build_json['metadata']['labels']['new-label'] = 'new-value' build_request = flexmock(render=lambda: build_json, is_auto_instantiated=lambda: False, scratch=False) (flexmock(osbs).should_receive('_get_existing_build_config').once(). and_return(existing_build_json)) (flexmock(osbs).should_receive( '_get_running_builds_for_build_config').once().and_return([])) (flexmock(osbs.os).should_receive('update_build_config').with_args( 'existing-build', json.dumps(existing_build_json)).once()) (flexmock(osbs.os).should_receive('start_build').with_args( 'existing-build').once().and_return( flexmock(json=lambda: {'spam': 'maps'}))) build_response = osbs._create_build_config_and_build(build_request) assert build_response.json == {'spam': 'maps'}