diff --git a/tests/hwsim/test_p2p_grpform.py b/tests/hwsim/test_p2p_grpform.py index eaff0f675..880828609 100644 --- a/tests/hwsim/test_p2p_grpform.py +++ b/tests/hwsim/test_p2p_grpform.py @@ -497,12 +497,30 @@ def test_grpform_no_5ghz_add_cli4(dev): def test_grpform_incorrect_pin(dev): """P2P GO Negotiation with incorrect PIN""" dev[1].p2p_listen() - pin = dev[1].wps_read_pin() addr1 = dev[1].p2p_dev_addr() if not dev[0].discover_peer(addr1): raise Exception("Peer not found") - dev[1].p2p_go_neg_auth(dev[0].p2p_dev_addr(), pin, 'display', go_intent=0) + res = dev[1].request("P2P_CONNECT " + dev[0].p2p_dev_addr() + " pin auth go_intent=0") + if "FAIL" in res: + raise Exception("P2P_CONNECT failed to generate PIN") + logger.info("PIN from P2P_CONNECT: " + res) dev[0].request("P2P_CONNECT " + addr1 + " 00000000 enter go_intent=15") + ev = dev[0].wait_global_event(["P2P-GO-NEG-SUCCESS"], timeout=15) + if ev is None: + raise Exception("GO Negotiation did not complete successfully(0)") + ev = dev[1].wait_global_event(["P2P-GO-NEG-SUCCESS"], timeout=15) + if ev is None: + raise Exception("GO Negotiation did not complete successfully(1)") + ev = dev[1].wait_event(["WPS-FAIL"], timeout=15) + if ev is None: + raise Exception("WPS failure not reported(1)") + if "msg=8 config_error=18" not in ev: + raise Exception("Unexpected WPS failure(1): " + ev) + ev = dev[0].wait_event(["WPS-FAIL"], timeout=15) + if ev is None: + raise Exception("WPS failure not reported") + if "msg=8 config_error=18" not in ev: + raise Exception("Unexpected WPS failure: " + ev) ev = dev[1].wait_event(["P2P-GROUP-FORMATION-FAILURE"], timeout=10) if ev is None: raise Exception("Group formation failure timed out") @@ -832,3 +850,23 @@ def test_grpform_wait_peer(dev): if ev is None: raise Exception("Group formation timed out") dev[0].remove_group() + +def test_invalid_p2p_connect_command(dev): + """P2P_CONNECT error cases""" + id = dev[0].add_network() + for cmd in [ "foo", + "00:11:22:33:44:55", + "00:11:22:33:44:55 pbc persistent=123", + "00:11:22:33:44:55 pbc persistent=%d" % id, + "00:11:22:33:44:55 pbc go_intent=-1", + "00:11:22:33:44:55 pbc go_intent=16", + "00:11:22:33:44:55 pin", + "00:11:22:33:44:55 pbc freq=0" ]: + if "FAIL" not in dev[0].request("P2P_CONNECT " + cmd): + raise Exception("Invalid P2P_CONNECT command accepted: " + cmd) + + if "FAIL-INVALID-PIN" not in dev[0].request("P2P_CONNECT 00:11:22:33:44:55 1234567"): + raise Exception("Invalid PIN was not rejected") + + if "FAIL-CHANNEL-UNSUPPORTED" not in dev[0].request("P2P_CONNECT 00:11:22:33:44:55 pin freq=3000"): + raise Exception("Unsupported channel not reported")