Esempio n. 1
0
 def test_get_buyer_with_etag(self, slumber):
     slumber.generic.buyer.get.return_value = self.buyer_data
     buyer = client.get_buyer(self.uuid)
     eq_(buyer.get('uuid'), self.uuid)
     slumber.generic.buyer.get.side_effect = ResourceNotModified()
     buyer2 = client.get_buyer(self.uuid)
     eq_(buyer.get('etag'), buyer2.get('etag'))
Esempio n. 2
0
 def test_get_buyer_with_etag(self, slumber):
     slumber.generic.buyer.get_object_or_404.return_value = self.buyer_data
     buyer = client.get_buyer(self.uuid)
     eq_(buyer.get('uuid'), self.uuid)
     slumber.generic.buyer.get_object_or_404.side_effect = (
         ResourceNotModified())
     buyer2 = client.get_buyer(self.uuid)
     eq_(buyer.get('etag'), buyer2.get('etag'))
Esempio n. 3
0
    def test_reset_pin_flag_set(self):
        # set
        res = client.set_needs_pin_reset(self.uuid)
        eq_(res, {})
        buyer = client.get_buyer(self.uuid)
        assert buyer['needs_pin_reset']

        # unset
        res = client.set_needs_pin_reset(self.uuid, False)
        eq_(res, {})
        buyer = client.get_buyer(self.uuid)
        assert not buyer['needs_pin_reset']
Esempio n. 4
0
 def test_get_buyer(self, slumber):
     slumber.generic.buyer.get.return_value = self.buyer_data
     buyer = client.get_buyer(self.uuid)
     eq_(buyer.get('uuid'), self.uuid)
     assert buyer.get('pin')
     assert buyer.get('id')
     assert buyer.get('etag')
Esempio n. 5
0
    def test_reset_pin_flag_set(self):
        # set
        client.set_new_pin(self.uuid, "1234")
        res = client.set_needs_pin_reset(self.uuid)
        eq_(res, {})
        buyer = client.get_buyer(self.uuid)
        assert buyer["needs_pin_reset"]
        assert not buyer["new_pin"]

        # unset
        client.set_new_pin(self.uuid, "1234")
        res = client.set_needs_pin_reset(self.uuid, False)
        eq_(res, {})
        buyer = client.get_buyer(self.uuid)
        assert not buyer["needs_pin_reset"]
        assert not buyer["new_pin"]
Esempio n. 6
0
def set_user(request, email, verified=None):
    if not check_whitelist(email):
        log.warning('Whitelist denied access to: {0}'.format(email))
        raise PermissionDenied

    uuid = get_uuid(email)
    new_uuid = request.session.get('uuid') != uuid
    request.session['uuid'] = uuid
    # This is only used by navigator.id.watch()
    request.session['logged_in_user'] = email
    # Leave previous was_verified behaviour for Persona.
    if verified is not None:
        request.session['was_reverified'] = verified

    buyer = client.get_buyer(uuid)
    if not buyer:
        buyer = client.create_buyer(uuid, email)
        log.info('Created buyer {uuid} for email {email}'
                 .format(uuid=uuid, email=email))

    log.info('Buyer uuid is {uuid} for email {email}'
             .format(uuid=uuid, email=email))

    super_powers = email in settings.USERS_WITH_SUPER_POWERS
    log.info('user has super powers? {user}: {powers}'
             .format(user=email, powers=super_powers))
    request.session['super_powers'] = super_powers

    return update_session(request, uuid, new_uuid, email, buyer=buyer)
Esempio n. 7
0
 def test_get_buyer(self, slumber):
     slumber.generic.buyer.get_object_or_404.return_value = self.buyer_data
     buyer = client.get_buyer(self.uuid)
     eq_(buyer.get('uuid'), self.uuid)
     assert buyer.get('pin')
     assert buyer.get('resource_pk')
     assert buyer.get('etag')
Esempio n. 8
0
 def clean_pin(self, *args, **kwargs):
     pin = self.cleaned_data['pin']
     self._ensure_user_reauthenticated()
     buyer = client.get_buyer(self.uuid)
     if buyer and self.client_response_is_valid(buyer):
         self.buyer = buyer
     return pin
