fixed a few more tests

This commit is contained in:
Oly 2017-09-13 14:28:16 +01:00
parent c16e9079ca
commit 528ad8cade
7 changed files with 55 additions and 29 deletions

View File

@ -1,6 +1,5 @@
from rest_framework import serializers from rest_framework import serializers
from mhackspace.rfid.models import Device
from mhackspace.rfid.models import Device, DeviceAuth
class Task(object): class Task(object):
@ -11,6 +10,7 @@ class Task(object):
class DeviceSerializer(serializers.ModelSerializer): class DeviceSerializer(serializers.ModelSerializer):
added_date = serializers.DateTimeField(format='iso-8601') added_date = serializers.DateTimeField(format='iso-8601')
class Meta: class Meta:
model = Device model = Device
fields = ('__all__') fields = ('__all__')
@ -22,13 +22,3 @@ class AuthSerializer(serializers.Serializer):
# device = serializers.UUIDField(format='hex_verbose') # device = serializers.UUIDField(format='hex_verbose')
device = serializers.CharField(max_length=255) 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', )

View File

@ -28,11 +28,11 @@ class AuthUserWithDeviceViewSet(viewsets.ViewSet):
def post(self, request, format=None): def post(self, request, format=None):
try: try:
rfid = Rfid.objects.get(code=request.data.get('rfid')) 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) deviceAuth = DeviceAuth.objects.get(device=device.identifier, rfid=rfid.id)
except ObjectDoesNotExist: except ObjectDoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND) return Response(status=status.HTTP_404_NOT_FOUND)
except ValidationError: except ValidationError as e:
# except: # except:
# logger.exception("An error occurred") # logger.exception("An error occurred")
return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR) return Response(status=status.HTTP_500_INTERNAL_SERVER_ERROR)

View File

@ -12,6 +12,7 @@ logger = logging.getLogger(__name__)
PROVIDER_ID = {'gocardless':1, 'braintree': 2} PROVIDER_ID = {'gocardless':1, 'braintree': 2}
PROVIDER_NAME = {1: 'gocardless', 2: 'braintree'} PROVIDER_NAME = {1: 'gocardless', 2: 'braintree'}
def select_provider(type): def select_provider(type):
if type == "gocardless": return gocardless_provider() if type == "gocardless": return gocardless_provider()
if type == "braintree": return braintree_provider() if type == "braintree": return braintree_provider()
@ -20,6 +21,7 @@ def select_provider(type):
log.exception('[scaffold] - "No Provider for ' + type) log.exception('[scaffold] - "No Provider for ' + type)
assert 0, "No Provider for " + type assert 0, "No Provider for " + type
class gocardless_provider: class gocardless_provider:
""" """
gocardless test account details 20-00-00, 55779911 gocardless test account details 20-00-00, 55779911

View File

