예제 #1
0
    def test_hijack_tty_ok_ssl_error(self, fake_Terminal, fake_get_stdin_pump,
                                     fake_select):
        """``dockerpty.pty`` PseudoTerminal '_hijack_tty' can handle some SSL errors"""
        fake_select.return_value = ([], [])
        fake_client = MagicMock()
        fake_run_operation = MagicMock()
        fake_pump = MagicMock()
        ssl_error = SSLError()
        ssl_error.strerror = 'The operation did not complete'
        fake_pump.do_write.side_effect = [ssl_error, MagicMock()]
        fake_pumps = [fake_pump]
        fake_select.return_value = ([fake_pump], [fake_pump])

        pty.PseudoTerminal(fake_client,
                           fake_run_operation)._hijack_tty(fake_pumps)
예제 #2
0
    def test_hijack_tty_bad_ssl_error(self, fake_Terminal, fake_get_stdin_pump,
                                      fake_select):
        """``dockerpty.pty`` PseudoTerminal '_hijack_tty' raises if it catches an expected SSL error"""
        fake_select.return_value = ([], [])
        fake_client = MagicMock()
        fake_run_operation = MagicMock()
        fake_pump = MagicMock()
        ssl_error = SSLError()
        ssl_error.strerror = 'doh'
        fake_pump.do_write.side_effect = [ssl_error, MagicMock()]
        fake_pumps = [fake_pump]
        fake_select.return_value = ([fake_pump], [fake_pump])

        with self.assertRaises(SSLError):
            pty.PseudoTerminal(fake_client,
                               fake_run_operation)._hijack_tty(fake_pumps)