Esempio n. 1
0
class WeChatOAuthTestCase(unittest.TestCase):
    app_id = '123456'
    secret = '123456'
    redirect_uri = 'http://localhost'

    def setUp(self):
        self.oauth = WeChatOAuth(
            self.app_id,
            self.secret,
            self.redirect_uri
        )

    def test_get_authorize_url(self):
        authorize_url = self.oauth.authorize_url
        self.assertEqual(
            'https://open.weixin.qq.com/connect/oauth2/authorize?appid=123456&redirect_uri=http%3A%2F%2Flocalhost'
            '&response_type=code&scope=snsapi_base#wechat_redirect',
            authorize_url
        )

    def test_get_qrconnect_url(self):
        url = self.oauth.qrconnect_url
        self.assertEqual(
            'https://open.weixin.qq.com/connect/qrconnect?appid=123456&redirect_uri=http%3A%2F%2Flocalhost'
            '&response_type=code&scope=snsapi_login#wechat_redirect',
            url
        )

    def test_fetch_access_token(self):
        with HTTMock(wechat_api_mock):
            res = self.oauth.fetch_access_token('123456')
            self.assertEqual('ACCESS_TOKEN', res['access_token'])

    def test_refresh_access_token(self):
        with HTTMock(wechat_api_mock):
            res = self.oauth.refresh_access_token('123456')
            self.assertEqual('ACCESS_TOKEN', res['access_token'])

    def test_get_user_info(self):
        with HTTMock(wechat_api_mock):
            self.oauth.fetch_access_token('123456')
            res = self.oauth.get_user_info()
            self.assertEqual('OPENID', res['openid'])

    def test_check_access_token(self):
        with HTTMock(wechat_api_mock):
            self.oauth.fetch_access_token('123456')
            res = self.oauth.check_access_token()
            self.assertEqual(True, res)

    def test_reraise_requests_exception(self):
        @urlmatch(netloc=r'(.*\.)?api\.weixin\.qq\.com$')
        def _wechat_api_mock(url, request):
            return {'status_code': 404, 'content': '404 not found'}

        try:
            with HTTMock(_wechat_api_mock):
                self.oauth.fetch_access_token('123456')
        except WeChatClientException as e:
            self.assertEqual(404, e.response.status_code)
Esempio n. 2
0
def wechat(request):
    redirect_uri = 'http://oauth.gjingxi.com/oauth/wechat/'

    codes = request.GET.get('code', None)
    oauth = WeChatOAuth(settings.WECHAT_APPKEY.strip(), settings.WECHAT_SECRET, redirect_uri=redirect_uri,
        scope='snsapi_userinfo')

    if codes is None:
        return HttpResponseRedirect(oauth.authorize_url)
    try:
        access = oauth.fetch_access_token(codes)
        oauth.refresh_access_token(access.get('refresh_token'))
        user = oauth.get_user_info()

        return HttpResponse(json.dumps(user))
    except Exception as e:
        print e
        return HttpResponse(e.message)
Esempio n. 3
0
class WeChatOAuthTestCase(unittest.TestCase):
    app_id = "123456"
    secret = "123456"
    redirect_uri = "http://localhost"

    def setUp(self):
        self.oauth = WeChatOAuth(self.app_id, self.secret, self.redirect_uri)

    def test_get_authorize_url(self):
        authorize_url = self.oauth.authorize_url
        self.assertEqual(
            "https://open.weixin.qq.com/connect/oauth2/authorize?appid=123456&redirect_uri=http%3A%2F%2Flocalhost"
            "&response_type=code&scope=snsapi_base#wechat_redirect",
            authorize_url,
        )

    def test_get_qrconnect_url(self):
        url = self.oauth.qrconnect_url
        self.assertEqual(
            "https://open.weixin.qq.com/connect/qrconnect?appid=123456&redirect_uri=http%3A%2F%2Flocalhost"
            "&response_type=code&scope=snsapi_login#wechat_redirect",
            url,
        )

    def test_fetch_access_token(self):
        with HTTMock(wechat_api_mock):
            res = self.oauth.fetch_access_token("123456")
            self.assertEqual("ACCESS_TOKEN", res["access_token"])

    def test_refresh_access_token(self):
        with HTTMock(wechat_api_mock):
            res = self.oauth.refresh_access_token("123456")
            self.assertEqual("ACCESS_TOKEN", res["access_token"])

    def test_get_user_info(self):
        with HTTMock(wechat_api_mock):
            self.oauth.fetch_access_token("123456")
            res = self.oauth.get_user_info()
            self.assertEqual("OPENID", res["openid"])

    def test_check_access_token(self):
        with HTTMock(wechat_api_mock):
            self.oauth.fetch_access_token("123456")
            res = self.oauth.check_access_token()
            self.assertEqual(True, res)

    def test_reraise_requests_exception(self):
        @urlmatch(netloc=r"(.*\.)?api\.weixin\.qq\.com$")
        def _wechat_api_mock(url, request):
            return {"status_code": 404, "content": "404 not found"}

        try:
            with HTTMock(_wechat_api_mock):
                self.oauth.fetch_access_token("123456")
        except WeChatClientException as e:
            self.assertEqual(404, e.response.status_code)
