def setUp(self): settings.DEBUG = True settings.JUPYTERHUB_BASE_URL = 'http://example.com/' self.factory = RequestFactory() self.oh_member = OpenHumansMember.create( oh_id=1234, oh_username='******', access_token='foo', refresh_token='bar', expires_in=36000) self.oh_member.save() self.notebook = SharedNotebook( oh_member=self.oh_member, notebook_name='test_notebook.ipynb', notebook_content=open( 'main/tests/fixtures/test_notebook.ipynb').read(), description='test_description', tags='["foo", "bar"]', data_sources='["source1", "source2"]', views=123, updated_at=arrow.now().format(), created_at=arrow.now().format() ) self.notebook.save() self.oh_member_two = OpenHumansMember.create( oh_id=2345, oh_username='******', access_token='foo', refresh_token='bar', expires_in=36000) self.oh_member_two.save()
def oh_code_to_member(code): """ Exchange code for token, use this to create and return OpenHumansMember. If a matching OpenHumansMember exists, update and return it. """ if settings.OPENHUMANS_CLIENT_SECRET and \ settings.OPENHUMANS_CLIENT_ID and code: print('{}/complete/oh'.format(settings.OPENHUMANS_APP_BASE_URL)) data = { 'grant_type': 'authorization_code', 'redirect_uri': '{}/complete/oh'.format(settings.OPENHUMANS_APP_BASE_URL), 'code': code, } req = requests.post('{}/oauth2/token/'.format( settings.OPENHUMANS_OH_BASE_URL), data=data, auth=requests.auth.HTTPBasicAuth( settings.OPENHUMANS_CLIENT_ID, settings.OPENHUMANS_CLIENT_SECRET)) data = req.json() if 'access_token' in data: oh_id = oh_get_member_data( data['access_token'])['project_member_id'] try: oh_member = OpenHumansMember.objects.get(oh_id=oh_id) logger.debug('Member {} re-authorized.'.format(oh_id)) oh_member.access_token = data['access_token'] oh_member.refresh_token = data['refresh_token'] oh_member.token_expires = OpenHumansMember.get_expiration( data['expires_in']) except OpenHumansMember.DoesNotExist: oh_member = OpenHumansMember.create( oh_id=oh_id, access_token=data['access_token'], refresh_token=data['refresh_token'], expires_in=data['expires_in']) logger.debug('Member {} created.'.format(oh_id)) oh_member.save() return oh_member elif 'error' in req.json(): logger.debug('Error in token exchange: {}'.format(req.json())) else: logger.warning('Neither token nor error info in OH response!') else: logger.error('OH_CLIENT_SECRET or code are unavailable') return None
def handle(self, *args, **options): for line in open(options['infile']): line = line.strip().split(options['delimiter']) oh_id = line[0] oh_refresh_token = line[1] moves_refresh_token = line[2] if len(OpenHumansMember.objects.filter(oh_id=oh_id)) == 0: oh_member = OpenHumansMember.create( oh_id=oh_id, access_token="mock", refresh_token=oh_refresh_token, expires_in=-3600) oh_member.save() oh_member._refresh_tokens( client_id=settings.OPENHUMANS_CLIENT_ID, client_secret=settings.OPENHUMANS_CLIENT_SECRET) oh_member = OpenHumansMember.objects.get(oh_id=oh_id) moves_member = DataSourceMember( access_token="mock", refresh_token=moves_refresh_token, token_expires=DataSourceMember.get_expiration(-3600)) moves_member.user = oh_member moves_member._refresh_tokens( client_id=settings.MOVES_CLIENT_ID, client_secret=settings.MOVES_CLIENT_SECRET) process_moves.delay(oh_member.oh_id)
def setUp(self): settings.DEBUG = True settings.OPENHUMANS_CLIENT_ID = "6yNYmUlXN1wLwQFQR0lnUohR1KMeVt" settings.OPENHUMANS_CLIENT_SECRET = "Y2xpZW50aWQ6Y2xpZW50c2VjcmV0" settings.OPENHUMANS_APP_BASE_URL = "http://127.0.0.1:5000" self.factory = RequestFactory() self.oh_member = OpenHumansMember.create(oh_id=1234, oh_username='******', access_token='foobar', refresh_token='bar', expires_in=36000) self.oh_member.save() self.user = self.oh_member.user self.user.set_password('foobar') self.user.save() self.notebook = SharedNotebook( oh_member=self.oh_member, notebook_name='test_notebook.ipynb', notebook_content=open( 'main/tests/fixtures/test_notebook.ipynb').read(), description='test_description', tags='["foo", "bar"]', data_sources='["source1", "source2"]', views=123, updated_at=arrow.now().format(), created_at=arrow.now().format()) self.notebook.save()
def setUp(self): # set up project settings.DEBUG = True # settings.OPENHUMANS_APP_BASE_URL = "http://127.0.0.1" call_command('init_proj_config') project_config = ProjectConfiguration.objects.get(id=1) project_config.oh_client_id = "6yNYmUlXN1wLwQFQR0lnUohR1KMeVt" project_config.oh_client_secret = "Y2xpZW50aWQ6Y2xpZW50c2VjcmV0" project_config.save() self.oh_file = FileMetaData() self.oh_file.name = "test" self.oh_file.description = 'a test file' self.oh_file.tags = json.dumps("my,tag,list") self.oh_file.save() # set up user data = {"access_token": 'foo', "refresh_token": 'bar', "expires_in": 36000} self.oh_member = OpenHumansMember.create(oh_id='1234567890abcdef', data=data) self.oh_member.save() self.user = self.oh_member.user self.user.set_password('foobar') self.user.save()
def handle(self, *args, **options): for line in open(options['infile']): line = line.strip().split(options['delimiter']) oh_id = line[0] oh_refresh_token = line[1] runkeeper_access_token = line[2] if len(OpenHumansMember.objects.filter(oh_id=oh_id)) == 0: oh_member = OpenHumansMember.create( oh_id=oh_id, access_token="mock", refresh_token=oh_refresh_token, expires_in=-3600) oh_member.save() oh_member._refresh_tokens( client_id=settings.OPENHUMANS_CLIENT_ID, client_secret=settings.OPENHUMANS_CLIENT_SECRET) oh_member = OpenHumansMember.objects.get(oh_id=oh_id) headers = { 'Authorization': 'Bearer {}'.format(runkeeper_access_token) } profile_url = 'https://api.runkeeper.com/user' profile_response = requests.get(profile_url, headers=headers) user_data = profile_response.json() runkeeper_id = user_data['userID'] runkeeper_member = DataSourceMember( access_token=runkeeper_access_token, runkeeper_id=runkeeper_id) runkeeper_member.user = oh_member runkeeper_member.save() process_runkeeper.delay(oh_member.oh_id)
def handle(self, *args, **options): for line in open(options['infile']): line = line.strip().split(options['delimiter']) oh_id = line[0] oh_refresh_token = line[1] moves_refresh_token = line[2] if len(OpenHumansMember.objects.filter(oh_id=oh_id)) == 0: oh_member = OpenHumansMember.create( oh_id=oh_id, access_token="mock", refresh_token=oh_refresh_token, expires_in=-3600) oh_member.save() oh_member._refresh_tokens( client_id=settings.OPENHUMANS_CLIENT_ID, client_secret=settings.OPENHUMANS_CLIENT_SECRET) oh_member = OpenHumansMember.objects.get(oh_id=oh_id) print("made it to fitbitmember") fitbit_member = FitbitMember( access_token="mock", refresh_token=moves_refresh_token, expires_in=FitbitMember.get_expiration(-3600)) print(fitbit_member) fitbit_member.user = oh_member fitbit_member._refresh_tokens()
def handle(self, *args, **options): for line in open(options['infile']): line = line.strip().split(options['delimiter']) oh_id = line[0] oh_access_token = line[1] oh_refresh_token = line[2] nokia_id = line[3] nokia_access_token = line[4] nokia_token_secret = line[5] if len(OpenHumansMember.objects.filter( oh_id=oh_id)) == 0: oh_member = OpenHumansMember.create( oh_id=oh_id, access_token=oh_access_token, refresh_token=oh_refresh_token, expires_in=-3600) oh_member.save() # oh_member._refresh_tokens(client_id=settings.OPENHUMANS_CLIENT_ID, # client_secret=settings.OPENHUMANS_CLIENT_SECRET) oh_member = OpenHumansMember.objects.get(oh_id=oh_id) print("made it to nokiamember") nokia_member = NokiaHealthMember( userid=nokia_id, oauth_token=nokia_access_token, oauth_token_secret=nokia_token_secret ) print(nokia_member) nokia_member.user = oh_member nokia_member.save()
def setUp(self): settings.DEBUG = True self.oh_member = OpenHumansMember.create( oh_id=1234, oh_username='******', access_token='foo', refresh_token='bar', expires_in=36000) self.oh_member.save() self.notebook = SharedNotebook( oh_member=self.oh_member, notebook_name='test_notebook.ipynb', notebook_content=open( 'main/tests/fixtures/test_notebook.ipynb').read(), description='test_description', tags='["foo", "bar"]', data_sources='["source1", "source2"]', views=123, updated_at=arrow.now().format(), created_at=arrow.now().format() ) self.notebook.save() self.oh_member_two = OpenHumansMember.create( oh_id=2345, oh_username='******', access_token='foo', refresh_token='bar', expires_in=36000) self.oh_member_two.save() self.oh_member_data = { 'created': '2018-01-19T21:55:40.049169Z', 'next': None, 'project_member_id': '1234', 'message_permission': True, 'sources_shared': ['direct-sharing-71'], 'username': '******', 'data': [{ 'id': 12, 'source': 'direct-sharing-71', 'basename': 'test_notebook.ipynb', 'created': '2018-06-06T17:09:26.688794Z', 'download_url': 'http://example.com/test_notebook.ipynb', 'metadata': { 'tags': ['personal data notebook', 'notebook', 'jupyter'], 'description': 'A Personal Data Notebook'} }]}
def oh_code_to_member(code): """ Exchange code for token, use this to create and return OpenHumansMember. If a matching OpenHumansMember already exists in db, update and return it. """ proj_config = ProjectConfiguration.objects.get(id=1) if not (proj_config.oh_client_secret and proj_config.oh_client_id and code): logger.error('OH_CLIENT_SECRET or code are unavailable') return None data = ohapi.api.oauth2_token_exchange( client_id=proj_config.oh_client_id, client_secret=proj_config.oh_client_secret, code=code, redirect_uri=OH_OAUTH2_REDIRECT_URI, base_url=OH_BASE_URL) if 'error' in data: logger.debug('Error in token exchange: {}'.format(data)) return None if 'access_token' in data: oh_id = ohapi.api.exchange_oauth2_member( access_token=data['access_token'])['project_member_id'] try: oh_member = OpenHumansMember.objects.get(oh_id=oh_id) logger.debug('Member {} re-authorized.'.format(oh_id)) oh_member.access_token = data['access_token'] oh_member.refresh_token = data['refresh_token'] oh_member.token_expires = OpenHumansMember.get_expiration( data['expires_in']) except OpenHumansMember.DoesNotExist: oh_member = OpenHumansMember.create( oh_id=oh_id, access_token=data['access_token'], refresh_token=data['refresh_token'], expires_in=data['expires_in']) logger.debug('Member {} created.'.format(oh_id)) oh_member.save() return oh_member else: logger.warning('Neither token nor error info in OH response!') return None
def setUp(self): settings.DEBUG = True self.oh_member = OpenHumansMember.create(oh_id=1234, oh_username='******', access_token='foo', refresh_token='bar', expires_in=36000) self.user = User(username='******') self.user.save()
def setUp(self): settings.DEBUG = True call_command('init_proj_config') data = {"access_token": 'foo', "refresh_token": 'bar', "expires_in": 36000} self.oh_member = OpenHumansMember.create(oh_id=1234, data=data) self.user = User(username='******') self.user.save()
def get_create_member(data): ''' use the data returned by `ohapi.api.oauth2_token_exchange` and return an oh_member object ''' oh_id = ohapi.api.exchange_oauth2_member( access_token=data['access_token'])['project_member_id'] try: oh_member = OpenHumansMember.objects.get(oh_id=oh_id) logger.debug('Member {} re-authorized.'.format(oh_id)) oh_member.access_token = data['access_token'] oh_member.refresh_token = data['refresh_token'] oh_member.token_expires = OpenHumansMember.get_expiration( data['expires_in']) except OpenHumansMember.DoesNotExist: oh_member = OpenHumansMember.create(oh_id=oh_id, data=data) logger.debug('Member {} created.'.format(oh_id)) oh_member.save() return oh_member
def handle(self, *args, **options): client_info = ProjectConfiguration.objects.get(id=1).client_info for line in open(options['infile']): line = line.strip().split(options['delimiter']) oh_id, refresh_token = line[0], line[1] if len(OpenHumansMember.objects.filter(oh_id=oh_id)) == 0: data = {} data["access_token"] = "mock" data["refresh_token"] = refresh_token data["expires_in"] = -3600 oh_member = OpenHumansMember.create(oh_id, data) oh_member._refresh_tokens(**client_info)
def test_delete_single(self): data = {"access_token": 'foo', "refresh_token": 'bar', "expires_in": 36000} self.oh_member = OpenHumansMember.create(oh_id='1234567890abcdef', data=data) self.oh_member.save() self.user = self.oh_member.user self.user.set_password('foobar') self.user.save() c = Client() c.login(username=self.user.username, password='******') response = c.get("/delete/1337", follow=True) self.assertEqual(response.status_code, 200) self.assertTemplateUsed(response, 'main/list.html')
def setUp(self): """ Set up the app for following tests """ settings.DEBUG = True call_command('init_proj_config') self.factory = RequestFactory() data = {"access_token": 'foo', "refresh_token": 'bar', "expires_in": 36000} self.oh_member = OpenHumansMember.create(oh_id='12345678', data=data) self.oh_member.save() self.user = self.oh_member.user self.user.set_password('foobar') self.user.save()
def setUp(self): settings.OPENHUMANS_CLIENT_ID = 'oh_client_id' settings.OPENHUMANS_CLIENT_SECRET = 'oh_client_secret' settings.RESCUETIME_CLIENT_ID = 'moves_client_id' settings.RESCUETIME_CLIENT_SECRET = 'moves_client_secret' oh_member = OpenHumansMember.create( oh_id=23456789, access_token="new_oh_access_token", refresh_token="new_oh_refresh_token", expires_in=36000) oh_member.save() moves_member = DataSourceMember( access_token="new_moves_access_token", last_updated=arrow.get('2016-06-19').format(), last_submitted=arrow.get('2016-06-19').format()) moves_member.user = oh_member moves_member.save()
def test_log_out(self): """ Tests logout function """ data = {"access_token": 'foo', "refresh_token": 'bar', "expires_in": 36000} self.oh_member = OpenHumansMember.create(oh_id='1234567890abcdef', data=data) self.oh_member.save() self.user = self.oh_member.user self.user.set_password('foobar') self.user.save() c = Client() c.login(username=self.user.username, password='******') response = c.post('/logout') self.assertEqual(response.wsgi_request.user.username, '') self.assertRedirects(response, "/")
def setUp(self): settings.OPENHUMANS_CLIENT_ID = 'oh_client_id' settings.OPENHUMANS_CLIENT_SECRET = 'oh_client_secret' settings.MOVES_CLIENT_ID = 'moves_client_id' settings.MOVES_CLIENT_SECRET = 'moves_client_secret' app.conf.update(task_always_eager=True) oh_member = OpenHumansMember.create( oh_id=23456789, access_token="new_oh_access_token", refresh_token="new_oh_refresh_token", expires_in=36000) oh_member.save() moves_member = DataSourceMember( moves_id=12345678, access_token="new_moves_access_token", refresh_token='new_moves_refresh_token', token_expires=DataSourceMember.get_expiration(36000), last_updated=arrow.get('2016-06-19').format(), last_submitted=arrow.get('2016-06-19').format()) moves_member.user = oh_member moves_member.save()
def handle(self, *args, **options): for line in open(options['infile']): line = line.strip().split(options['delimiter']) oh_id = line[0] oh_access_token = line[1] oh_refresh_token = line[2] jawbone_access_token = line[3] if len(OpenHumansMember.objects.filter(oh_id=oh_id)) == 0: print(line) jawbone_headers = { 'Authorization': 'Bearer {}'.format(jawbone_access_token) } req = requests.get( 'https://jawbone.com/nudge/api/v.1.1/users/@me', headers=jawbone_headers) user_data = req.json() if 'xid' not in user_data['data']: continue oh_member = OpenHumansMember.create( oh_id=oh_id, access_token=oh_access_token, refresh_token=oh_refresh_token, expires_in=-3600) oh_member.save() oh_member._refresh_tokens( client_id=settings.OPENHUMANS_CLIENT_ID, client_secret=settings.OPENHUMANS_CLIENT_SECRET) oh_member = OpenHumansMember.objects.get(oh_id=oh_id) jawbone_member = DataSourceMember( jawbone_id=user_data['data']['xid'], access_token=jawbone_access_token, refresh_token='unknown', token_expires=DataSourceMember.get_expiration(1000000000)) jawbone_member.user = oh_member jawbone_member.save() process_jawbone.delay(oh_member.oh_id)