Example #1
0
    def test_max_concurrent_setting(self):
        with self.settings(SHORTENER_MAX_CONCURRENT=2):
            shortener.create(self.ronald, "http://devget.net/")
            shortener.create(self.ronald, "http://devget.net/")
            with self.assertRaisesMessage(PermissionError, 'concurrent quota exceeded'):
                shortener.create(self.ronald, "http://devget.net/")

            # Ensure we can override with UrlProfile
            self.urlProfile.max_concurrent_urls = 3
            self.urlProfile.save()

            shortener.create(self.ronald, "http://devget.net/")
            with self.assertRaisesMessage(PermissionError, 'concurrent quota exceeded'):
                shortener.create(self.ronald, "http://devget.net/")
Example #2
0
    def post(self, request):
        try:
            request_data = self._parse_request()
            self._validate_request_data(request_data)
        except Exception as exc:
            logger.info('Invalid short url API request: {}'.format(exc))
            response_body = dict(errorMessage='Invalid JSON: {}'.format(exc),
                                 statusCode=400)
            return JsonResponse(response_body, status=400)

        # authenticate user
        try:
            user = self._authenticate_request(request_data)
        except Exception as exc:
            # log the exception text but do not pass it to the response
            logger.info('Unauthorized short url API request: {}'.format(exc))
            response_body = dict(
                errorMessage='Unauthorized: Invalid username or password',
                statusCode=401)
            return JsonResponse(response_body, status=401)

        full_url = request_data['url']['fullUrl']
        short_url_code = shortener.create(user, full_url)

        short_url = reverse('url_shortener_expand', args=(short_url_code, ))
        absolute_short_url = request.build_absolute_uri(short_url)

        logger.debug(
            'Created short URL "{}" for full URL "{}" (user "{}")'.format(
                absolute_short_url, full_url, user.username))
        response_body = dict(statusCode=200,
                             url=dict(fullUrl=full_url,
                                      shortUrl=absolute_short_url))
        return JsonResponse(response_body)
Example #3
0
 def test_lifespan_setting(self):
     with self.settings(SHORTENER_LIFESPAN=4):   # 4 seconds
         url = shortener.create(self.bob, "http://blog.devget.net/")
         self.assertEqual(shortener.expand(url), "http://blog.devget.net/")
         time.sleep(5)
         with self.assertRaisesMessage(PermissionError, 'shortlink expired'):
             self.assertEqual(shortener.expand(url), "http://blog.devget.net/")
Example #4
0
 def test_max_uses_setting(self):
     with self.settings(SHORTENER_MAX_USES=2):
         url = shortener.create(self.bob, "http://blog.devget.net/")
         self.assertEqual(shortener.expand(url), "http://blog.devget.net/")
         self.assertEqual(shortener.expand(url), "http://blog.devget.net/")
         with self.assertRaisesMessage(PermissionError, 'max usages for link reached'):
             # Ensure error is raised when we hit limit
             shortener.expand(url)
Example #5
0
    def test_max_uses_setting(self):
        with self.settings(SHORTENER_MAX_USES=0):
            url = shortener.create(self.ronald, "http://blog.devget.net/")
            with self.assertRaisesMessage(PermissionError, 'max usages for link reached'):
                # Ensure error is raised when we hit limit
                shortener.expand(url)

            # Ensure we can override with UrlProfile
            self.urlProfile.default_max_uses = 2
            self.urlProfile.save()

            url = shortener.create(self.ronald, "http://blog.devget.net/")
            self.assertEqual(shortener.expand(url), "http://blog.devget.net/")
            self.assertEqual(shortener.expand(url), "http://blog.devget.net/")
            with self.assertRaisesMessage(PermissionError, 'max usages for link reached'):
                # Ensure error is raised when we hit limit
                shortener.expand(url)
Example #6
0
    def test_lifespan_setting(self):
        with self.settings(SHORTENER_LIFESPAN=2):   # 4 seconds
            url = shortener.create(self.ronald, "http://blog.devget.net/")
            self.assertEqual(shortener.expand(url), "http://blog.devget.net/")
            time.sleep(3)
            with self.assertRaisesMessage(PermissionError, 'shortlink expired'):
                self.assertEqual(shortener.expand(url), "http://blog.devget.net/")

            # Ensure we can override with UrlProfile
            self.urlProfile.default_lifespan = 6
            self.urlProfile.save()

            url = shortener.create(self.ronald, "http://blog.devget.net/")
            self.assertEqual(shortener.expand(url), "http://blog.devget.net/")
            time.sleep(4)
            self.assertEqual(shortener.expand(url), "http://blog.devget.net/")
            time.sleep(3)
            with self.assertRaisesMessage(PermissionError, 'shortlink expired'):
                self.assertEqual(shortener.expand(url), "http://blog.devget.net/")
Example #7
0
    def test_max_urls_setting(self):
        with self.settings(SHORTENER_MAX_URLS=0):
            with self.assertRaisesMessage(PermissionError, 'url quota exceeded'):
                shortener.create(self.ronald, "http://devget.net/")

            # Ensure we can override with UrlProfile
            self.urlProfile.max_urls = 2
            self.urlProfile.save()

            shortener.create(self.ronald, "http://devget.net/")
            shortener.create(self.ronald, "http://devget.net/")
            with self.assertRaisesMessage(PermissionError, 'url quota exceeded'):
                shortener.create(self.ronald, "http://devget.net/")
