module invite import common test InviteContact: let services = "contact,invite" spawn as p1 spawn as p2 send "create-identity Device1 Owner1" to p1 expect /create-identity-done ref ($refpat)/ from p1 capture p1id send "identity-info $p1id" to p1 expect /identity-info ref $p1id base ($refpat) owner ($refpat).*/ from p1 capture p1base, p1owner send "identity-info $p1owner" to p1 expect /identity-info ref $p1owner base ($refpat).*/ from p1 capture p1obase send "create-identity Device2 Owner2" to p2 expect /create-identity-done ref ($refpat)/ from p2 capture p2id send "start-server services $services" to p1 send "start-server services $services" to p2 expect from p1: /peer ([0-9]+) addr ${p2.node.ip} 29665/ capture peer1_2 /peer $peer1_2 id Device2 Owner2/ expect from p2: /peer ([0-9]+) addr ${p1.node.ip} 29665/ capture peer2_1 /peer $peer2_1 id Device1 Owner1/ send "invite-contact-create Contact2" to p1 expect from p1 /invite-contact-create-done ([^ ]+)/ capture token with p2: send "invite-accept 00 $p1obase" expect /invite-accept-done 00/ expect /invite-reply 00 invalid/ send "contact-list" expect: /contact-list-(.*)/ capture done guard (done == "done") with p2: send "invite-accept $token $p1obase" expect /invite-accept-done $token/ expect /invite-reply $token contact/ send "contact-list" expect: /contact-list-item [a-z0-9#]+ Owner1 Owner1/ /contact-list-(.*)/ capture done guard (done == "done") with p2: send "invite-accept $token $p1obase" expect /invite-accept-done $token/ expect /invite-reply $token invalid/ send "contact-list" expect: /contact-list-item [a-z0-9#]+ Owner1 Owner1/ /contact-list-(.*)/ capture done guard (done == "done") with p1: expect /invite-accepted $token $p2id/ send "contact-list" expect: /contact-list-item [a-z0-9#]+ Contact2 Owner2/ /contact-list-(.*)/ capture done guard (done == "done") test InviteContactDelayed: let services = "contact,invite" subnet s1 subnet s2 spawn as p1 on s1 spawn as p2 on s2 send "create-identity Device1 Owner1" to p1 expect /create-identity-done ref ($refpat)/ from p1 capture p1id send "identity-info $p1id" to p1 expect /identity-info ref $p1id base ($refpat) owner ($refpat).*/ from p1 capture p1base, p1owner send "identity-info $p1owner" to p1 expect /identity-info ref $p1owner base ($refpat).*/ from p1 capture p1obase send "create-identity Device2 Owner2" to p2 expect /create-identity-done ref ($refpat)/ from p2 capture p2id send "start-server services $services" to p1 send "start-server services $services" to p2 send "invite-contact-create Contact2" to p1 expect from p1 /invite-contact-create-done ([^ ]+)/ capture token with p2: send "invite-accept $token $p1obase" expect /invite-accept-done $token/ send to p2 "peer-add ${p1.node.ip}" expect from p1: /peer ([0-9]+) addr ${p2.node.ip} 29665/ capture peer1_2 /peer $peer1_2 id Device2 Owner2/ expect from p2: /peer ([0-9]+) addr ${p1.node.ip} 29665/ capture peer2_1 /peer $peer2_1 id Device1 Owner1/ with p2: expect /invite-reply $token contact/ send "contact-list" expect: /contact-list-item [a-z0-9#]+ .*/ /contact-list-(.*)/ capture done guard (done == "done") with p1: expect /invite-accepted $token $refpat/ send "contact-list" expect: /contact-list-item [a-z0-9#]+ Contact2 .*/ /contact-list-(.*)/ capture done guard (done == "done") test InviteContactDiscovery: let services = "contact,invite,discovery" subnet sd subnet s1 subnet s2 spawn as pd on sd spawn as p1 on s1 spawn as p2 on s2 send "create-identity Discovery" to pd expect /create-identity-done ref $refpat.*/ from pd send "create-identity Device1 Owner1" to p1 expect /create-identity-done ref ($refpat)/ from p1 capture p1id send "identity-info $p1id" to p1 expect /identity-info ref $p1id base ($refpat) owner ($refpat).*/ from p1 capture p1base, p1owner send "identity-info $p1owner" to p1 expect /identity-info ref $p1owner base ($refpat).*/ from p1 capture p1obase send "create-identity Device2 Owner2" to p2 expect /create-identity-done ref ($refpat)/ from p2 capture p2id send "start-server services discovery" to pd send "start-server services $services" to p1 send "start-server services $services" to p2 for p in [ p1, p2 ]: with p: send "peer-add ${pd.node.ip}" expect: /peer 1 addr ${pd.node.ip} 29665/ /peer 1 id Discovery/ expect from pd: /peer [12] addr ${p.node.ip} 29665/ /peer [12] id .*/ send "invite-contact-create Contact2" to p1 expect from p1 /invite-contact-create-done ([^ ]+)/ capture token with p2: send "invite-accept $token $p1obase" expect /invite-accept-done $token/ expect /invite-reply $token contact/ send "contact-list" expect: /contact-list-item [a-z0-9#]+ .*/ /contact-list-(.*)/ capture done guard (done == "done") with p1: expect /invite-accepted $token $refpat/ send "contact-list" expect: /contact-list-item [a-z0-9#]+ Contact2 .*/ /contact-list-(.*)/ capture done guard (done == "done")