@ -6,12 +6,13 @@ from mock import patch, Mock
from mhackspace.subscriptions.payments import payment, gocardless_provider, braintree_provider from mhackspace.subscriptions.payments import payment, gocardless_provider, braintree_provider
class TestPaymentGatewaysGocardless(TestCase): class TestPaymentGatewaysGocardless(TestCase):
def setUp(self): def setUp(self):
self.auth_gocardless() 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): def auth_gocardless(self, mock_request):
# mock braintree initalisation request # mock braintree initalisation request
mock_request.return_value = Mock(ok=True) mock_request.return_value = Mock(ok=True)
@ -27,7 +28,7 @@ class TestPaymentGatewaysGocardless(TestCase):
return self.provider #self.provider return self.provider #self.provider
@skip("Need to implement") @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): def test_unsubscribe(self, mock_subscription):
mock_subscription.return_value = Mock(success='success') mock_subscription.return_value = Mock(success='success')
mock_subscription.cancel.return_value = Mock( mock_subscription.cancel.return_value = Mock(
@ -43,8 +44,8 @@ class TestPaymentGatewaysGocardless(TestCase):
self.assertEqual(result.get('reference'), '01') self.assertEqual(result.get('reference'), '01')
self.assertEqual(result.get('success'), 'success') self.assertEqual(result.get('success'), 'success')
@patch('mhackspace.subscriptions.payments.gocardless.client.subscription', autospec=True) @patch('mhackspace.subscriptions.payments.gocardless_pro.client.subscription', autospec=True)
@patch('mhackspace.subscriptions.payments.gocardless.client.confirm_resource', autospec=True) @patch('mhackspace.subscriptions.payments.gocardless_pro.client.confirm_resource', autospec=True)
def test_confirm_subscription_callback(self, mock_confirm, mock_subscription): def test_confirm_subscription_callback(self, mock_confirm, mock_subscription):
mock_confirm.return_value = Mock(success='success') mock_confirm.return_value = Mock(success='success')
mock_subscription.return_value = Mock( mock_subscription.return_value = Mock(

View File

@ -1,11 +1,14 @@
from django.contrib.messages.storage.fallback import FallbackStorage from django.contrib.messages.storage.fallback import FallbackStorage
# from django.contrib.auth.models import Group # from django.contrib.auth.models import Group
from django.test import Client
from django.test import RequestFactory from django.test import RequestFactory
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from test_plus.test import TestCase from test_plus.test import TestCase
from mock import patch, Mock from mock import patch, Mock
from mhackspace.users.models import Membership 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 ( from ..views import (
MembershipCancelView, MembershipCancelView,
@ -20,7 +23,12 @@ class BaseUserTestCase(TestCase):
def setUp(self): def setUp(self):
self.user = self.make_user() self.user = self.make_user()
self.user.save()
self.factory = RequestFactory() self.factory = RequestFactory()
self.client = Client()
self.client.login(
username=self.user.username,
password=self.user.password)
class TestSubscriptionSuccessRedirectView(BaseUserTestCase): class TestSubscriptionSuccessRedirectView(BaseUserTestCase):
@ -36,22 +44,30 @@ class TestSubscriptionSuccessRedirectView(BaseUserTestCase):
'success': True 'success': True
} }
request = self.factory.post( response = self.client.post(
reverse('join_hackspace_success', kwargs={'provider': 'gocardless'}), { reverse('join_hackspace_success', kwargs={'provider': 'gocardless'}), {
'resource_id': 'R01', 'resource_id': 'R01',
'resource_type': 'subscription', 'resource_type': 'subscription',
'resource_url': 'https://sandbox.gocardless.com', 'resource_url': 'https://sandbox.gocardless.com',
'signature': 'test_signature' 'signature': 'test_signature'
} },
follow=True
) )
setattr(request, 'session', 'session') # print('=============================')
messages = FallbackStorage(request) # setattr(request, 'session', 'session')
setattr(request, '_messages', messages) # messages = FallbackStorage(request)
request.user = self.user # setattr(request, '_messages', messages)
# request.user = user1
view = MembershipJoinSuccessView() # view = MembershipJoinSuccessView()
view.request = request # 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( self.assertEqual(
view.get_redirect_url(provider ='gocardless'), view.get_redirect_url(provider ='gocardless'),
reverse('users:detail', kwargs={'username': self.user.username}) reverse('users:detail', kwargs={'username': self.user.username})
@ -60,7 +76,7 @@ class TestSubscriptionSuccessRedirectView(BaseUserTestCase):
members = Membership.objects.all() members = Membership.objects.all()
self.assertEqual(members.count(), 1) 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): def test_failure_redirect_url(self, mock_obj):
# Instantiate the view directly. Never do this outside a test! # Instantiate the view directly. Never do this outside a test!
# Generate a fake request # Generate a fake request

View File

@ -99,9 +99,10 @@ class MembershipJoinSuccessView(LoginRequiredMixin, RedirectView):
def get_redirect_url(self, *args, **kwargs): def get_redirect_url(self, *args, **kwargs):
payment_provider = 'gocardless' payment_provider = 'gocardless'
provider = select_provider(payment_provider) provider = select_provider(payment_provider)
print(self.request.user)
membership = Membership.objects.get(user=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( result = provider.confirm_subscription(
membership=membership, membership=membership,
session=self.request.session.session_key, session=self.request.session.session_key,

View File

@ -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 = [
]