def test_iam_renew_cookie_on_401_failure(self, m_req, m_login): # mock 401 m_response_bad = mock.MagicMock() type(m_response_bad).status_code = mock.PropertyMock(return_value=401) m_req.return_value = m_response_bad iam = IAMSession(MOCK_API_KEY, 'http://127.0.0.1:5984', auto_renew=True) iam.login() self.assertEqual(m_login.call_count, 1) # add a valid cookie to jar iam.cookies.set_cookie(self._mock_cookie()) resp = iam.request('GET', 'http://127.0.0.1:5984/mydb1') self.assertEqual(resp.status_code, 401) self.assertEqual(m_login.call_count, 2) self.assertEqual(m_req.call_count, 2) resp = iam.request('GET', 'http://127.0.0.1:5984/mydb1') self.assertEqual(resp.status_code, 401) self.assertEqual(m_login.call_count, 3) self.assertEqual(m_req.call_count, 4)
def test_iam_renew_cookie_on_401_success(self, m_req, m_login): # mock 200 m_response_ok = mock.MagicMock() type(m_response_ok).status_code = mock.PropertyMock(return_value=200) type(m_response_ok).text = mock.PropertyMock( return_value='{"ok": true}') # mock 401 m_response_bad = mock.MagicMock() type(m_response_bad).status_code = mock.PropertyMock(return_value=401) m_req.side_effect = [m_response_bad, m_response_ok, m_response_ok] iam = IAMSession(MOCK_API_KEY, 'http://127.0.0.1:5984', auto_renew=True) iam.login() self.assertEqual(m_login.call_count, 1) # add a valid cookie to jar iam.cookies.set_cookie(self._mock_cookie()) resp = iam.request('GET', 'http://127.0.0.1:5984/mydb1') self.assertEqual(resp.status_code, 200) self.assertEqual(m_login.call_count, 2) self.assertEqual(m_req.call_count, 2) resp = iam.request('GET', 'http://127.0.0.1:5984/mydb1') self.assertEqual(resp.status_code, 200) self.assertEqual(m_login.call_count, 2) self.assertEqual(m_req.call_count, 3)
def test_iam_first_request(self, m_req, m_login): # mock 200 m_response_ok = mock.MagicMock() type(m_response_ok).status_code = mock.PropertyMock(return_value=200) type(m_response_ok).text = mock.PropertyMock( return_value='{"ok": true}') m_req.return_value = m_response_ok iam = IAMSession(MOCK_API_KEY, 'http://127.0.0.1:5984', auto_renew=True) iam.login() self.assertEqual(m_login.call_count, 1) self.assertEqual(m_req.call_count, 0) # add a valid cookie to jar iam.cookies.set_cookie(self._mock_cookie()) resp = iam.request('GET', 'http://127.0.0.1:5984/mydb1') self.assertEqual(m_login.call_count, 1) self.assertEqual(m_req.call_count, 1) self.assertEqual(resp.status_code, 200)
def test_iam_renew_cookie_disabled(self, m_req, m_login): # mock 401 m_response_bad = mock.MagicMock() type(m_response_bad).status_code = mock.PropertyMock(return_value=401) m_req.return_value = m_response_bad iam = IAMSession(MOCK_API_KEY, 'http://127.0.0.1:5984', auto_renew=False) iam.login() self.assertEqual(m_login.call_count, 1) resp = iam.request('GET', 'http://127.0.0.1:5984/mydb1') self.assertEqual(resp.status_code, 401) self.assertEqual(m_login.call_count, 1) # no attempt to renew self.assertEqual(m_req.call_count, 1) resp = iam.request('GET', 'http://127.0.0.1:5984/mydb1') self.assertEqual(resp.status_code, 401) self.assertEqual(m_login.call_count, 1) # no attempt to renew self.assertEqual(m_req.call_count, 2)
def test_iam_renew_cookie_on_expiry(self, m_req, m_login): # mock 200 m_response_ok = mock.MagicMock() type(m_response_ok).status_code = mock.PropertyMock(return_value=200) m_response_ok.json.return_value = {'ok': True} m_req.return_value = m_response_ok iam = IAMSession(MOCK_API_KEY, 'http://127.0.0.1:5984', auto_renew=True) iam.login() # add an expired cookie to jar iam.cookies.set_cookie(self._mock_cookie(expires_secs=-300)) resp = iam.request('GET', 'http://127.0.0.1:5984/mydb1') self.assertEqual(m_login.call_count, 2) self.assertEqual(m_req.call_count, 1) self.assertEqual(resp.status_code, 200)