diff options
Diffstat (limited to 'test/test_outputbuffer.py')
-rw-r--r-- | test/test_outputbuffer.py | 183 |
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 |