Esempio n. 9
0
 def clean_pin(self, *args, **kwargs):
     pin = self.cleaned_data['pin']
     self._ensure_user_reauthenticated()
     buyer = client.get_buyer(self.uuid)
     if buyer and self.client_response_is_valid(buyer):
         self.buyer = buyer
     return pin
Esempio n. 10
0
    def test_reset_pin_flag_set(self):
        # set
        client.set_new_pin(self.uuid, '1234')
        res = client.set_needs_pin_reset(self.uuid)
        eq_(res, {})
        buyer = client.get_buyer(self.uuid)
        assert buyer['needs_pin_reset']
        assert not buyer['new_pin']

        # unset
        client.set_new_pin(self.uuid, '1234')
        res = client.set_needs_pin_reset(self.uuid, False)
        eq_(res, {})
        buyer = client.get_buyer(self.uuid)
        assert not buyer['needs_pin_reset']
        assert not buyer['new_pin']
Esempio n. 11
0
 def test_get_buyer(self, slumber):
     slumber.generic.buyer.get_object_or_404.return_value = self.buyer_data
     buyer = client.get_buyer(self.uuid)
     eq_(buyer.get('uuid'), self.uuid)
     assert buyer.get('pin')
     assert buyer.get('resource_pk')
     assert buyer.get('etag')
Esempio n. 12
0
 def retrieve(self, request):
     res = client.get_buyer(request.session['uuid'])
     if res:
         res['pin_reset_started'] = request.session.get(
             'was_reverified', False)
     serial = PinSerializer(res or None)
     return response.Response(serial.data)
Esempio n. 13
0
 def clean_pin(self, *args, **kwargs):
     pin = self.cleaned_data['pin']
     buyer = client.get_buyer(self.uuid)
     if buyer and self.handle_client_errors(buyer):
         self.buyer = buyer
         if buyer.get('pin'):
             raise forms.ValidationError(_('Buyer already has a PIN.'))
     return pin
Esempio n. 14
0
def set_user(request, email):
    uuid = get_uuid(email)
    request.session['uuid'] = uuid
    buyer = client.get_buyer(uuid)
    set_user_has_pin(request, buyer.get('pin', False))
    set_user_has_confirmed_pin(request, buyer.get('pin_confirmed', False))
    set_user_reset_pin(request, buyer.get('needs_pin_reset', False))
    set_user_has_new_pin(request, buyer.get('new_pin', False))
Esempio n. 15
0
 def test_change_pin_with_existing_pin(self):
     uuid = "change_pin_with_existing_pin"
     pin = "5432"
     new_pin = pin[::-1]
     client.create_buyer(uuid, pin)
     client.change_pin(uuid, new_pin)
     buyer = client.get_buyer(uuid)
     assert buyer.get("pin")
     assert client.verify_pin(uuid, new_pin)
Esempio n. 16
0
 def test_change_pin_to_remove_exising_pin(self):
     uuid = "change_pin_to_remove_exising_pin"
     pin = "5467"
     new_pin = None
     buyer = client.create_buyer(uuid, pin)
     assert buyer.get("pin")
     client.change_pin(uuid, new_pin)
     buyer = client.get_buyer(uuid)
     assert not buyer.get("pin")
Esempio n. 17
0
 def check(self, request):
     form = VerifyPinForm(uuid=request.session['uuid'], data=request.DATA)
     try:
         status = 200 if form.is_valid() else 400
     except ObjectDoesNotExist:
         raise Http404
     res = client.get_buyer(request.session['uuid'])
     serial = PinSerializer(res)
     return response.Response(serial.data, status=status)
Esempio n. 18
0
File: api.py Progetto: lissyx/webpay
 def check(self, request):
     form = VerifyPinForm(uuid=request.session['uuid'], data=request.DATA)
     try:
         status = 200 if form.is_valid() else 400
     except ObjectDoesNotExist:
         raise Http404
     res = client.get_buyer(request.session['uuid'])
     serial = PinSerializer(res)
     return response.Response(serial.data, status=status)
