Beispiel #1
0
    def test_authorization_url_with_scopes(self):
        flow_obj = DropboxOAuth2Flow(APP_KEY, APP_SECRET,
                                     'http://localhost/dummy', 'dummy_session',
                                     'dbx-auth-csrf-token')

        scopes = ['account_info.read', 'files.metadata.read']
        scope_authorization_url = flow_obj._get_authorize_url(
            None, None, 'offline', scopes)
        assert scope_authorization_url.startswith(
            'https://{}/oauth2/authorize?'.format(session.WEB_HOST))
        assert 'client_id={}'.format(APP_KEY) in scope_authorization_url
        assert 'response_type=code' in scope_authorization_url
        assert 'token_access_type=offline' in scope_authorization_url
        assert 'scope=account_info.read+files.metadata.read' in scope_authorization_url
        assert 'include_granted_scopes' not in scope_authorization_url
Beispiel #2
0
 def authorization(self):
     """
     oauth2
     :return:
     """
     auth_flow = DropboxOAuth2Flow(self.APP_KEY, self.APP_SECRET, redirect_uri=config['redirect']['url'], session={},
                                   csrf_token_session_key=self.csrf_token_session_key)
     authorize_url = auth_flow.start()
     self.state = parse_qs(urlparse(authorize_url).query)['state'][0]
     webbrowser.open(authorize_url)
     if not self.get_auth_tocken():
         print('Authorization failed')
         return False
     self.access_token = auth_flow.finish(self.access_parameters)
     self.dbx = dropbox.Dropbox(self.access_token.access_token)
     self.dfx = dropbox.files
     return True
Beispiel #3
0
 def oauth_flow(self):
     if 'oauth_states' not in session.data:
         session.data['oauth_states'] = {}
     if self.short_name not in session.data['oauth_states']:
         session.data['oauth_states'][self.short_name] = {
             'state': generate_token()
         }
     return DropboxOAuth2Flow(
         self.client_id,
         self.client_secret,
         redirect_uri=web_url_for(
             'oauth_callback',
             service_name=self.short_name,
             _absolute=True
         ),
         session=session.data['oauth_states'][self.short_name], csrf_token_session_key='state'
     )
    def test_default_oauth2_urls(self):
        flow_obj = DropboxOAuth2Flow('dummy_app_key', 'dummy_app_secret',
            'http://localhost/dummy', 'dummy_session', 'dbx-auth-csrf-token')

        six.assertRegex(
            self,
            flow_obj._get_authorize_url('http://localhost/redirect', 'state', 'legacy'),
            r'^https://{}/oauth2/authorize\?'.format(re.escape(session.WEB_HOST)),
        )

        self.assertEqual(
            flow_obj.build_url('/oauth2/authorize'),
            'https://{}/oauth2/authorize'.format(session.API_HOST),
        )

        self.assertEqual(
            flow_obj.build_url('/oauth2/authorize', host=session.WEB_HOST),
            'https://{}/oauth2/authorize'.format(session.WEB_HOST),
        )
Beispiel #5
0
    def get(self, request):
        flow = DropboxOAuth2Flow(
            settings.DROPBOX_API_KEY,
            settings.DROPBOX_API_SECRET,
            request.build_absolute_uri(
                '%s?%s' % (
                    reverse('dropbox_callback'),
                    urlencode(
                        {
                            'next': (
                                self.request.GET.get('next') or
                                settings.LOGIN_REDIRECT_URL
                            )
                        }
                    )
                )
            ),
            request.session,
            'csrfmiddlewaretoken'
        )

        return HttpResponseRedirect(
            flow.start()
        )
Beispiel #6
0
def get_dropbox_auth_flow(request):
    proto = 'https://' if request.is_secure() else 'http://'
    redirect_uri = proto + request.META['HTTP_HOST'] + resolve_url('dropboxauthredirect')
    return DropboxOAuth2Flow(settings.DROPBOX_APP_KEY, settings.DROPBOX_APP_SECRET, 
                                     redirect_uri, request.session, "dropbox-auth-csrf-token")
