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/")
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)
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/")
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)
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)
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/")
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/")
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())
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)
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/")
def test(request, link): if request.user.is_authenticated: data = shortener.create(request.user, link) return HttpResponse(data) else: return HttpResponse('unauthorized')
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/")
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/")
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/")
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
def test_url_creation(self): url = shortener.create(self.bob, "http://devget.net/") self.assertEqual(shortener.expand(url), "http://devget.net/")