diff --git a/mhackspace/rfid/serializers.py b/mhackspace/rfid/serializers.py index 1417a9f..9f718c6 100644 --- a/mhackspace/rfid/serializers.py +++ b/mhackspace/rfid/serializers.py @@ -1,6 +1,5 @@ from rest_framework import serializers - -from mhackspace.rfid.models import Device, DeviceAuth +from mhackspace.rfid.models import Device class Task(object): @@ -11,6 +10,7 @@ class Task(object): class DeviceSerializer(serializers.ModelSerializer): added_date = serializers.DateTimeField(format='iso-8601') + class Meta: model = Device fields = ('__all__') @@ -22,13 +22,3 @@ class AuthSerializer(serializers.Serializer): # device = serializers.UUIDField(format='hex_verbose') device = serializers.CharField(max_length=255) - # def create(self, validated_data): - # return Task(id=None, **validated_data) - - # def update(self, instance, validated_data): - # for field, value in validated_data.items(): - # setattr(instance, field, value) - # return instance - - # class Meta: - # fields = ('name', ) diff --git a/mhackspace/rfid/views.py b/mhackspace/rfid/views.py index 66f6b05..30eb8cd 100644 --- a/mhackspace/rfid/views.py +++ b/mhackspace/rfid/views.py @@ -28,11 +28,11 @@ class AuthUserWithDeviceViewSet(viewsets.ViewSet): def post(self, request, format=None): try: rfid = Rfid.objects.get(code=request.data.get('rfid')) - # device = Device.objects.get(identifier=request.data.get('device')) + device = Device.objects.get(identifier=request.data.get('device')) deviceAuth = DeviceAuth.objects.get(device=device.identifier, rfid=rfid.id) except ObjectDoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) - except ValidationError: + except ValidationError as e: # except: # logger.exception("An error occurred") return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR) diff --git a/mhackspace/subscriptions/payments.py b/mhackspace/subscriptions/payments.py index 5c4c864..b17235c 100644 --- a/mhackspace/subscriptions/payments.py +++ b/mhackspace/subscriptions/payments.py @@ -12,6 +12,7 @@ logger = logging.getLogger(__name__) PROVIDER_ID = {'gocardless':1, 'braintree': 2} PROVIDER_NAME = {1: 'gocardless', 2: 'braintree'} + def select_provider(type): if type == "gocardless": return gocardless_provider() if type == "braintree": return braintree_provider() @@ -20,6 +21,7 @@ def select_provider(type): log.exception('[scaffold] - "No Provider for ' + type) assert 0, "No Provider for " + type + class gocardless_provider: """ gocardless test account details 20-00-00, 55779911 diff --git a/mhackspace/subscriptions/tests/test_payment_gateways.py b/mhackspace/subscriptions/tests/test_payment_gateways.py index 62200d0..7d8c396 100644 --- a/mhackspace/subscriptions/tests/test_payment_gateways.py +++ b/mhackspace/subscriptions/tests/test_payment_gateways.py @@ -6,12 +6,13 @@ from mock import patch, Mock from mhackspace.subscriptions.payments import payment, gocardless_provider, braintree_provider + class TestPaymentGatewaysGocardless(TestCase): def setUp(self): self.auth_gocardless() - @patch('mhackspace.subscriptions.payments.gocardless.request.requests.get', autospec=True) + @patch('mhackspace.subscriptions.payments.gocardless_pro.request.requests.get', autospec=True) def auth_gocardless(self, mock_request): # mock braintree initalisation request mock_request.return_value = Mock(ok=True) @@ -27,7 +28,7 @@ class TestPaymentGatewaysGocardless(TestCase): return self.provider #self.provider @skip("Need to implement") - @patch('mhackspace.subscriptions.payments.gocardless.client.subscription', autospec=True) + @patch('mhackspace.subscriptions.payments.gocardless_pro.client.subscription', autospec=True) def test_unsubscribe(self, mock_subscription): mock_subscription.return_value = Mock(success='success') mock_subscription.cancel.return_value = Mock( @@ -43,8 +44,8 @@ class TestPaymentGatewaysGocardless(TestCase): self.assertEqual(result.get('reference'), '01') self.assertEqual(result.get('success'), 'success') - @patch('mhackspace.subscriptions.payments.gocardless.client.subscription', autospec=True) - @patch('mhackspace.subscriptions.payments.gocardless.client.confirm_resource', autospec=True) + @patch('mhackspace.subscriptions.payments.gocardless_pro.client.subscription', autospec=True) + @patch('mhackspace.subscriptions.payments.gocardless_pro.client.confirm_resource', autospec=True) def test_confirm_subscription_callback(self, mock_confirm, mock_subscription): mock_confirm.return_value = Mock(success='success') mock_subscription.return_value = Mock( diff --git a/mhackspace/subscriptions/tests/test_views.py b/mhackspace/subscriptions/tests/test_views.py index e611d96..18bdef6 100644 --- a/mhackspace/subscriptions/tests/test_views.py +++ b/mhackspace/subscriptions/tests/test_views.py @@ -1,11 +1,14 @@ from django.contrib.messages.storage.fallback import FallbackStorage # from django.contrib.auth.models import Group +from django.test import Client from django.test import RequestFactory from django.core.urlresolvers import reverse from test_plus.test import TestCase from mock import patch, Mock from mhackspace.users.models import Membership -from mhackspace.users.models import Membership +from mhackspace.users.models import User + +from mhackspace.subscriptions.payments import payment, gocardless_provider, braintree_provider from ..views import ( MembershipCancelView, @@ -20,7 +23,12 @@ class BaseUserTestCase(TestCase): def setUp(self): self.user = self.make_user() + self.user.save() self.factory = RequestFactory() + self.client = Client() + self.client.login( + username=self.user.username, + password=self.user.password) class TestSubscriptionSuccessRedirectView(BaseUserTestCase): @@ -36,22 +44,30 @@ class TestSubscriptionSuccessRedirectView(BaseUserTestCase): 'success': True } - request = self.factory.post( + response = self.client.post( reverse('join_hackspace_success', kwargs={'provider': 'gocardless'}), { 'resource_id': 'R01', 'resource_type': 'subscription', 'resource_url': 'https://sandbox.gocardless.com', 'signature': 'test_signature' - } + }, + follow=True ) - setattr(request, 'session', 'session') - messages = FallbackStorage(request) - setattr(request, '_messages', messages) - request.user = self.user + # print('=============================') + # setattr(request, 'session', 'session') + # messages = FallbackStorage(request) + # setattr(request, '_messages', messages) + # request.user = user1 - view = MembershipJoinSuccessView() - view.request = request + # view = MembershipJoinSuccessView() + # view.request = request + # print(self.user) + self.assertRedirects( + response, + expected_url=reverse('users:detail', kwargs={'username': self.user.username}), + status_code=302, + target_status_code=200) self.assertEqual( view.get_redirect_url(provider ='gocardless'), reverse('users:detail', kwargs={'username': self.user.username}) @@ -60,7 +76,7 @@ class TestSubscriptionSuccessRedirectView(BaseUserTestCase): members = Membership.objects.all() self.assertEqual(members.count(), 1) - @patch('mhackspace.subscriptions.payments.gocardless.client.subscription', autospec=True) + @patch('mhackspace.subscriptions.payments.gocardless_pro.client.subscription', autospec=True) def test_failure_redirect_url(self, mock_obj): # Instantiate the view directly. Never do this outside a test! # Generate a fake request diff --git a/mhackspace/subscriptions/views.py b/mhackspace/subscriptions/views.py index 4529621..2f27080 100644 --- a/mhackspace/subscriptions/views.py +++ b/mhackspace/subscriptions/views.py @@ -99,9 +99,10 @@ class MembershipJoinSuccessView(LoginRequiredMixin, RedirectView): def get_redirect_url(self, *args, **kwargs): payment_provider = 'gocardless' provider = select_provider(payment_provider) + print(self.request.user) membership = Membership.objects.get(user=self.request.user) - name="Membership your membership id is MH%s" % membership.reference + name = "Membership your membership id is MH%s" % membership.reference result = provider.confirm_subscription( membership=membership, session=self.request.session.session_key, diff --git a/mhackspace/users/migrations/0005_merge_20170913_0740.py b/mhackspace/users/migrations/0005_merge_20170913_0740.py new file mode 100644 index 0000000..f09943e --- /dev/null +++ b/mhackspace/users/migrations/0005_merge_20170913_0740.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.4 on 2017-09-13 07:40 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0004_auto_20170813_1557'), + ('users', '0004_rfid'), + ] + + operations = [ + ]