import json from hc.api.models import Channel from hc.test import BaseTestCase from mock import patch class ChannelModelTestCase(BaseTestCase): @patch("hc.api.models.requests.post") @patch("hc.api.models.requests.get") def test_it_refreshes_hipchat_access_token(self, mock_get, mock_post): mock_get.return_value.json.return_value = { "capabilities": { "oauth2Provider": {"tokenUrl": "http://example.org"} } } mock_post.return_value.json.return_value = {"expires_in": 100} channel = Channel(kind="hipchat", user=self.alice, value=json.dumps({ "oauthId": "foo", "oauthSecret": "bar", "capabilitiesUrl": "http://example.org/capabilities.json" })) channel.refresh_hipchat_access_token() # It should fetch the remote capabilities document mock_get.assert_called() # It should request a token using a correct tokenUrl mock_post.assert_called() args, kwargs = mock_post.call_args self.assertEqual(args[0], "http://example.org") self.assertTrue("expires_at" in channel.value)