예제 #1
0
 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'], '存在重名活动,请利用菜单抢票')
예제 #2
0
 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'], '您要找的活动并不存在哦!')
예제 #3
0
 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'], '您没能抢到票,回去再练二十年手速吧!')
예제 #4
0
 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)