Skip to content
This repository has been archived by the owner on Jan 25, 2018. It is now read-only.

Commit

Permalink
start of lib/pay (bug 795127)
Browse files Browse the repository at this point in the history
  • Loading branch information
Andy McKay committed Oct 3, 2012
1 parent ad04ff2 commit 85cd006
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 5 deletions.
Empty file added lib/pay/samples.py
Empty file.
20 changes: 17 additions & 3 deletions lib/pay/tests.py
@@ -1,10 +1,24 @@
import json

from django import test
from django.core.urlresolvers import reverse

import jwt
from nose.tools import eq_

from moz_inapp_pay.tests import JWTtester

class TestVerify(JWTtester):

def setUp(self):
self.url = '/en-US' + reverse('verify')

def test_get(self):
eq_(self.client.get(self.url).status_code, 405)

class TestVerify(test.TestCase):
def test_post_bad(self):
eq_(self.client.post(self.url).status_code, 400)

def hello(self):
eq_(self.client.get(reverse('verify')).status_code, 200)
def test_post_some_jwt(self):
payload = self.request()
eq_(self.client.post(self.url, payload).status_code, 200)
30 changes: 29 additions & 1 deletion lib/pay/views.py
@@ -1,5 +1,33 @@
from django import http
from django.conf import settings
from django.views.decorators.http import require_POST

import commonware.log

from moz_inapp_pay.exc import InvalidJWT, RequestExpired
from moz_inapp_pay.verify import verify_jwt
from session_csrf import anonymous_csrf_exempt

log = commonware.log.getLogger('w.pay')


def error(msg, request):
log.error(msg, exc_info=True)
if settings.DEBUG:
raise
else:
return http.HttpResponseBadRequest()

@anonymous_csrf_exempt
@require_POST
def verify(request):
return http.HttpResponse('Hello world.')
data = request.body
try:
res = verify_jwt(data, settings.KEY, settings.SECRET)
except (InvalidJWT, RequestExpired):
return error(u'Failed to parse JWT', error)
if not res:
print res
return http.HttpResponseBadRequest()

return http.HttpResponse('ok')
10 changes: 9 additions & 1 deletion webpay/settings/base.py
Expand Up @@ -13,6 +13,7 @@
# Application base, containing global templates.
'%s.base' % PROJECT_MODULE,
'lib.pay',
'tower'
]

LOCALE_PATHS = (
Expand Down Expand Up @@ -63,7 +64,7 @@
LOGGING = dict(loggers=dict(playdoh = {'level': logging.DEBUG}))

MIDDLEWARE_CLASSES = (
#'funfactory.middleware.LocaleURLMiddleware',
'funfactory.middleware.LocaleURLMiddleware',
'multidb.middleware.PinningRouterMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
Expand All @@ -74,3 +75,10 @@
'mobility.middleware.DetectMobileMiddleware',
'mobility.middleware.XMobileMiddleware',
)

# This is the key and secret for the JWT that is going to come in.
KEY = ''
SECRET = ''

DEBUG = True
DEBUG_PROPAGATE_EXCEPTIONS = False

0 comments on commit 85cd006

Please sign in to comment.