Esempio n. 19
0
 def test_change_pin_without_existing_pin(self):
     uuid = "change_pin_without_existing_pin"
     new_pin = "1234"
     buyer = client.create_buyer(uuid)
     assert not buyer.get("pin")
     client.change_pin(uuid, new_pin)
     buyer = client.get_buyer(uuid)
     assert buyer.get("pin")
     assert client.verify_pin(uuid, new_pin)
Esempio n. 20
0
 def test_change_pin_with_existing_pin(self):
     uuid = 'change_pin_with_existing_pin'
     pin = '5432'
     new_pin = pin[::-1]
     client.create_buyer(uuid, pin)
     client.change_pin(uuid, new_pin)
     buyer = client.get_buyer(uuid)
     assert buyer.get('pin')
     assert client.verify_pin(uuid, new_pin)
Esempio n. 21
0
 def test_change_pin_without_existing_pin(self):
     uuid = 'change_pin_without_existing_pin'
     new_pin = '1234'
     buyer = client.create_buyer(uuid)
     assert not buyer.get('pin')
     client.change_pin(uuid, new_pin)
     buyer = client.get_buyer(uuid)
     assert buyer.get('pin')
     assert client.verify_pin(uuid, new_pin)
Esempio n. 22
0
 def clean_pin(self, *args, **kwargs):
     pin = self.cleaned_data['pin']
     buyer = client.get_buyer(self.uuid)
     if buyer and self.handle_client_errors(buyer):
         self.buyer_exists = True
         if buyer.get('pin'):
             raise forms.ValidationError(
                 _('You have already created a PIN.'))
     return pin
Esempio n. 23
0
 def test_change_pin_to_remove_exising_pin(self):
     uuid = 'change_pin_to_remove_exising_pin'
     pin = '5467'
     new_pin = None
     buyer = client.create_buyer(uuid, pin)
     assert buyer.get('pin')
     client.change_pin(uuid, new_pin)
     buyer = client.get_buyer(uuid)
     assert not buyer.get('pin')
Esempio n. 24
0
 def clean_pin(self, *args, **kwargs):
     pin = self.cleaned_data['pin']
     buyer = client.get_buyer(self.uuid)
     if buyer and self.handle_client_errors(buyer):
         self.buyer_exists = True
         if buyer.get('pin'):
             raise forms.ValidationError(
                 _('You have already created a PIN.')
             )
     return pin
Esempio n. 25
0
def update_session(request, uuid):
    buyer = client.get_buyer(uuid)
    set_user_has_pin(request, buyer.get('pin', False))
    set_user_has_confirmed_pin(request, buyer.get('pin_confirmed', False))
    set_user_reset_pin(request, buyer.get('needs_pin_reset', False))
    set_user_has_new_pin(request, buyer.get('new_pin', False))
    request.session['uuid_pin_was_locked'] = buyer.get('pin_was_locked_out',
                                                       False)
    request.session['uuid_pin_is_locked'] = buyer.get('pin_is_locked_out',
                                                      False)
    return uuid
Esempio n. 26
0
def set_user(request, email):
    uuid = get_uuid(email)
    request.session['uuid'] = uuid
    # This is only used by navigator.id.watch()
    request.session['logged_in_user'] = email
    buyer = client.get_buyer(uuid)
    set_user_has_pin(request, buyer.get('pin', False))
    set_user_has_confirmed_pin(request, buyer.get('pin_confirmed', False))
    set_user_reset_pin(request, buyer.get('needs_pin_reset', False))
    set_user_has_new_pin(request, buyer.get('new_pin', False))
    return uuid
Esempio n. 27
0
def update_session(request, uuid):
    buyer = client.get_buyer(uuid)
    set_user_has_pin(request, buyer.get('pin', False))
    set_user_has_confirmed_pin(request, buyer.get('pin_confirmed', False))
    set_user_reset_pin(request, buyer.get('needs_pin_reset', False))
    set_user_has_new_pin(request, buyer.get('new_pin', False))
    request.session['uuid_pin_was_locked'] = buyer.get('pin_was_locked_out',
                                                       False)
    request.session['uuid_pin_is_locked'] = buyer.get('pin_is_locked_out',
                                                      False)
    return uuid
