From f4b6a3a26ab379d0145d5e0bd9c2c2ece06c08a8 Mon Sep 17 00:00:00 2001 From: Trent Palmer Date: Mon, 19 Apr 2021 19:23:27 -0700 Subject: [PATCH] add docs/posts/test-qr-svg-django.md --- docs/index.md | 1 + docs/links.md | 1 + ...reenshot_enable_totp_confirmation_form.jpg | Bin 0 -> 102389 bytes docs/posts/test-qr-svg-django.md | 368 ++++++++++++++++++ mkdocs.yml | 1 + 5 files changed, 371 insertions(+) create mode 100644 docs/photos/IMG_screenshot_enable_totp_confirmation_form.jpg create mode 100644 docs/posts/test-qr-svg-django.md diff --git a/docs/index.md b/docs/index.md index 3eb4b24..cdf0b46 100644 --- a/docs/index.md +++ b/docs/index.md @@ -5,6 +5,7 @@ authors: ["trent"] # Trent's Blog ## **Posts By Date** +* [2021-04-19: Test QRCODE Svg in Django](posts/test-qr-svg-django.md){target=_blank} * [2021-01-25: Prosody Photo Uploads](posts/prosody-photo-uploads.md){target=_blank} * [2021-01-09: Xmpp Apt Notifications](posts/xmpp-apt-notifications.md){target=_blank} * [2020-12-20: Apache Virtual Hosts](posts/apache-virtual-hosts.md){target=_blank} diff --git a/docs/links.md b/docs/links.md index d2d5472..75a4a9d 100644 --- a/docs/links.md +++ b/docs/links.md @@ -7,6 +7,7 @@ authors: ["trent"] ## **Links** * [Home](index.md){target=_blank} +* [AudioBooks](https://trentpalmer.org){target=_blank} * [GitHub](https://github.com/TrentSPalmer){target=_blank} * [Twitter](https://twitter.com/boringtrent){target=_blank} * [Facebook](https://www.facebook.com/trentspalmer){target=_blank} diff --git a/docs/photos/IMG_screenshot_enable_totp_confirmation_form.jpg b/docs/photos/IMG_screenshot_enable_totp_confirmation_form.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a05af878aaf4f04d90ef853fdc9c7453bc2f6b89 GIT binary patch literal 102389 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

