Exemplo n.º 1
0
 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
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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()
Exemplo n.º 5
0
    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()
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
 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()
Exemplo n.º 8
0
 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()
Exemplo n.º 9
0
    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'}
                    }]}
Exemplo n.º 10
0
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
Exemplo n.º 11
0
    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()
Exemplo n.º 12
0
 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()
Exemplo n.º 13
0
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
Exemplo n.º 14
0
 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)
Exemplo n.º 15
0
    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')
Exemplo n.º 16
0
 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()
Exemplo n.º 18
0
 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, "/")
Exemplo n.º 19
0
 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()
Exemplo n.º 20
0
 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)