Esempio n. 28
0
 def clean_pin(self, *args, **kwargs):
     pin = self.cleaned_data['pin']
     buyer = client.get_buyer(self.uuid)
     if buyer and self.client_response_is_valid(buyer):
         try:
             self.buyer_etag = buyer['etag']
         except KeyError:
             self.buyer_etag = ''
         if buyer.get('pin'):
             self.add_error_code(msg.PIN_ALREADY_CREATED)
             raise forms.ValidationError(msg.PIN_ALREADY_CREATED)
     return pin
Esempio n. 29
0
 def clean_pin(self, *args, **kwargs):
     pin = self.cleaned_data['pin']
     buyer = client.get_buyer(self.uuid)
     if buyer and self.client_response_is_valid(buyer):
         try:
             self.buyer_etag = buyer['etag']
         except KeyError:
             self.buyer_etag = ''
         if buyer.get('pin'):
             self.add_error_code(msg.PIN_ALREADY_CREATED)
             raise forms.ValidationError(msg.PIN_ALREADY_CREATED)
     return pin
Esempio n. 30
0
 def clean_pin(self, *args, **kwargs):
     pin = self.cleaned_data['pin']
     buyer = client.get_buyer(self.uuid)
     if buyer and self.handle_client_errors(buyer):
         self.buyer_exists = True
         try:
             self.buyer_etag = buyer['etag']
         except KeyError:
             self.buyer_etag = ''
         if buyer.get('pin'):
             self.add_error_code('PIN_ALREADY_CREATED')
             raise forms.ValidationError(
                 _('You have already created a PIN.'))
     return pin
Esempio n. 31
0
 def clean_pin(self, *args, **kwargs):
     pin = self.cleaned_data['pin']
     buyer = client.get_buyer(self.uuid)
     if buyer and self.handle_client_errors(buyer):
         try:
             self.buyer_etag = buyer['etag']
         except KeyError:
             self.buyer_etag = ''
         if buyer.get('pin'):
             self.add_error_code('PIN_ALREADY_CREATED')
             raise forms.ValidationError(
                 _('You have already created a PIN.')
             )
     return pin
Esempio n. 32
0
def set_user(request, email):
    if not check_whitelist(email):
        log.warning('Whitelist denied access to: {0}'.format(email))
        raise PermissionDenied

    uuid = get_uuid(email)
    new_uuid = request.session.get('uuid') != uuid
    request.session['uuid'] = uuid
    # This is only used by navigator.id.watch()
    request.session['logged_in_user'] = email

    buyer = client.get_buyer(uuid)
    if not buyer:
        buyer = client.create_buyer(uuid, email)

    return update_session(request, uuid, new_uuid, email, buyer=buyer)
Esempio n. 33
0
def update_session(request, uuid, new_uuid, email, buyer=None):
    buyer = buyer or client.get_buyer(uuid)

    # Some buyers may not have email set
    # We must update them to store their email
    # If all buyers have emails set then this can
    # be safely removed
    if not buyer.get("email", None):
        client.update_buyer(uuid, email=email)

    set_user_has_pin(request, buyer.get("pin", False))
    set_user_has_confirmed_pin(request, buyer.get("pin_confirmed", False))
    set_user_reset_pin(request, buyer.get("needs_pin_reset", False))
    set_user_has_new_pin(request, buyer.get("new_pin", False))
    request.session["uuid_pin_was_locked"] = buyer.get("pin_was_locked_out", False)
    request.session["uuid_pin_is_locked"] = buyer.get("pin_is_locked_out", False)
    if new_uuid:
        request.session["last_pin_success"] = None
    return uuid
Esempio n. 34
0
def set_user(request, email, verified=None):
    if not check_whitelist(email):
        log.warning("Whitelist denied access to: {0}".format(email))
        raise PermissionDenied

    uuid = get_uuid(email)
    new_uuid = request.session.get("uuid") != uuid
    request.session["uuid"] = uuid
    # This is only used by navigator.id.watch()
    request.session["logged_in_user"] = email
    # Leave previous was_verified behaviour for Persona.
    if verified is not None:
        request.session["was_reverified"] = verified

    buyer = client.get_buyer(uuid)
    if not buyer:
        buyer = client.create_buyer(uuid, email)
        log.info("Created buyer {uuid} for email {email}".format(uuid=uuid, email=email))

    log.info("Buyer uuid is {uuid} for email {email}".format(uuid=uuid, email=email))
    return update_session(request, uuid, new_uuid, email, buyer=buyer)