Example #8
0
def sendmail(request):

    invoice_id = request.POST.get('button')
    invoice = Invoice.objects.get(pk=int(invoice_id))
    domain_url = request.build_absolute_uri().split('api/')[0]
    print(domain_url)
    stripe.api_key = settings.STRIPE_SECRET_KEY
    try:
        # Create new Checkout Session for the order
        # Other optional params include:
        # [billing_address_collection] - to display billing address details on the page
        # [customer] - if you have an existing Stripe Customer ID
        # [payment_intent_data] - lets capture the payment later
        # [customer_email] - lets you prefill the email input in the form
        # For full details see https:#stripe.com/docs/api/checkout/sessions/create

        # ?session_id={CHECKOUT_SESSION_ID} means the redirect will have the session ID set as a query param
        checkout_session = stripe.checkout.Session.create(
            # success_url=domain_url + 'success?session_id={CHECKOUT_SESSION_ID}',
            success_url=domain_url + 'paymentsuccess/' + str(invoice.id),
            cancel_url=domain_url + 'cancelled/',
            payment_method_types=['card'],
            mode='payment',
            line_items=[{
                'name': "Payment",
                'description': invoice.id,
                'amount': int(invoice.Amount * 100),
                'currency': 'inr',
                'quantity': 1
            }])

        session_id = checkout_session['id']
        link = domain_url + "payment?amount={0}&session_id={1}".format(
            invoice.Amount, session_id)
        user = User.objects.all().first()
        short_url = domain_url + "s/" + shortener.create(user, link)
        return JsonResponse({
            'sessionId': checkout_session['id'],
            'shortlink': str(short_url)
        })
    except Exception as e:
        return JsonResponse({'error': str(e)})
    return render(request, 'invoicelist.html', locals())
Example #9
0
 def form_valid(self, form):
     camp = Campaign.objects.create()
     affiliate_link = reverse('campaign:affiliate', kwargs={'camp_id': camp.id})
     short_url = shortener.create(self.request.user, affiliate_link)
     campaign = UrlMap.objects.get(short_url=short_url)
     exp_date = form.cleaned_data.get('expiration_date')
     print('Exp date', exp_date, type(exp_date))
     campaign.date_expired = exp_date
     campaign.save()
     # org = Organization.objects.get(
     #     id=SiteCoordinator.objects.get(
     #         user__username=self.request.user.username
     #     ).organization.id
     # )
     camp.campaign = campaign
     # camp.organization = org
     camp.organization = form.cleaned_data.get('organization')
     camp.save()
     return redirect('campaign:detail', camp_id = camp.id)
Example #10
0
    def test_shortener_enabled_setting(self):
        with self.settings(SHORTENER_ENABLED=False):
            with self.assertRaisesMessage(PermissionError, 'not authorized to create shortlinks'):
                shortener.create(self.ronald, "http://devget.net/")

            # Ensure we can override with UrlProfile
            self.urlProfile.enabled = True
            self.urlProfile.save()
            shortener.create(self.ronald, "http://devget.net/")

            # Ensure we can omit with UrlProfile
            self.urlProfile.enabled = None
            self.urlProfile.save()
            with self.assertRaisesMessage(PermissionError, 'not authorized to create shortlinks'):
                shortener.create(self.ronald, "http://devget.net/")
Example #11
0
def test(request, link):
    if request.user.is_authenticated:
        data = shortener.create(request.user, link)
        return HttpResponse(data)
    else:
        return HttpResponse('unauthorized')
Example #12
0
 def test_max_concurrent_setting(self):
     with self.settings(SHORTENER_MAX_CONCURRENT=2):
         shortener.create(self.bob, "http://devget.net/")
         shortener.create(self.bob, "http://devget.net/")
         with self.assertRaisesMessage(PermissionError, 'concurrent quota exceeded'):
             shortener.create(self.bob, "http://devget.net/")
Example #13
0
 def test_max_urls_setting(self):
     with self.settings(SHORTENER_MAX_URLS=2):
         shortener.create(self.bob, "http://devget.net/")
         shortener.create(self.bob, "http://devget.net/")
         with self.assertRaisesMessage(PermissionError, 'url quota exceeded'):
             shortener.create(self.bob, "http://devget.net/")
Example #14
0
 def test_shortener_enabled_setting(self):
     with self.settings(SHORTENER_ENABLED=False):
         with self.assertRaisesMessage(PermissionError, 'not authorized to create shortlinks'):
             shortener.create(self.bob, "http://devget.net/")
Example #15
0
 def test_invalid_link(self):
     url = shortener.create(self.bob, "http://devget.net/")
     self.assertEqual(shortener.expand(url), "http://devget.net/")  # good shortlink
     with self.assertRaisesMessage(KeyError, 'invalid shortlink'):
         self.assertEqual(shortener.expand('photosynthesis'), "http://devget.net/")  # bad shortlink
Example #16
0
 def test_url_creation(self):
     url = shortener.create(self.bob, "http://devget.net/")
     self.assertEqual(shortener.expand(url), "http://devget.net/")