class TestUsernameSession(unittest.TestCase):
    def setUp(self):
        self.site_id = "id"
        self.mock_requests = Mock()
        self.username = "******"
        self.password = "******"
        self.client_id = "client_id"
        self.client_secret = "client_secret"
        self.session = UsernameSession(
            self.site_id, self.username, self.password, self.client_id, self.client_secret, requests=self.mock_requests
        )

    def test_constructor_defaults(self):
        session = UsernameSession(self.site_id, self.username, self.password, self.client_id, self.client_secret)
        self.assertEqual(self.site_id, session.site_id)
        self.assertEqual(self.username, session.username)
        self.assertEqual(self.password, session.password)
        self.assertEqual(self.client_id, session.client_id)
        self.assertEqual(self.client_secret, session.client_secret)
        self.assertEqual("https://accounts.jirafe.com/oauth2/authorize", session.auth_url)
        self.assertEqual("https://accounts.jirafe.com/oauth2/access_token", session.token_url)
        self.assertEqual("https://accounts.jirafe.com/accounts/profile", session.profile_url)
        self.assertIsNone(session.access_token)
        self.assertEqual(requests, session.requests)

    def test__get_token_happy(self):
        data = {
            "username": self.username,
            "password": self.password,
            "grant_type": "password",
            "client_id": self.client_id,
            "client_secret": self.client_secret,
        }

        mock_response = Mock()
        mock_response.status_code = 200
        mock_response.json = Mock(return_value={"access_token": "teh_token"})
        self.mock_requests.post = Mock(return_value=mock_response)

        self.assertEqual("teh_token", self.session._get_token())
        self.mock_requests.post.assert_called_once_with(self.session.token_url, data=data)

    def test__get_token_sad(self):
        data = {
            "username": self.username,
            "password": self.password,
            "grant_type": "password",
            "client_id": self.client_id,
            "client_secret": self.client_secret,
        }

        mock_response = Mock()
        mock_response.status_code = 403
        self.mock_requests.post = Mock(return_value=mock_response)

        self.assertIsNone(self.session._get_token())
        self.mock_requests.post.assert_called_once_with(self.session.token_url, data=data)
 def setUp(self):
     self.site_id = 'id'
     self.mock_requests = Mock()
     self.username = '******'
     self.password = '******'
     self.client_id = 'client_id'
     self.client_secret = 'client_secret'
     self.session = UsernameSession(self.site_id,
                                    self.username,
                                    self.password,
                                    self.client_id,
                                    self.client_secret,
                                    requests=self.mock_requests)
 def setUp(self):
     self.site_id = "id"
     self.mock_requests = Mock()
     self.username = "******"
     self.password = "******"
     self.client_id = "client_id"
     self.client_secret = "client_secret"
     self.session = UsernameSession(
         self.site_id, self.username, self.password, self.client_id, self.client_secret, requests=self.mock_requests
     )
 def test_constructor_defaults(self):
     session = UsernameSession(self.site_id, self.username, self.password,
                               self.client_id, self.client_secret)
     self.assertEqual(self.site_id, session.site_id)
     self.assertEqual(self.username, session.username)
     self.assertEqual(self.password, session.password)
     self.assertEqual(self.client_id, session.client_id)
     self.assertEqual(self.client_secret, session.client_secret)
     self.assertEqual('https://accounts.jirafe.com/oauth2/authorize',
                      session.auth_url)
     self.assertEqual('https://accounts.jirafe.com/oauth2/access_token',
                      session.token_url)
     self.assertEqual('https://accounts.jirafe.com/accounts/profile',
                      session.profile_url)
     self.assertIsNone(session.access_token)
     self.assertEqual(requests, session.requests)
class TestUsernameSession(unittest.TestCase):
    def setUp(self):
        self.site_id = 'id'
        self.mock_requests = Mock()
        self.username = '******'
        self.password = '******'
        self.client_id = 'client_id'
        self.client_secret = 'client_secret'
        self.session = UsernameSession(self.site_id,
                                       self.username,
                                       self.password,
                                       self.client_id,
                                       self.client_secret,
                                       requests=self.mock_requests)

    def test_constructor_defaults(self):
        session = UsernameSession(self.site_id, self.username, self.password,
                                  self.client_id, self.client_secret)
        self.assertEqual(self.site_id, session.site_id)
        self.assertEqual(self.username, session.username)
        self.assertEqual(self.password, session.password)
        self.assertEqual(self.client_id, session.client_id)
        self.assertEqual(self.client_secret, session.client_secret)
        self.assertEqual('https://accounts.jirafe.com/oauth2/authorize',
                         session.auth_url)
        self.assertEqual('https://accounts.jirafe.com/oauth2/access_token',
                         session.token_url)
        self.assertEqual('https://accounts.jirafe.com/accounts/profile',
                         session.profile_url)
        self.assertIsNone(session.access_token)
        self.assertEqual(requests, session.requests)

    def test__get_token_happy(self):
        data = {
            'username': self.username,
            'password': self.password,
            'grant_type': 'password',
            'client_id': self.client_id,
            'client_secret': self.client_secret,
        }

        mock_response = Mock()
        mock_response.status_code = 200
        mock_response.json = Mock(return_value={'access_token': 'teh_token'})
        self.mock_requests.post = Mock(return_value=mock_response)

        self.assertEqual('teh_token', self.session._get_token())
        self.mock_requests.post.assert_called_once_with(self.session.token_url,
                                                        data=data)

    def test__get_token_sad(self):
        data = {
            'username': self.username,
            'password': self.password,
            'grant_type': 'password',
            'client_id': self.client_id,
            'client_secret': self.client_secret,
        }

        mock_response = Mock()
        mock_response.status_code = 403
        self.mock_requests.post = Mock(return_value=mock_response)

        self.assertIsNone(self.session._get_token())
        self.mock_requests.post.assert_called_once_with(self.session.token_url,
                                                        data=data)