import unittest
from unittest import mock

from conio_sdk.common import exceptions
from conio_sdk.services.conio.sdk.refresh_token_vo_service import RefreshTokenVOServices
from conio_sdk.services.conio.user.user_service import UserService


class TestRefreshTokenVOServices(unittest.TestCase):
    def setUp(self):
        self.user_service = mock.create_autospec(UserService)
        self.sut = RefreshTokenVOServices(self.user_service)

    def test_refresh(self):
        authenticated_data = mock.Mock()
        self.user_service.refresh_session.return_value = authenticated_data
        access_token = 'an access token'
        self.assertEqual(authenticated_data, self.sut.refresh_token(access_token))
        self.user_service.refresh_session.assert_called_once_with(access_token)

    def test_refresh_without_token(self):
        with self.assertRaises(exceptions.NotAuthenticatedException):
            # noinspection PyTypeChecker
            self.sut.refresh_token(None)
        self.user_service.refresh_session.assert_not_called()
