summaryrefslogtreecommitdiffstats
path: root/test/test_outputbuffer.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_outputbuffer.py')
-rw-r--r--test/test_outputbuffer.py183
1 files changed, 183 insertions, 0 deletions
diff --git a/test/test_outputbuffer.py b/test/test_outputbuffer.py
new file mode 100644
index 0000000..d92d7bd
--- /dev/null
+++ b/test/test_outputbuffer.py
@@ -0,0 +1,183 @@
+import pytest
+
+
+# pylint: disable=attribute-defined-outside-init
+class TestOutputBuffer:
+ @pytest.fixture(autouse=True)
+ def init(self, ssh_audit):
+ self.OutputBuffer = ssh_audit.OutputBuffer
+
+ def test_outputbuffer_no_lines(self, output_spy):
+ output_spy.begin()
+ obuf = self.OutputBuffer()
+ obuf.write()
+ assert output_spy.flush() == ['']
+ output_spy.begin()
+
+ def test_outputbuffer_defaults(self):
+ obuf = self.OutputBuffer()
+ # default: on
+ assert obuf.batch is False
+ assert obuf.use_colors is True
+ assert obuf.level == 'info'
+
+ def test_outputbuffer_colors(self, output_spy):
+ out = self.OutputBuffer()
+
+ # Test without colors.
+ out.use_colors = False
+
+ output_spy.begin()
+ out.info('info color')
+ out.write()
+ assert output_spy.flush() == ['info color']
+
+ output_spy.begin()
+ out.head('head color')
+ out.write()
+ assert output_spy.flush() == ['head color']
+
+ output_spy.begin()
+ out.good('good color')
+ out.write()
+ assert output_spy.flush() == ['good color']
+
+ output_spy.begin()
+ out.warn('warn color')
+ out.write()
+ assert output_spy.flush() == ['warn color']
+
+ output_spy.begin()
+ out.fail('fail color')
+ out.write()
+ assert output_spy.flush() == ['fail color']
+
+ # If colors aren't supported by this system, skip the color tests.
+ if not out.colors_supported:
+ return
+
+ # Test with colors.
+ out.use_colors = True
+
+ output_spy.begin()
+ out.info('info color')
+ out.write()
+ assert output_spy.flush() == ['info color']
+
+ output_spy.begin()
+ out.head('head color')
+ out.write()
+ assert output_spy.flush() in [['\x1b[0;36mhead color\x1b[0m'], ['\x1b[0;96mhead color\x1b[0m']]
+
+ output_spy.begin()
+ out.good('good color')
+ out.write()
+ assert output_spy.flush() in [['\x1b[0;32mgood color\x1b[0m'], ['\x1b[0;92mgood color\x1b[0m']]
+
+ output_spy.begin()
+ out.warn('warn color')
+ out.write()
+ assert output_spy.flush() in [['\x1b[0;33mwarn color\x1b[0m'], ['\x1b[0;93mwarn color\x1b[0m']]
+
+ output_spy.begin()
+ out.fail('fail color')
+ out.write()
+ assert output_spy.flush() in [['\x1b[0;31mfail color\x1b[0m'], ['\x1b[0;91mfail color\x1b[0m']]
+
+ def test_outputbuffer_sep(self, output_spy):
+ out = self.OutputBuffer()
+ output_spy.begin()
+ out.sep()
+ out.sep()
+ out.sep()
+ out.write()
+ assert output_spy.flush() == ['', '', '']
+
+ def test_outputbuffer_levels(self):
+ out = self.OutputBuffer()
+ assert out.get_level('info') == 0
+ assert out.get_level('good') == 0
+ assert out.get_level('warn') == 1
+ assert out.get_level('fail') == 2
+ assert out.get_level('unknown') > 2
+
+ def test_outputbuffer_level_property(self):
+ out = self.OutputBuffer()
+ out.level = 'info'
+ assert out.level == 'info'
+ out.level = 'good'
+ assert out.level == 'info'
+ out.level = 'warn'
+ assert out.level == 'warn'
+ out.level = 'fail'
+ assert out.level == 'fail'
+ out.level = 'invalid level'
+ assert out.level == 'unknown'
+
+ def test_outputbuffer_level(self, output_spy):
+ out = self.OutputBuffer()
+ # visible: all
+ out.level = 'info'
+ output_spy.begin()
+ out.info('info color')
+ out.head('head color')
+ out.good('good color')
+ out.warn('warn color')
+ out.fail('fail color')
+ out.write()
+ assert len(output_spy.flush()) == 5
+ # visible: head, warn, fail
+ out.level = 'warn'
+ output_spy.begin()
+ out.info('info color')
+ out.head('head color')
+ out.good('good color')
+ out.warn('warn color')
+ out.fail('fail color')
+ out.write()
+ assert len(output_spy.flush()) == 3
+ # visible: head, fail
+ out.level = 'fail'
+ output_spy.begin()
+ out.info('info color')
+ out.head('head color')
+ out.good('good color')
+ out.warn('warn color')
+ out.fail('fail color')
+ out.write()
+ assert len(output_spy.flush()) == 2
+ # visible: head
+ out.level = 'invalid level'
+ output_spy.begin()
+ out.info('info color')
+ out.head('head color')
+ out.good('good color')
+ out.warn('warn color')
+ out.fail('fail color')
+ out.write()
+ assert len(output_spy.flush()) == 1
+
+ def test_outputbuffer_batch(self, output_spy):
+ out = self.OutputBuffer()
+ # visible: all
+ output_spy.begin()
+ out.level = 'info'
+ out.batch = False
+ out.info('info color')
+ out.head('head color')
+ out.good('good color')
+ out.warn('warn color')
+ out.fail('fail color')
+ out.write()
+ assert len(output_spy.flush()) == 5
+ # visible: all except head
+ output_spy.begin()
+ out.level = 'info'
+ out.batch = True
+ out.info('info color')
+ out.head('head color')
+ out.good('good color')
+ out.warn('warn color')
+ out.fail('fail color')
+ out.write()
+ assert len(output_spy.flush()) == 4