From 16d9fffc4aab6aefe8d4efe06bece40581b0853f Mon Sep 17 00:00:00 2001 From: scito Date: Sun, 4 Sep 2022 07:42:27 +0200 Subject: [PATCH] add test for verbose output --- test/print_verbose_output.txt | 89 ++++++++++++++++++++++++ test_extract_otp_secret_keys_pytest.py | 13 ++++ test_extract_otp_secret_keys_unittest.py | 10 +++ 3 files changed, 112 insertions(+) create mode 100644 test/print_verbose_output.txt diff --git a/test/print_verbose_output.txt b/test/print_verbose_output.txt new file mode 100644 index 0000000..c9770e5 --- /dev/null +++ b/test/print_verbose_output.txt @@ -0,0 +1,89 @@ +# 2FA example from https://www.raspberrypi.org/blog/setting-up-two-factor-authentication-on-your-raspberry-pi/ +# Secret key: 7KSQL2JTUDIS5EF65KLMRQIIGY +# otpauth://totp/pi@raspberrypi?secret=7KSQL2JTUDIS5EF65KLMRQIIGY&issuer=raspberrypi +otpauth-migration://offline?data=CjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACjr4JKK%2B%2F%2F%2F%2F%2F8B + +1. Payload Line +otp_parameters { + secret: "\372\245\005\3513\240\321.\220\276\352\226\310\301\0106" + name: "pi@raspberrypi" + issuer: "raspberrypi" + algorithm: ALGO_SHA1 + digits: 1 + type: OTP_TOTP +} +version: 1 +batch_size: 1 +batch_id: -1320898453 + + +1. Secret Key +Name: pi@raspberrypi +Secret: 7KSQL2JTUDIS5EF65KLMRQIIGY +Issuer: raspberrypi +Type: OTP_TOTP +otpauth://totp/pi%40raspberrypi?secret=7KSQL2JTUDIS5EF65KLMRQIIGY&issuer=raspberrypi + + +# otpauth://totp/pi@raspberrypi?secret=7KSQL2JTUDIS5EF65KLMRQIIGY +otpauth-migration://offline?data=CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACEAEYASAAKLzjp5n4%2F%2F%2F%2F%2FwE%3D + +2. Payload Line +otp_parameters { + secret: "\372\245\005\3513\240\321.\220\276\352\226\310\301\0106" + name: "pi@raspberrypi" + algorithm: ALGO_SHA1 + digits: 1 + type: OTP_TOTP +} +version: 1 +batch_size: 1 +batch_id: -2094403140 + + +2. Secret Key +Name: pi@raspberrypi +Secret: 7KSQL2JTUDIS5EF65KLMRQIIGY +Type: OTP_TOTP +otpauth://totp/pi%40raspberrypi?secret=7KSQL2JTUDIS5EF65KLMRQIIGY + + +# otpauth://totp/pi@raspberrypi?secret=7KSQL2JTUDIS5EF65KLMRQIIGY&issuer=raspberrypi +# otpauth://totp/pi@raspberrypi?secret=7KSQL2JTUDIS5EF65KLMRQIIGY +otpauth-migration://offline?data=CigKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpIAEoATACCjUKEPqlBekzoNEukL7qlsjBCDYSDnBpQHJhc3BiZXJyeXBpGgtyYXNwYmVycnlwaSABKAEwAhABGAEgACiQ7OOa%2Bf%2F%2F%2F%2F8B + +3. Payload Line +otp_parameters { + secret: "\372\245\005\3513\240\321.\220\276\352\226\310\301\0106" + name: "pi@raspberrypi" + algorithm: ALGO_SHA1 + digits: 1 + type: OTP_TOTP +} +otp_parameters { + secret: "\372\245\005\3513\240\321.\220\276\352\226\310\301\0106" + name: "pi@raspberrypi" + issuer: "raspberrypi" + algorithm: ALGO_SHA1 + digits: 1 + type: OTP_TOTP +} +version: 1 +batch_size: 1 +batch_id: -1822886384 + + +3. Secret Key +Name: pi@raspberrypi +Secret: 7KSQL2JTUDIS5EF65KLMRQIIGY +Type: OTP_TOTP +otpauth://totp/pi%40raspberrypi?secret=7KSQL2JTUDIS5EF65KLMRQIIGY + + +4. Secret Key +Name: pi@raspberrypi +Secret: 7KSQL2JTUDIS5EF65KLMRQIIGY +Issuer: raspberrypi +Type: OTP_TOTP +otpauth://totp/pi%40raspberrypi?secret=7KSQL2JTUDIS5EF65KLMRQIIGY&issuer=raspberrypi + diff --git a/test_extract_otp_secret_keys_pytest.py b/test_extract_otp_secret_keys_pytest.py index 8caa9cb..2213814 100644 --- a/test_extract_otp_secret_keys_pytest.py +++ b/test_extract_otp_secret_keys_pytest.py @@ -101,6 +101,19 @@ def test_extract_printqr(capsys): assert captured.err == '' +def test_extract_verbose(capsys): + # Act + extract_otp_secret_keys.main(['-v', 'example_export.txt']) + + # Assert + captured = capsys.readouterr() + + expected_stdout = read_file_to_str('test/print_verbose_output.txt') + + assert captured.out == expected_stdout + assert captured.err == '' + + def cleanup(): remove_file('test_example_output.csv') remove_file('test_example_output.json') diff --git a/test_extract_otp_secret_keys_unittest.py b/test_extract_otp_secret_keys_unittest.py index f153257..31f62ad 100644 --- a/test_extract_otp_secret_keys_unittest.py +++ b/test_extract_otp_secret_keys_unittest.py @@ -108,6 +108,16 @@ Type: OTP_TOTP self.assertEqual(actual_output, expected_output) + def test_extract_verbose(self): + out = io.StringIO() + with redirect_stdout(out): + extract_otp_secret_keys.main(['-v', 'example_export.txt']) + actual_output = out.getvalue() + + expected_output = read_file_to_str('test/print_verbose_output.txt') + + self.assertEqual(actual_output, expected_output) + def setUp(self): self.cleanup()