def test_get_with_malformed_json_credentials_stored(self): with mock.patch.object(keyring, 'get_password', return_value='{', autospec=True) as get_password: store = Storage('my_unit_test', 'me') credentials = store.get() self.assertEquals(None, credentials) get_password.assert_called_once_with('my_unit_test', 'me')
def sync_calender(): # check storage for credentials store = Storage('GCal', frappe.session.user) # store = Storage('GCal', "makarand") credentials = store.get() if not credentials or credentials.invalid: url = get_oauth2_authorize_url('gcal') return {"url": url, "is_synced": False} else: from gcal.tasks import sync_google_calendar sync_google_calendar(credentials) return {"url": None, "is_synced": True}
def test_get_and_set_with_json_credentials_stored(self): access_token = 'foo' client_id = 'some_client_id' client_secret = 'cOuDdkfjxxnv+' refresh_token = '1/0/a.df219fjls0' token_expiry = datetime.datetime.utcnow() user_agent = 'refresh_checker/1.0' credentials = OAuth2Credentials( access_token, client_id, client_secret, refresh_token, token_expiry, GOOGLE_TOKEN_URI, user_agent) # Setting autospec on a mock with an iterable side_effect is # currently broken (http://bugs.python.org/issue17826), so instead # we patch twice. with mock.patch.object(keyring, 'get_password', return_value=None, autospec=True) as get_password: with mock.patch.object(keyring, 'set_password', return_value=None, autospec=True) as set_password: store = Storage('my_unit_test', 'me') self.assertEquals(None, store.get()) store.put(credentials) set_password.assert_called_once_with( 'my_unit_test', 'me', credentials.to_json()) get_password.assert_called_once_with('my_unit_test', 'me') with mock.patch.object(keyring, 'get_password', return_value=credentials.to_json(), autospec=True) as get_password: restored = store.get() self.assertEqual('foo', restored.access_token) self.assertEqual('some_client_id', restored.client_id) get_password.assert_called_once_with('my_unit_test', 'me')
def getAuthToken(client_id, client_secret): # Check if stored credentials are valid storage = Storage('Datamaster', 'user1') credential = storage.get() # Check if credential are still valid if (credential is None or credential.invalid): # Credentials expired -> Get new one # Create Flow object to handle OAuth 2.0 flow = OAuth2WebServerFlow(client_id=client_id, client_secret=client_secret, scope='https://www.googleapis.com/auth/drive', redirect_uri='urn:ietf:wg:oauth:2.0:oob') # Get and store new credential credential = tools.run_flow(flow, storage) return credential