| 24 | } |
| 25 | |
| 26 | BOOST_AUTO_TEST_CASE(util_SplitTorReplyLine) |
| 27 | { |
| 28 | // Data we should receive during normal usage |
| 29 | CheckSplitTorReplyLine( |
| 30 | "PROTOCOLINFO PIVERSION", |
| 31 | "PROTOCOLINFO", "PIVERSION"); |
| 32 | CheckSplitTorReplyLine( |
| 33 | "AUTH METHODS=COOKIE,SAFECOOKIE COOKIEFILE=\"/home/x/.tor/control_auth_cookie\"", |
| 34 | "AUTH", "METHODS=COOKIE,SAFECOOKIE COOKIEFILE=\"/home/x/.tor/control_auth_cookie\""); |
| 35 | CheckSplitTorReplyLine( |
| 36 | "AUTH METHODS=NULL", |
| 37 | "AUTH", "METHODS=NULL"); |
| 38 | CheckSplitTorReplyLine( |
| 39 | "AUTH METHODS=HASHEDPASSWORD", |
| 40 | "AUTH", "METHODS=HASHEDPASSWORD"); |
| 41 | CheckSplitTorReplyLine( |
| 42 | "VERSION Tor=\"0.2.9.8 (git-a0df013ea241b026)\"", |
| 43 | "VERSION", "Tor=\"0.2.9.8 (git-a0df013ea241b026)\""); |
| 44 | CheckSplitTorReplyLine( |
| 45 | "AUTHCHALLENGE SERVERHASH=aaaa SERVERNONCE=bbbb", |
| 46 | "AUTHCHALLENGE", "SERVERHASH=aaaa SERVERNONCE=bbbb"); |
| 47 | |
| 48 | // Other valid inputs |
| 49 | CheckSplitTorReplyLine("COMMAND", "COMMAND", ""); |
| 50 | CheckSplitTorReplyLine("COMMAND SOME ARGS", "COMMAND", "SOME ARGS"); |
| 51 | |
| 52 | // These inputs are valid because PROTOCOLINFO accepts an OtherLine that is |
| 53 | // just an OptArguments, which enables multiple spaces to be present |
| 54 | // between the command and arguments. |
| 55 | CheckSplitTorReplyLine("COMMAND ARGS", "COMMAND", " ARGS"); |
| 56 | CheckSplitTorReplyLine("COMMAND EVEN+more ARGS", "COMMAND", " EVEN+more ARGS"); |
| 57 | } |
| 58 | |
| 59 | static void CheckParseTorReplyMapping(std::string input, std::map<std::string,std::string> expected) |
| 60 | { |
nothing calls this directly
no test coverage detected