diff options
| author | Roman Smrž <roman.smrz@seznam.cz> | 2023-04-07 20:23:58 +0200 | 
|---|---|---|
| committer | Roman Smrž <roman.smrz@seznam.cz> | 2023-04-07 20:23:58 +0200 | 
| commit | 182dd4271c96305c69e0a950a4cdada38d39eac8 (patch) | |
| tree | 9755770ec613af036c39fea13666fc9ecbf4062c | |
| parent | e9ac27614961e541a5f990389cd6b7f849f68425 (diff) | |
Test: direct messages to peer
| -rw-r--r-- | src/main.cpp | 26 | ||||
| -rw-r--r-- | test/message.test | 29 | 
2 files changed, 55 insertions, 0 deletions
| diff --git a/src/main.cpp b/src/main.cpp index edf68d7..aa70c48 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,6 +1,7 @@  #include <erebos/attach.h>  #include <erebos/contact.h>  #include <erebos/identity.h> +#include <erebos/message.h>  #include <erebos/network.h>  #include <erebos/set.h>  #include <erebos/storage.h> @@ -270,6 +271,22 @@ void startServer(const vector<string> &)  	conts->onResponse(bind(confirmPairing, "contact-response", _1, _2, _3));  	services.push_back(move(conts)); +	auto dms = make_unique<DirectMessageService>(); +	dms->onUpdate([](const DirectMessageThread & thread, ssize_t, ssize_t) { +		ostringstream ss; + +		string name = "<unnamed>"; +		if (auto opt = thread.peer().name()) +			name = *opt; + +		ss << "dm-received" +			<< " from " << name +			<< " text " << thread.at(0).text() +			; +		printLine(ss.str()); +	}); +	services.push_back(move(dms)); +  	services.push_back(make_unique<SyncService>());  	server.emplace(*h, move(services)); @@ -498,6 +515,14 @@ void contactSetName(const vector<string> & args)  	printLine("contact-set-name-done");  } +void dmSendPeer(const vector<string> & args) +{ +	server->svc<DirectMessageService>().send( +			server->identity().finalOwner(), +			getPeer(args.at(0)).peer, +			args.at(1)); +} +  vector<Command> commands = {  	{ "store", store },  	{ "stored-generation", storedGeneration }, @@ -521,6 +546,7 @@ vector<Command> commands = {  	{ "contact-reject", contactReject },  	{ "contact-list", contactList },  	{ "contact-set-name", contactSetName }, +	{ "dm-send-peer", dmSendPeer },  };  } diff --git a/test/message.test b/test/message.test new file mode 100644 index 0000000..9567611 --- /dev/null +++ b/test/message.test @@ -0,0 +1,29 @@ +test DirectMessage: +	spawn as p1 +	spawn as p2 +	send "create-identity Device1 Owner1" to p1 +	send "create-identity Device2 Owner2" to p2 +	send "start-server" to p1 +	send "start-server" 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/ + +	for i in [1..2]: +		send "dm-send-peer $peer1_2 hello$i" to p1 +		expect /dm-received from Owner1 text hello$i/ from p2 + +	for i in [1..2]: +		send "dm-send-peer $peer1_2 hello$i" to p2 +		expect /dm-received from Owner2 text hello$i/ from p1 + +	for i in [3..4]: +		send "dm-send-peer $peer1_2 hello$i" to p1 +		expect /dm-received from Owner1 text hello$i/ from p2 +		send "dm-send-peer $peer1_2 hello$i" to p2 +		expect /dm-received from Owner2 text hello$i/ from p1 |