def test_qr_code_created_with_forced_album(self): os.chdir(self.static_test_dir_name) QrCodeHandler.create_qr_code_handler_with_qr_codes( self.static_test_dir_name, 5000, "192.168.0.1", forced_album_name="album1" ) qr_code_filepath = os.path.join( self.static_test_dir_name, "qr_codes", "start_page_url.png" ) try: decoded_qr_code = decode(Image.open(qr_code_filepath)) except ImportError: self.print_zbar_error_message() return qr_code_text = decoded_qr_code[0].data.decode("utf-8") self.assertEqual( qr_code_text, "http://5000:192.168.0.1/album/album1" ) os.chdir("./..")
def test_generated_wifi_qr_code_with_center_image(self): self.qr_code_handler = QrCodeHandler(self.static_test_dir_name, use_center_images=True) self.qr_code_handler.add_wifi_qr_code( "wifi_qr_code", "my_netwok_ssid", "WPA/WPA2", "my_super_secret_password", "Scan this qr code to connect to the wifi!" ) qr_code_filepath = os.path.join( self.static_test_dir_name, "qr_codes", "wifi_qr_code.png" ) try: decoded_qr_code = decode(Image.open(qr_code_filepath)) except ImportError: self.print_zbar_error_message() return qr_code_text = decoded_qr_code[0].data.decode("utf-8") self.assertEqual( qr_code_text, "WIFI:S:my_netwok_ssid;T:WPA/WPA2;P:my_super_secret_password;;" )
def setUp(self): # Create a temporary static dir which is deleted after every test self.static_dir = tempfile.TemporaryDirectory(dir=".") self.static_dir_name = self.static_dir.name.split("./")[1] camera_module = create_fast_dummy_module() album_handler = FolderAlbumHandler(self.static_dir_name, "albums") self.qr_code_handler = QrCodeHandler(self.static_dir_name) app = create_app(album_handler, self.static_dir_name, camera_module, self.qr_code_handler) self.test_client = app.test_client()
def test_create_qr_code_handler_when_network_details_do_exist(self): # We need to go down a directory so network_details.json does # not get overwritten in the top directory os.chdir(self.static_test_dir_name) with open("network_details.json", "w") as f: f.write("""{ "wifi_name": "my_wifi_SSID", "wifi_protocol": "WPA/WPA2", "wifi_password": "******", "description": "Scan qr code to connect to my_wifi_SSID!" } """) qr_code_handler = QrCodeHandler.create_qr_code_handler_with_qr_codes( self.static_test_dir_name, 5000, "192.168.0.1" ) qr_codes = qr_code_handler.get_qr_codes() self.assertEqual(len(qr_codes), 2) self.assertEqual(qr_codes[0].get_name(), "wifi_qr_code") self.assertEqual(qr_codes[1].get_name(), "start_page_url") os.chdir("./..")
def create_app_and_client_with_forced_album(self, forced_album_name): self.album_handler = FolderAlbumHandler(self.static_dir_name, "albums") qr_code_handler = QrCodeHandler(self.static_dir_name) app = create_app(self.album_handler, self.static_dir_name, self.camera_module, qr_code_handler, forced_album_name=forced_album_name) self.test_client = app.test_client()
def test_generate_url_qr_code_with_center_image(self): self.qr_code_handler = QrCodeHandler(self.static_test_dir_name, use_center_images=True) self.qr_code_handler.add_url_qr_code( "test_url_qr_code", "www.test.com", "Scan this qr code to go to www.test.com!" ) qr_code_filepath = os.path.join( self.static_test_dir_name, "qr_codes", "test_url_qr_code.png" ) try: decoded_qr_code = decode(Image.open(qr_code_filepath)) except ImportError: self.print_zbar_error_message() return qr_code_text = decoded_qr_code[0].data.decode("utf-8") self.assertEqual(qr_code_text, "www.test.com")
def test_create_qr_code_handler_when_network_details_do_not_exist(self): # We need to go down a directory as network_details.json might # exist in the top dir of the project os.chdir(self.static_test_dir_name) qr_code_handler = QrCodeHandler.create_qr_code_handler_with_qr_codes( self.static_test_dir_name, 5000, "192.168.0.1" ) qr_codes = qr_code_handler.get_qr_codes() self.assertEqual(len(qr_codes), 1) self.assertEqual(qr_codes[0].get_name(), "start_page_url") os.chdir("./..")
class QrCodeApiTestCase(unittest.TestCase): def setUp(self): # Create a temporary static dir which is deleted after every test self.static_dir = tempfile.TemporaryDirectory(dir=".") self.static_dir_name = self.static_dir.name.split("./")[1] camera_module = create_fast_dummy_module() album_handler = FolderAlbumHandler(self.static_dir_name, "albums") self.qr_code_handler = QrCodeHandler(self.static_dir_name) app = create_app(album_handler, self.static_dir_name, camera_module, self.qr_code_handler) self.test_client = app.test_client() def tearDown(self): self.static_dir.cleanup() def test_response_when_no_qr_codes_added(self): response = self.test_client.get('/qr_codes/', content_type='application/json') self.assertEqual(response.status_code, 200) self.assertEqual(response.json, {'qr_codes': []}) def test_response_after_adding_url_qr_code(self): self.qr_code_handler.add_url_qr_code( "test_url_qr_code", "www.test.com", "Scan this qr code to go to www.test.com!") json_response = self.test_client.get( '/qr_codes/', content_type='application/json').json self.assertEqual( json_response, { 'qr_codes': [{ 'name': 'test_url_qr_code', 'information': 'Scan this qr code to go to www.test.com!', 'url': '/{}/qr_codes/test_url_qr_code.png'.format( self.static_dir_name) }] }) def test_response_after_adding_url_and_wifi_qr_code(self): self.qr_code_handler.add_url_qr_code( "test_url_qr_code", "www.test.com", "Scan this qr code to go to www.test.com!") self.qr_code_handler.add_wifi_qr_code( "wifi_qr_code", "my_netwok_ssid", "WPA/WPA2", "my_super_secret_password", "Scan this qr code to connect to the wifi!") json_response = self.test_client.get( '/qr_codes/', content_type='application/json').json self.assertEqual( json_response, { 'qr_codes': [{ 'information': 'Scan this qr code to go to www.test.com!', 'name': 'test_url_qr_code', 'url': '/{}/qr_codes/test_url_qr_code.png'.format( self.static_dir_name) }, { 'information': 'Scan this qr code to connect to the wifi!', 'name': 'wifi_qr_code', 'url': '/{}/qr_codes/wifi_qr_code.png'.format( self.static_dir_name) }] })
def setUp(self): self.static_test_dir = tempfile.TemporaryDirectory(dir=".") self.static_test_dir_name = self.static_test_dir.name.split("./")[1] self.qr_code_handler = QrCodeHandler(self.static_test_dir_name)
class QrCodeHandlerTestCase(unittest.TestCase): def setUp(self): self.static_test_dir = tempfile.TemporaryDirectory(dir=".") self.static_test_dir_name = self.static_test_dir.name.split("./")[1] self.qr_code_handler = QrCodeHandler(self.static_test_dir_name) def tearDown(self): self.static_test_dir.cleanup() # Remove directory from file system def print_zbar_error_message(self): print("-----------------------------") print("Could not decode qr code using zbar.") print("To install zbar correctly, go to https://pypi.org/project/pyzbar/") print("-----------------------------") def test_empty_list_is_returned_when_no_qr_codes(self): qr_codes = self.qr_code_handler.get_qr_codes() self.assertEqual(qr_codes, []) def test_qr_code_is_returned_after_code_is_created(self): self.qr_code_handler.add_url_qr_code( "test_url_qr_code", "www.test.com", "Scan this qr code to go to www.test.com!" ) qr_codes = self.qr_code_handler.get_qr_codes() self.assertEqual(len(qr_codes), 1) self.assertEqual(qr_codes[0].get_name(), "test_url_qr_code") def test_create_two_qr_codes(self): self.qr_code_handler.add_url_qr_code( "test_url_qr_code", "www.test.com", "Scan this qr code to go to www.test.com!" ) self.qr_code_handler.add_url_qr_code( "test_url_qr_code2", "www.test2.com", "Scan this qr code to go to www.test.com!" ) qr_codes = self.qr_code_handler.get_qr_codes() self.assertEqual(len(qr_codes), 2) self.assertEqual(qr_codes[0].get_name(), "test_url_qr_code") self.assertEqual(qr_codes[1].get_name(), "test_url_qr_code2") def test_qr_code_file_is_created(self): self.qr_code_handler.add_url_qr_code( "test_url_qr_code", "www.test.com", "Scan this qr code to go to www.test.com!" ) expected_qr_code_path = os.path.join( self.static_test_dir_name, "qr_codes", "test_url_qr_code.png" ) self.assertTrue(os.path.exists(expected_qr_code_path)) def test_get_relative_url_of_qr_code(self): self.qr_code_handler.add_url_qr_code( "test_url_qr_code", "www.test.com", "Scan this qr code to go to www.test.com!" ) self.assertEqual( self.qr_code_handler.get_qr_codes()[0].get_relative_url(), "qr_codes/test_url_qr_code.png" ) def test_generated_url_qr_code_is_correct(self): self.qr_code_handler.add_url_qr_code( "test_url_qr_code", "www.test.com", "Scan this qr code to go to www.test.com!" ) qr_code_filepath = os.path.join( self.static_test_dir_name, "qr_codes", "test_url_qr_code.png" ) try: decoded_qr_code = decode(Image.open(qr_code_filepath)) except ImportError: self.print_zbar_error_message() return qr_code_text = decoded_qr_code[0].data.decode("utf-8") self.assertEqual(qr_code_text, "www.test.com") def test_generated_wifi_qr_code_is_correct(self): self.qr_code_handler.add_wifi_qr_code( "wifi_qr_code", "my_netwok_ssid", "WPA/WPA2", "my_super_secret_password", "Scan this qr code to connect to the wifi!" ) qr_code_filepath = os.path.join( self.static_test_dir_name, "qr_codes", "wifi_qr_code.png" ) try: decoded_qr_code = decode(Image.open(qr_code_filepath)) except ImportError: self.print_zbar_error_message() return qr_code_text = decoded_qr_code[0].data.decode("utf-8") self.assertEqual( qr_code_text, "WIFI:S:my_netwok_ssid;T:WPA/WPA2;P:my_super_secret_password;;" ) def test_generate_url_qr_code_with_center_image(self): self.qr_code_handler = QrCodeHandler(self.static_test_dir_name, use_center_images=True) self.qr_code_handler.add_url_qr_code( "test_url_qr_code", "www.test.com", "Scan this qr code to go to www.test.com!" ) qr_code_filepath = os.path.join( self.static_test_dir_name, "qr_codes", "test_url_qr_code.png" ) try: decoded_qr_code = decode(Image.open(qr_code_filepath)) except ImportError: self.print_zbar_error_message() return qr_code_text = decoded_qr_code[0].data.decode("utf-8") self.assertEqual(qr_code_text, "www.test.com") def test_generated_wifi_qr_code_with_center_image(self): self.qr_code_handler = QrCodeHandler(self.static_test_dir_name, use_center_images=True) self.qr_code_handler.add_wifi_qr_code( "wifi_qr_code", "my_netwok_ssid", "WPA/WPA2", "my_super_secret_password", "Scan this qr code to connect to the wifi!" ) qr_code_filepath = os.path.join( self.static_test_dir_name, "qr_codes", "wifi_qr_code.png" ) try: decoded_qr_code = decode(Image.open(qr_code_filepath)) except ImportError: self.print_zbar_error_message() return qr_code_text = decoded_qr_code[0].data.decode("utf-8") self.assertEqual( qr_code_text, "WIFI:S:my_netwok_ssid;T:WPA/WPA2;P:my_super_secret_password;;" ) def test_get_qr_code_urls_as_strings_with_one_qr_code(self): self.qr_code_handler.add_url_qr_code( "test_url_qr_code", "www.test.com", "Scan this qr code to go to www.test.com!" ) self.assertEqual( self.qr_code_handler.get_qr_code_urls_as_strings("localhost"), ['For accessing test_url_qr_code : http://localhost:5000/static/qr_codes/test_url_qr_code.png'] ) def test_get_qr_code_urls_as_strings_with_two_qr_codes(self): self.qr_code_handler.add_url_qr_code( "test_url_qr_code", "www.test.com", "Scan this qr code to go to www.test.com!" ) self.qr_code_handler.add_wifi_qr_code( "wifi_qr_code", "my_netwok_ssid", "WPA/WPA2", "my_super_secret_password", "Scan this qr code to connect to the wifi!" ) self.assertEqual( self.qr_code_handler.get_qr_code_urls_as_strings("localhost"), ['For accessing test_url_qr_code : http://localhost:5000/static/qr_codes/test_url_qr_code.png', 'For accessing wifi_qr_code : http://localhost:5000/static/qr_codes/wifi_qr_code.png'] ) def test_create_qr_code_handler_when_network_details_do_not_exist(self): # We need to go down a directory as network_details.json might # exist in the top dir of the project os.chdir(self.static_test_dir_name) qr_code_handler = QrCodeHandler.create_qr_code_handler_with_qr_codes( self.static_test_dir_name, 5000, "192.168.0.1" ) qr_codes = qr_code_handler.get_qr_codes() self.assertEqual(len(qr_codes), 1) self.assertEqual(qr_codes[0].get_name(), "start_page_url") os.chdir("./..") def test_qr_code_created_with_forced_album(self): os.chdir(self.static_test_dir_name) QrCodeHandler.create_qr_code_handler_with_qr_codes( self.static_test_dir_name, 5000, "192.168.0.1", forced_album_name="album1" ) qr_code_filepath = os.path.join( self.static_test_dir_name, "qr_codes", "start_page_url.png" ) try: decoded_qr_code = decode(Image.open(qr_code_filepath)) except ImportError: self.print_zbar_error_message() return qr_code_text = decoded_qr_code[0].data.decode("utf-8") self.assertEqual( qr_code_text, "http://5000:192.168.0.1/album/album1" ) os.chdir("./..") def test_create_qr_code_handler_when_network_details_do_exist(self): # We need to go down a directory so network_details.json does # not get overwritten in the top directory os.chdir(self.static_test_dir_name) with open("network_details.json", "w") as f: f.write("""{ "wifi_name": "my_wifi_SSID", "wifi_protocol": "WPA/WPA2", "wifi_password": "******", "description": "Scan qr code to connect to my_wifi_SSID!" } """) qr_code_handler = QrCodeHandler.create_qr_code_handler_with_qr_codes( self.static_test_dir_name, 5000, "192.168.0.1" ) qr_codes = qr_code_handler.get_qr_codes() self.assertEqual(len(qr_codes), 2) self.assertEqual(qr_codes[0].get_name(), "wifi_qr_code") self.assertEqual(qr_codes[1].get_name(), "start_page_url") os.chdir("./..")