=SjFey& 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 + enable totp confirmation form + + +!["ScreenShot of a confirmation form for enabling totp (in a django app)"]( + ../../photos/IMG_screenshot_enable_totp_confirmation_form.jpg){: .center } + +## **Import Python Libraries** +```python +# tp/accounts/tests/test_enable_totp_view.py +# python manage.py test accounts.tests.test_enable_totp_view +from django.test import TestCase +from django.contrib.auth.models import User +from accounts.models import Account +from django.urls import reverse +from bs4 import BeautifulSoup +import cv2 +from cairosvg import svg2png +from PIL import Image +import pyotp +import pathlib +``` + +The Account model has a one-to-one relationship with the Django built-in +User model. This is where we keep track of the totp secret key and +boolean value for having totp authentication enabled. + +## **setUp TestCase** +```python +... +import pathlib + + +class TestEnableTOTPViewTestCase(TestCase): + + def setUp(self): + user_a = User.objects.create( + username='user_a') + user_a.set_password('password_user_a') + user_a.save() + Account.objects.create(user=user_a) +``` + +We create a test user and save that in the test database. + +## **GET Form** +```python +class TestEnableTOTPViewTestCase(TestCase): + ... + def test_enable_totp_view(self): + self.client.login( + username='user_a', + password='password_user_a' + ) + get_response = self.client.get( + reverse('accounts:enable_totp') + ) + self.assertEquals( + get_response.status_code, 200 + ) + self.assertTemplateUsed( + get_response, 'accounts/totp_form.html' + ) + self.assertEquals( + get_response.request['PATH_INFO'], + '/accounts/enable-totp/' + ) +``` +The TestCase requires two requests. In the first request we GET the form +so that we can consume the qrcode. + +## **Consume SVG with BeautifulSoup** +```python +class TestEnableTOTPViewTestCase(TestCase): + ... + def test_enable_totp_view(self): + ... + soup = BeautifulSoup( + get_response.content, features="lxml" + ) + svg_container = soup.find( + "div", {"id": "svgcontainer"} + ) + self.assertIsNotNone(svg_container) + scsvg = svg_container.findChild( + "svg", recursive=False + ) + self.assertIsNotNone(scsvg) + + with open('qr.svg', 'w') as f: + x_string = "\n" + f.write(x_string + str(scsvg)) +``` +The inline xml for the svg comes to us as a child of a +`div` with an `id` of *svgcontainer*. We capture the xml of the svg in the variable +`scsvg`, and then write it out to disc. + +## **svg2png** +```python +class TestEnableTOTPViewTestCase(TestCase): + ... + def test_enable_totp_view(self): + ... + svg2png( + url='qr.svg', write_to='qr.png', + scale=8 + ) +``` +With svg2png from CairoSVG, we convert the svg to png format. Opencv seems +unable to consume the qrcode unless you scale it up. + +## **Add White Background** +```python +class TestEnableTOTPViewTestCase(TestCase): + ... + def test_enable_totp_view(self): + ... + t_image = Image.open('qr.png') + t_image.load() + background = Image.new( + "RGB", t_image.size, + (255, 255, 255) + ) + background.paste( + t_image, + mask=t_image.split()[3] + ) + background.save( + 'qr.jpg', "JPEG", + quality=100 + ) +``` +We use Image from python-pillow to change the background from transparent +to white. Opencv seems unable to consume the qrcode when it has a transparent +background. + +## **Extract Data From QRCODE** +```python +class TestEnableTOTPViewTestCase(TestCase): + ... + def test_enable_totp_view(self): + ... + image = cv2.imread('qr.jpg') + qr_det = cv2.QRCodeDetector() + qrdata = qr_det.detectAndDecode(image) + totp_code = pyotp.TOTP( + pyotp.parse_uri(qrdata[0]).secret + ).now() +``` + +* `qrdata[0]` will be the *otpauth_uri*. +* `pyotp.parse_uri(qrdata[0]).secret` is the secret key. +* `totp_code` is the one-time password. + +## **POST the `totp_code`** +```python +class TestEnableTOTPViewTestCase(TestCase): + ... + def test_enable_totp_view(self): + ... + totp_code = pyotp.TOTP( + pyotp.parse_uri(qrdata[0]).secret + ).now() + response = self.client.post( + reverse('accounts:enable_totp'), + {'totp_code': totp_code}, + follow=True + ) + self.assertEquals( + response.status_code, 200 + ) + self.assertTemplateUsed( + response, 'base_form.html' + ) + self.assertEquals( + response.request['PATH_INFO'], + '/accounts/edit-profile/' + ) + user_a = User.objects.get( + username='user_a' + ) + self.assertTrue(user_a.account.use_totp) + self.assertEquals( + len(user_a.account.totp_key), 16 + ) + pathlib.Path('qr.svg').unlink() + pathlib.Path('qr.png').unlink() + pathlib.Path('qr.jpg').unlink() +``` +Post the `totp_code` back to the form, and then verify +that the database is updated, and then delete the image +files. + +## **Complete TestCase** +```python +# tp/accounts/tests/test_enable_totp_view.py +# python manage.py test accounts.tests.test_enable_totp_view +from django.test import TestCase +from django.contrib.auth.models import User +from accounts.models import Account +from django.urls import reverse +from bs4 import BeautifulSoup +import cv2 +from cairosvg import svg2png +from PIL import Image +import pyotp + + +class TestEnableTOTPViewTestCase(TestCase): + + # setUP TestCase + def setUp(self): + user_a = User.objects.create( + username='user_a') + user_a.set_password('password_user_a') + user_a.save() + Account.objects.create(user=user_a) + + def test_enable_totp_view(self): + self.client.login( + username='user_a', + password='password_user_a' + ) + + # GET Form + get_response = self.client.get( + reverse('accounts:enable_totp') + ) + self.assertEquals( + get_response.status_code, 200 + ) + self.assertTemplateUsed( + get_response, 'accounts/totp_form.html' + ) + self.assertEquals( + get_response.request['PATH_INFO'], + '/accounts/enable-totp/' + ) + + # Consume SVG with BeautifulSoup + soup = BeautifulSoup( + get_response.content, features="lxml" + ) + svg_container = soup.find( + "div", {"id": "svgcontainer"} + ) + self.assertIsNotNone(svg_container) + scsvg = svg_container.findChild( + "svg", recursive=False + ) + self.assertIsNotNone(scsvg) + + with open('qr.svg', 'w') as f: + x_string = "\n" + f.write(x_string + str(scsvg)) + + # svg2png + svg2png( + url='qr.svg', write_to='qr.png', + scale=8 + ) + + # add white background + t_image = Image.open('qr.png') + t_image.load() + background = Image.new( + "RGB", t_image.size, + (255, 255, 255) + ) + background.paste( + t_image, + mask=t_image.split()[3] + ) + background.save( + 'qr.jpg', "JPEG", + quality=100 + ) + + # extract data from qrcode + image = cv2.imread('qr.jpg') + qr_det = cv2.QRCodeDetector() + qrdata = qr_det.detectAndDecode(image) + totp_code = pyotp.TOTP( + pyotp.parse_uri(qrdata[0]).secret + ).now() + totp_code = pyotp.TOTP( + pyotp.parse_uri(qrdata[0]).secret + ).now() + + # POST the `totp_code` + response = self.client.post( + reverse('accounts:enable_totp'), + {'totp_code': totp_code}, + follow=True + ) + self.assertEquals( + response.status_code, 200 + ) + self.assertTemplateUsed( + response, 'base_form.html' + ) + self.assertEquals( + response.request['PATH_INFO'], + '/accounts/edit-profile/' + ) + user_a = User.objects.get( + username='user_a' + ) + self.assertTrue(user_a.account.use_totp) + self.assertEquals( + len(user_a.account.totp_key), 16 + ) + pathlib.Path('qr.svg').unlink() + pathlib.Path('qr.png').unlink() + pathlib.Path('qr.jpg').unlink() +``` diff --git a/mkdocs.yml b/mkdocs.yml index 6b083e6..618e85f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -19,6 +19,7 @@ markdown_extensions: nav: - Home: - Home: index.md + - posts/test-qr-svg-django.md - posts/prosody-photo-uploads.md - posts/xmpp-apt-notifications.md - posts/apache-virtual-hosts.md