def test_unchanged(self, client, params, check_mode): client.adapter.register_uri( 'GET', 'https://errata.devel.redhat.com/api/v1/user/[email protected]', json=USER) result = ensure_user(client, params, check_mode) assert result == {'changed': False, 'stdout_lines': []}
def test_receives_mail_includes_email_address(self, client, params): """ When the user wants to keep "receives_mail: true", we must always send the email_address attribute in every PUT call. CLOUDWF-2817 """ user = deepcopy(USER) user['receives_mail'] = True params['receives_mail'] = True # Test changing an unrelated attribute (realname) here: params['realname'] = 'Mr. Name Changer' client.adapter.register_uri( 'GET', 'https://errata.devel.redhat.com/api/v1/user/[email protected]', json=user) client.adapter.register_uri( 'PUT', 'https://errata.devel.redhat.com/api/v1/user/123456', status_code=200) check_mode = False result = ensure_user(client, params, check_mode) assert result['changed'] is True assert result['stdout_lines'] == [ 'changing realname from Me Myself ' 'to Mr. Name Changer' ] history = client.adapter.request_history assert len(history) == 2 expected = { 'email_address': '*****@*****.**', 'realname': 'Mr. Name Changer', } assert history[1].json() == expected
def test_create_check_mode(self, client, params): client.adapter.register_uri( 'GET', 'https://errata.devel.redhat.com/api/v1/user/[email protected]', status_code=500) check_mode = True result = ensure_user(client, params, check_mode) expected = { 'changed': True, 'stdout_lines': ['created [email protected] user'] } assert result == expected
def test_no_roles_change(self, client, params): """ If a playbook author omits "roles", we should not change the existing value on the server. """ # Ansible will default "roles" to "None": params['roles'] = None client.adapter.register_uri( 'GET', 'https://errata.devel.redhat.com/api/v1/user/[email protected]', json=USER) # On the server, "roles" is ['devel']: assert USER['roles'] == ['devel'] check_mode = False result = ensure_user(client, params, check_mode) assert result == {'changed': False, 'stdout_lines': []}
def test_no_organization_change(self, client, params, user): """ If a playbook author omits "organization", we should not change the existing value on the server. """ # Ansible will default "organization" to "None": params['organization'] = None client.adapter.register_uri( 'GET', 'https://errata.devel.redhat.com/api/v1/user/[email protected]', json=user) # On the server, "organization" is "Engineering": assert user['organization'] == 'Engineering' check_mode = False result = ensure_user(client, params, check_mode) assert result == {'changed': False, 'stdout_lines': []}
def test_edit(self, client, params, user): user['roles'] = ['pm'] client.adapter.register_uri( 'GET', 'https://errata.devel.redhat.com/api/v1/user/[email protected]', json=user) client.adapter.register_uri( 'PUT', 'https://errata.devel.redhat.com/api/v1/user/123456', status_code=200) check_mode = False result = ensure_user(client, params, check_mode) expected_stdout_lines = ["changing roles from ['pm'] to ['devel']"] if PY2: expected_stdout_lines = [ "changing roles from [u'pm'] to ['devel']" ] assert result['changed'] is True assert set(result['stdout_lines']) == set(expected_stdout_lines)
def test_create(self, client, params): 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) client.adapter.register_uri( 'POST', 'https://errata.devel.redhat.com/api/v1/user', status_code=201) check_mode = False result = ensure_user(client, params, check_mode) expected = { 'changed': True, 'stdout_lines': ['created [email protected] user'] } assert result == expected