Esempio n. 4
0
class WeChatOAuthTestCase(unittest.TestCase):

    app_id = "123456"
    secret = "123456"
    redirect_uri = "http://localhost"

    def setUp(self):
        self.oauth = WeChatOAuth(self.app_id, self.secret, self.redirect_uri)

    def test_get_authorize_url(self):
        authorize_url = self.oauth.authorize_url
        self.assertEqual(
            "https://open.weixin.qq.com/connect/oauth2/authorize?appid=123456&redirect_uri=http%3A//localhost&response_type=code&scope=snsapi_base#wechat_redirect",  # NOQA
            authorize_url,
        )

    def test_get_qrconnect_url(self):
        url = self.oauth.qrconnect_url
        self.assertEqual(
            "https://open.weixin.qq.com/connect/qrconnect?appid=123456&redirect_uri=http%3A//localhost&response_type=code&scope=snsapi_login#wechat_redirect",  # NOQA
            url,
        )

    def test_fetch_access_token(self):
        with HTTMock(wechat_api_mock):
            res = self.oauth.fetch_access_token("123456")
            self.assertEqual("ACCESS_TOKEN", res["access_token"])

    def test_refresh_access_token(self):
        with HTTMock(wechat_api_mock):
            res = self.oauth.refresh_access_token("123456")
            self.assertEqual("ACCESS_TOKEN", res["access_token"])

    def test_get_user_info(self):
        with HTTMock(wechat_api_mock):
            self.oauth.fetch_access_token("123456")
            res = self.oauth.get_user_info()
            self.assertEqual("OPENID", res["openid"])

    def test_check_access_token(self):
        with HTTMock(wechat_api_mock):
            self.oauth.fetch_access_token("123456")
            res = self.oauth.check_access_token()
            self.assertEqual(True, res)

    def test_reraise_requests_exception(self):
        @urlmatch(netloc=r"(.*\.)?api\.weixin\.qq\.com$")
        def _wechat_api_mock(url, request):
            return {"status_code": 404, "content": "404 not found"}

        try:
            with HTTMock(_wechat_api_mock):
                self.oauth.fetch_access_token("123456")
        except WeChatClientException as e:
            self.assertEqual(404, e.response.status_code)
Esempio n. 5
0
def authorize(request, func):
    '''
    认证接口
    :param request:
    :return:
    '''
    code = request.GET.get('code', None)
    auth = WeChatOAuth(settings.WECHAT_APPKEY,
                       settings.WECHAT_SECRET,
                       redirect_uri=request.build_absolute_uri(
                           request.get_full_path()))

    if code is None:
        return HttpResponseRedirect(auth.authorize_url)

    access = auth.fetch_access_token(code)
    auth.refresh_access_token(access.get('refresh_token'))
    user = auth.get_user_info()

    return JsonResponse(user)
Esempio n. 6
0
def buy(request):
    code_ = request.GET.get('code', None)
    oauth = WeChatOAuth(settings.WECHAT_APPKEY,
                        settings.WECHAT_SECRET,
                        redirect_uri=request.build_absolute_uri(
                            request.get_full_path()))

    if code_ is None:
        return HttpResponseRedirect(oauth.authorize_url)

    access = oauth.fetch_access_token(code_)
    oauth.refresh_access_token(access.get('refresh_token'))
    user = oauth.get_user_info()

    request.session['openid'] = user.get('openid')
    # nick = user.get('nickname')

    items = get_object_or_404(Goods, pk=request.GET.get('id'))
    items.quantity = request.GET.get('q')
    items.amount = float(float(items.price) * float(items.quantity))
    items.nick = user.get('nickname')

    return render(request, 'mobile/buy/pay.html', locals())