Esempio n. 35
0
def update_session(request, uuid, new_uuid, email, buyer=None):
    buyer = buyer or client.get_buyer(uuid)

    # Some buyers may not have email set
    # We must update them to store their email
    # If all buyers have emails set then this can
    # be safely removed
    if not buyer.get('email', None):
        client.update_buyer(uuid, email=email)

    set_user_has_pin(request, buyer.get('pin', False))
    set_user_has_confirmed_pin(request, buyer.get('pin_confirmed', False))
    set_user_reset_pin(request, buyer.get('needs_pin_reset', False))
    set_user_has_new_pin(request, buyer.get('new_pin', False))
    request.session['uuid_pin_was_locked'] = buyer.get('pin_was_locked_out',
                                                       False)
    request.session['uuid_pin_is_locked'] = buyer.get('pin_is_locked_out',
                                                      False)
    if new_uuid:
        request.session['last_pin_success'] = None
    return uuid
Esempio n. 36
0
 def test_non_existent_get_buyer(self, slumber):
     slumber.generic.buyer.get_object_or_404.side_effect = HttpClientError(
         response=self.create_error_response())
     buyer = client.get_buyer('something-that-does-not-exist')
     assert 'errors' in buyer
Esempio n. 37
0
 def clean_pin(self, *args, **kwargs):
     pin = self.cleaned_data['pin']
     buyer = client.get_buyer(self.uuid)
     if buyer and self.handle_client_errors(buyer):
         self.buyer = buyer
     return pin
Esempio n. 38
0
 def test_invalid_json_response(self, fake_log, slumber):
     slumber.generic.buyer.get_object_or_404.side_effect = HttpClientError(
         response=self.create_error_response(content='<not valid json>'))
     with self.assertRaises(ValueError):
         client.get_buyer('catastrophic-non-json-error')
     assert fake_log.error.called, 'expected response to be logged'
Esempio n. 39
0
 def test_non_existent_get_buyer(self):
     buyer = client.get_buyer('something that does not exist')
     assert not buyer
Esempio n. 40
0
 def clean_old_pin(self, *args, **kwargs):
     old_pin = self.cleaned_data['old_pin']
     if self.handle_client_errors(client.verify_pin(self.uuid, old_pin)):
         self.buyer = self.handle_client_errors(client.get_buyer(self.uuid))
         return old_pin
     raise forms.ValidationError(_('Incorrect PIN'))
Esempio n. 41
0
 def test_get_buyer(self):
     buyer = client.get_buyer(self.uuid)
     eq_(buyer.get('uuid'), self.uuid)
     assert buyer.get('pin')
     assert buyer.get('id')
Esempio n. 42
0
 def test_invalid_json_response(self, fake_log, slumber):
     slumber.generic.buyer.get_object_or_404.side_effect = HttpClientError(
         response=self.create_error_response(content='<not valid json>'))
     with self.assertRaises(ValueError):
         client.get_buyer('catastrophic-non-json-error')
     assert fake_log.error.called, 'expected response to be logged'
Esempio n. 43
0
 def test_non_existent_get_buyer(self, slumber):
     slumber.generic.buyer.get_object_or_404.side_effect = HttpClientError(
         response=self.create_error_response())
     buyer = client.get_buyer('something-that-does-not-exist')
     assert 'errors' in buyer
Esempio n. 44
0
File: api.py Progetto: lissyx/webpay
 def retrieve(self, request):
     res = client.get_buyer(request.session['uuid'])
     if not res:
         raise Http404
     serial = PinSerializer(res)
     return response.Response(serial.data)
Esempio n. 45
0
 def retrieve(self, request):
     res = client.get_buyer(request.session['uuid'])
     serial = PinSerializer(res or None)
     return response.Response(serial.data)