def test_not_found_fatal(self, client): client.adapter.register_uri( 'GET', 'https://errata.devel.redhat.com/api/v1/user/[email protected]', json={'errors': { 'login_name': '[email protected] not found.' }}, status_code=400) with pytest.raises(UserNotFoundError) as e: get_user(client, '*****@*****.**', fatal=True) assert str(e.value) == '*****@*****.**'
def test_basic(self, client, user): client.adapter.register_uri( 'GET', 'https://errata.devel.redhat.com/api/v1/user/[email protected]', json=user) result = get_user(client, '*****@*****.**') assert result == user
def ensure_user(client, params, check_mode): result = {'changed': False, 'stdout_lines': []} params = {param: val for param, val in params.items() if val is not None} login_name = params['login_name'] user = common_errata_tool.get_user(client, login_name) if not user: result['changed'] = True result['stdout_lines'] = ['created %s user' % login_name] if not check_mode: create_user(client, params) return result user_id = user.pop('id') differences = common_errata_tool.diff_settings(user, params) if differences: result['changed'] = True changes = common_errata_tool.describe_changes(differences) result['stdout_lines'].extend(changes) if not check_mode: # Hack for CLOUDWF-2817 - If the user's receives_mail attribute is # true, we must always send the intended email_address as well. if params['receives_mail']: keys = [difference[0] for difference in differences] if 'email_address' not in keys: differences.append( ('email_address', '', user['email_address'])) edit_user(client, user_id, differences) return result
def run_module(): module_args = dict( short_name=dict(required=True), name=dict(required=True), description=dict(required=True), bugzilla_product_name=dict(default=''), valid_bug_states=dict(type='list', default=['MODIFIED', 'VERIFIED']), active=dict(type='bool', default=True), ftp_path=dict(default=""), ftp_subdir=dict(), internal=dict(type='bool', default=False), default_docs_reviewer=dict(), push_targets=dict(type='list', required=True), default_solution=dict(required=True), state_machine_rule_set=dict(required=True), move_bugs_on_qe=dict(type='bool', default=False), text_only_advisories_require_dists=dict(type='bool', default=True), exd_org_group=dict(choices=EXD_ORG_GROUPS.keys()), ) module = AnsibleModule(argument_spec=module_args, supports_check_mode=True) # Ignore this attribute since it doesn't exist any more in ET del module.params['text_only_advisories_require_dists'] check_mode = module.check_mode params = module.params try: validate_params(params) except InvalidInputError as e: msg = 'invalid %s value "%s"' % (e.param, e.value) module.fail_json(msg=msg, changed=False, rc=1) client = common_errata_tool.Client() try: result = ensure_product(client, params, check_mode) except DocsReviewerNotFoundError as e: msg = 'default_docs_reviewer %s account not found' % e module.fail_json(msg=msg, changed=False, rc=1) if (check_mode and result['changed'] and params['default_docs_reviewer'] and boolean(os.getenv('ANSIBLE_STRICT_USER_CHECK_MODE', False))): try: user = common_errata_tool.get_user(client, params['default_docs_reviewer'], True) except UserNotFoundError as e: msg = 'default_docs_reviewer %s account not found' % e module.fail_json(msg=msg, changed=False, rc=1) if 'docs' not in user['roles']: msg = ("User %s does not have 'docs' role in ET" % params['default_docs_reviewer']) module.fail_json(msg=msg, changed=False, rc=1) module.exit_json(**result)
def test_not_found(self, client): client.adapter.register_uri( 'GET', 'https://errata.devel.redhat.com/api/v1/user/[email protected]', json={'errors': { 'login_name': '[email protected] not found.' }}, status_code=400) user = get_user(client, '*****@*****.**') assert user is None
def run_module(): module_args = dict( product=dict(), name=dict(required=True), description=dict(required=True), type=dict(required=True, choices=common_errata_tool.RELEASE_TYPES), product_versions=dict(type='list', required=True), enabled=dict(type='bool', default=True), active=dict(type='bool', default=True), enable_batching=dict(type='bool', default=True), program_manager=dict(), blocker_flags=dict(type='list'), internal_target_release=dict(), zstream_target_release=dict(), ship_date=dict(), allow_shadow=dict(type='bool', default=False), allow_blocker=dict(type='bool', default=False), allow_exception=dict(type='bool', default=False), allow_pkg_dupes=dict(type='bool', default=False), supports_component_acl=dict(type='bool', default=False), limit_bugs_by_product=dict(type='bool', default=False), state_machine_rule_set=dict(), pelc_product_version_name=dict(), brew_tags=dict(type='list', default=[]), ) module = AnsibleModule(argument_spec=module_args, supports_check_mode=True) check_mode = module.check_mode params = module.params client = common_errata_tool.Client() try: result = ensure_release(client, params, check_mode) except ProgramManagerNotFoundError as e: msg = 'program_manager %s account not found' % e module.fail_json(msg=msg, changed=False, rc=1) if (check_mode and result['changed'] and params['program_manager'] and boolean(os.getenv('ANSIBLE_STRICT_USER_CHECK_MODE', False))): try: _ = common_errata_tool.get_user(client, params['program_manager'], True) except UserNotFoundError as e: msg = 'program_manager %s account not found' % e module.fail_json(msg=msg, changed=False, rc=1) module.exit_json(**result)