def test_get_ticket_failed_for_same_name_activities(self): found = resolve('/wechat', urlconf=WeChatTicket.urls) request = Mock(wraps=HttpRequest(), method='POST') request.body = '<xml>' \ '<ToUserName><![CDATA[1]]></ToUserName>\n' \ '<FromUserName><![CDATA[1]]></FromUserName>\n' \ '<MsgType><![CDATA[text]]></MsgType>\n' \ '<Content><![CDATA[抢票 马兰花开]]></Content>\n' \ '</xml>' content = found.func(request).content.decode(encoding="utf-8") response = WeChatView.parse_msg_xml(ET.fromstring(content)) self.assertEqual(response['Content'], '存在重名活动,请利用菜单抢票')
def test_return_ticket_failed_for_acitvity_not_exist(self): found = resolve('/wechat', urlconf=WeChatTicket.urls) request = Mock(wraps=HttpRequest(), method='POST') request.body = '<xml>' \ '<ToUserName><![CDATA[1]]></ToUserName>\n' \ '<FromUserName><![CDATA[1]]></FromUserName>\n' \ '<MsgType><![CDATA[text]]></MsgType>\n' \ '<Content><![CDATA[退票 aaa]]></Content>\n' \ '</xml>' content = found.func(request).content.decode(encoding="utf-8") response = WeChatView.parse_msg_xml(ET.fromstring(content)) self.assertEqual(response['Content'], '您要找的活动并不存在哦!')
def test_get_ticket_failed_for_out_of_tickets(self): found = resolve('/wechat', urlconf=WeChatTicket.urls) request = Mock(wraps=HttpRequest(), method='POST') request.body = '<xml>' \ '<ToUserName><![CDATA[1]]></ToUserName>\n' \ '<FromUserName><![CDATA[1]]></FromUserName>\n' \ '<MsgType><![CDATA[event]]></MsgType>\n' \ '<Event><![CDATA[CLICK]]></Event>\n' \ '<EventKey><![CDATA[BOOKING_ACTIVITY_4]]></EventKey>\n' \ '</xml>' content = found.func(request).content.decode(encoding="utf-8") response = WeChatView.parse_msg_xml(ET.fromstring(content)) self.assertEqual(response['Content'], '您没能抢到票,回去再练二十年手速吧!')
def wrapper(obj, *args, **kwargs): if not IGNORE_CODE_CHECK: if obj.request.session.get('openid', False): student = Student.objects.get( open_id=obj.request.session['openid']) else: obj.check_input('code', 'state') try: # pragma: no cover student, create = Student.objects.get_or_create( open_id=WeChatView.open_id_from_code( obj.input['code'])) obj.request.session['code'] = obj.input['code'] obj.request.session['openid'] = student.open_id obj.request.session.set_expiry(0) except Exception as e: obj.logger.exception(str(e)) return HttpResponseForbidden() obj.student = student else: # pragma: no cover obj.check_input('student_id') student = Student.objects.get(pk=obj.input['student_id']) obj.student = student return function(obj, *args, **kwargs)