Esempio n. 7
0
    def returned_wrapper(request, *args, **kwargs):
        try:
            user = request.session.get('user', None)

            if user is None:
                code = request.GET.get('code', None)
                auth = WeChatOAuth(settings.WECHAT_APPKEY,
                                   settings.WECHAT_SECRET,
                                   redirect_uri=request.build_absolute_uri(
                                       request.get_full_path()))

                if code is None:
                    return HttpResponseRedirect(auth.authorize_url)

                access = auth.fetch_access_token(code)
                auth.refresh_access_token(access.get('refresh_token'))
                user = auth.get_user_info()
                request.session['user'] = user
                request.session['access'] = access
                request.session.set_expiry(int(access.get('expires_in')))
        except WeChatOAuthException as e:
            return HttpResponseRedirect(e)

        return func(request, *args, **kwargs)
Esempio n. 8
0
class WeChatOAuthTestCase(unittest.TestCase):

    app_id = '123456'
    secret = '123456'
    redirect_uri = 'http://localhost'

    def setUp(self):
        self.oauth = WeChatOAuth(
            self.app_id,
            self.secret,
            self.redirect_uri
        )

    def test_get_authorize_url(self):
        authorize_url = self.oauth.authorize_url
        self.assertEqual(
            'https://open.weixin.qq.com/connect/oauth2/authorize?appid=123456&redirect_uri=http%3A//localhost&response_type=code&scope=snsapi_base#wechat_redirect',  # NOQA
            authorize_url
        )

    def test_get_qrconnect_url(self):
        url = self.oauth.qrconnect_url
        self.assertEqual(
            'https://open.weixin.qq.com/connect/qrconnect?appid=123456&redirect_uri=http%3A//localhost&response_type=code&scope=snsapi_login#wechat_redirect',  # NOQA
            url
        )

    def test_fetch_access_token(self):
        with HTTMock(wechat_api_mock):
            res = self.oauth.fetch_access_token('123456')
            self.assertEqual('ACCESS_TOKEN', res['access_token'])

    def test_refresh_access_token(self):
        with HTTMock(wechat_api_mock):
            res = self.oauth.refresh_access_token('123456')
            self.assertEqual('ACCESS_TOKEN', res['access_token'])

    def test_get_user_info(self):
        with HTTMock(wechat_api_mock):
            self.oauth.fetch_access_token('123456')
            res = self.oauth.get_user_info()
            self.assertEqual('OPENID', res['openid'])

    def test_check_access_token(self):
        with HTTMock(wechat_api_mock):
            self.oauth.fetch_access_token('123456')
            res = self.oauth.check_access_token()
            self.assertEqual(True, res)
Esempio n. 9
0
class WeChatOAuthTestCase(unittest.TestCase):

    app_id = '123456'
    secret = '123456'
    redirect_uri = 'http://localhost'

    def setUp(self):
        self.oauth = WeChatOAuth(self.app_id, self.secret, self.redirect_uri)

    def test_get_authorize_url(self):
        authorize_url = self.oauth.authorize_url
        self.assertEqual(
            'https://open.weixin.qq.com/connect/oauth2/authorize?appid=123456&redirect_uri=http%3A//localhost&response_type=code&scope=snsapi_base#wechat_redirect',  # NOQA
            authorize_url)

    def test_get_qrconnect_url(self):
        url = self.oauth.qrconnect_url
        self.assertEqual(
            'https://open.weixin.qq.com/connect/qrconnect?appid=123456&redirect_uri=http%3A//localhost&response_type=code&scope=snsapi_login#wechat_redirect',  # NOQA
            url)

    def test_fetch_access_token(self):
        with HTTMock(wechat_api_mock):
            res = self.oauth.fetch_access_token('123456')
            self.assertEqual('ACCESS_TOKEN', res['access_token'])

    def test_refresh_access_token(self):
        with HTTMock(wechat_api_mock):
            res = self.oauth.refresh_access_token('123456')
            self.assertEqual('ACCESS_TOKEN', res['access_token'])

    def test_get_user_info(self):
        with HTTMock(wechat_api_mock):
            self.oauth.fetch_access_token('123456')
            res = self.oauth.get_user_info()
            self.assertEqual('OPENID', res['openid'])

    def test_check_access_token(self):
        with HTTMock(wechat_api_mock):
            self.oauth.fetch_access_token('123456')
            res = self.oauth.check_access_token()
            self.assertEqual(True, res)