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)
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)
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)
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)
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)
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())
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)
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)
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)