Beispiel #7
0
 def test_authorization_url_invalid_token_type_raises_assertion_error(self):
     flow_obj = DropboxOAuth2Flow(APP_KEY, APP_SECRET,
                                  'http://localhost/dummy', 'dummy_session',
                                  'dbx-auth-csrf-token')
     with pytest.raises(AssertionError):
         flow_obj._get_authorize_url(None, None, 'invalid')
Beispiel #8
0
    def start_creating_connection(self, flow_object: DropboxOAuth2Flow) -> str:
        if flow_object is None: return None

        return flow_object.start()
Beispiel #9
0
def get_dropbox_auth_flow(web_app_session):
    return DropboxOAuth2Flow("APP_KEY", "APP_SECRET", root + ":" + str(port),
                             web_app_session, "dropbox-auth-csrf-token")
Beispiel #10
0
def get_dropbox_auth_flow(web_app_session):
    return DropboxOAuth2Flow(
        os.environ["COUCHDROP_WEB__DROPBOX_KEY"], os.environ["COUCHDROP_WEB__DROPBOX_SECRET"],
        os.environ["COUCHDROP_WEB__REDIRECT_URI"], web_app_session,
        "dropbox-auth-csrf-token"
    )
Beispiel #11
0
def get_dropbox_auth_flow(web_app_session):
    redirect_url = ST.REDIRECT_URL
    DropboxOAuth2Flow(ST.APP_KEY, ST.APP_SECRET, redirect_url)
Beispiel #12
0
def get_dropbox_auth_flow(web_app_session):
    redirect_uri = "https://my-web-server.org/dropbox-auth-finish"
    return DropboxOAuth2Flow(
        '0azi3qhn16dgofm', 'trpjwzdmwqo0wd9', redirect_uri, web_app_session,
        "dropbox-auth-csrf-token")
Beispiel #13
0
def get_dropbox_auth_flow(web_app_session):
    redirect_uri = url_for('settings.dropbox_auth_finish', _external=True)
    return DropboxOAuth2Flow(app.config["DROPBOX_APP_KEY"],
                             app.config["DROPBOX_APP_SECRET"], redirect_uri,
                             web_app_session, "dropbox-auth-csrf-token")
Beispiel #14
0
def get_dropbox_auth_flow(web_app_session):
    redirect_uri = "http://localhost:8000/zapier/index/"
    return DropboxOAuth2Flow("wz86r6znb1z42dh", "yw5gf9vfxb5leof",
                             redirect_uri, web_app_session,
                             "dropbox-auth-csrf-token")
Beispiel #15
0
def get_dropbox_auth_flow(web_app_session):
    return DropboxOAuth2Flow(APP_KEY, APP_SECRET, DP_REDIRECT_URL,
                             web_app_session, "dropbox-auth-csrf-token")
Beispiel #16
0
def get_flow():
    print("GETTING FLOW...")
    return DropboxOAuth2Flow(APP_KEY, APP_SECRET, get_url('oauth_callback'),
                             session, 'dropbox-csrf-token')
Beispiel #17
0
def get_dropbox_auth_flow(web_app_session):
    return DropboxOAuth2Flow(settings.DROPBOX_APP_KEY,
                             settings.DROPBOX_APP_SECRET,
                             settings.DROPBOX_CLIENT_REDIRECT_URI,
                             web_app_session, "dropbox-auth-csrf-token")
def get_flow():
    return DropboxOAuth2Flow(APP_KEY, APP_SECRET, get_url('oauth_callback'),
                             session, "dropbox-auth-csrf-token")
Beispiel #19
0
def get_dropbox_auth_flow(web_app_session):
    return DropboxOAuth2Flow(DROPBOX_APP_KEY, DROPBOX_APP_SECRET,
                             DROPBOX_APP_REDIRECT, web_app_session,
                             "dropbox-auth-csrf-token")