"""Unit tests for user model.""" from unittest.mock import patch import pytest from podcast.models import ows_users from podcast.utils.exc import OwsError @patch('owsrequest.request.get') def test_get_user_by_email(mock, mock_ows_headers): """Test will get user by email.""" mock_return_value = { 'name': 'User Man', 'email': 'a@b.com', 'id': 'abc123' } mock.return_value.json.return_value = mock_return_value result = ows_users.get_identity_user_by_email('a@b.com') assert result == mock_return_value @patch('owsrequest.request.get') def test_get_user_by_email_no_result(mock, mock_ows_headers): """Test will get user by email with nothing found.""" mock.return_value.status_code = 404 result = ows_users.get_identity_user_by_email('a@b.com') assert result is None @patch('owsrequest.request.get') def test_check_for_existing_profile_none(mock, mock_ows_headers): """Test when no profile.""" mock.return_value.json.return_value = {'items': [{'profile_type': 'Billy'}]} result = ows_users.check_for_existing_profile('id1') assert result is False @patch('owsrequest.request.get') def test_check_for_existing_profile_found(mock, mock_ows_headers): """Test when already profile.""" mock.return_value.json.return_value = {'items': [{'profile_type': 'PodcastProfile'}]} result = ows_users.check_for_existing_profile('id1') assert result is True @patch('owsrequest.request.post') def test_create_auth0_user(mock, mock_ows_headers): """Test create auth0.""" mock.return_value.json.return_value = {} result = ows_users.create_auth0_user('name', 'email', 'orchard') assert result == {} @patch('owsrequest.request.delete') def test_delete_auth0_profile(mock, mock_ows_headers): """Test delete profile.""" mock.return_value.status_code = 204 result = ows_users.delete_profile('name') assert result is True @patch('owsrequest.request.delete') def test_delete_auth0_profile_fail(mock, mock_ows_headers): """Test delete profile fails.""" mock.return_value.status_code = 400 result = ows_users.delete_profile('name') assert result is False @patch('owsrequest.request.post') def test_create_auth0_profile(mock, mock_ows_headers): """Test create auth0.""" mock.return_value.json.return_value = {} mock.return_value.status_code = 201 result = ows_users.create_auth0_profile('id1', True, 'orchard') assert result == {} @patch('owsrequest.request.post') @patch('time.sleep') def test_create_auth0_profile_times_out(unused_mock, mock, mock_ows_headers): """Test create auth0.""" mock.return_value.json.return_value = {} mock.return_value.status_code = 202 with pytest.raises(OwsError) as err: ows_users.create_auth0_profile('id1', True, 'orchard') assert err.value.status == 202 @patch('owsrequest.request.post') def test_create_organization_invitation_success(mock, mock_ows_headers, org_invite_data_fixture): """Test create organization invitation success.""" mock.return_value.status_code = 200 mock.return_value.json.return_value = org_invite_data_fixture result = ows_users.create_organization_invitation('identity_id', 'email', 'orchard') assert result['invitation_url'] == 'https://test.com/?invitation=abc&organization=org_id&organization_name=org' @patch('owsrequest.request.post') def test_create_organization_invitation_failure(mock, mock_ows_headers): """Test create organization invitation failure.""" mock.return_value.status_code = 500 with pytest.raises(OwsError) as err: ows_users.create_organization_invitation('identity_id', 'email', 'orchard') assert err.value.status == 500 @patch('owsrequest.request.post') def test_create_organization_members_success(mock, mock_ows_headers): """Test create organization members success.""" mock.return_value.status_code = 200 ows_users.create_organization_members('orchard', ['auth0|abc']) @patch('owsrequest.request.post') def test_create_organization_members_failure(mock, mock_ows_headers): """Test create organization members failure.""" mock.return_value.status_code = 500 with pytest.raises(OwsError) as err: ows_users.create_organization_members('orchard', ['auth0|abc']) assert err.value.status == 500