def test_npn_client_fail(self):
    '\n        Tests that when clients and servers cannot agree on what protocol\n        to use next that the TLS connection does not get established.\n        '
    advertise_args = []
    select_args = []

    def advertise(conn):
        advertise_args.append((conn,))
        return [b'http/1.1', b'spdy/2']

    def select(conn, options):
        select_args.append((conn, options))
        return b''
    server_context = Context(TLSv1_METHOD)
    server_context.set_npn_advertise_callback(advertise)
    client_context = Context(TLSv1_METHOD)
    client_context.set_npn_select_callback(select)
    server_context.use_privatekey(load_privatekey(FILETYPE_PEM, server_key_pem))
    server_context.use_certificate(load_certificate(FILETYPE_PEM, server_cert_pem))
    server = Connection(server_context, None)
    server.set_accept_state()
    client = Connection(client_context, None)
    client.set_connect_state()
    with pytest.raises(Error):
        interact_in_memory(server, client)
    assert (advertise_args == [(server,)])
    assert (select_args == [(client, [b'http/1.1', b'spdy/2'])])
Tests that when clients and servers cannot agree on what protocol
to use next that the TLS connection does not get established.
def test_npn_client_fail(self):
    '\n        Tests that when clients and servers cannot agree on what protocol\n        to use next that the TLS connection does not get established.\n        '
    advertise_args = []
    select_args = []

    def advertise(conn):
        advertise_args.append((conn,))
        return [b'http/1.1', b'spdy/2']

    def select(conn, options):
        select_args.append((conn, options))
        return b
    server_context = Context(TLSv1_METHOD)
    server_context.set_npn_advertise_callback(advertise)
    client_context = Context(TLSv1_METHOD)
    client_context.set_npn_select_callback(select)
    server_context.use_privatekey(load_privatekey(FILETYPE_PEM, server_key_pem))
    server_context.use_certificate(load_certificate(FILETYPE_PEM, server_cert_pem))
    server = Connection(server_context, None)
    server.set_accept_state()
    client = Connection(client_context, None)
    client.set_connect_state()
    with pytest.raises(Error):
        interact_in_memory(server, client)
    assert (advertise_args == [(server,)])
    assert (select_args == [(client, [b'http/1.1', b'spdy/2'])])