# # # add_dir "tests/ssh_agent" # # add_file "tests/ssh_agent/__driver__.lua" # content [42f9775d48564618da6af408c09d0b944572de8c] # # add_file "tests/ssh_agent/id_dsa" # content [c573c29477ae817dd0dba16792864243a21309b1] # # add_file "tests/ssh_agent/id_dsa.pub" # content [f80a2cda24e78ff8eb064ded8c1293fa28d4c1b1] # # add_file "tests/ssh_agent/id_rsa" # content [05e02baa78c114b83366cbe41f0392b86508f43a] # # add_file "tests/ssh_agent/id_rsa.pub" # content [c2fc49911a1ec3bcbfefcb0d1029326e7a799b73] # # add_file "tests/ssh_agent/id_rsa2" # content [7c62435cc287f8928d67a4984c3900d3c495edaf] # # add_file "tests/ssh_agent/id_rsa2.pub" # content [0a60e1ea8084572e3bbdf04a27d43318cd67a5a9] # ============================================================ --- tests/ssh_agent/__driver__.lua 42f9775d48564618da6af408c09d0b944572de8c +++ tests/ssh_agent/__driver__.lua 42f9775d48564618da6af408c09d0b944572de8c @@ -0,0 +1,132 @@ +include("/common/netsync.lua") + +-- with no monotone keys: +-- * (E) export monotone key +check(mtn("ssh_agent_export"), 1, false, false) + +mtn_setup() + +tkey = "address@hidden" + +-- with one monotone key: +-- * (ok) mtn ci with ssh-agent not running +addfile("some_file", "test") +check(mtn("ci", "--message", "commit msg"), 0, false, false) + +-- * (E) export key with -k that does not exist +check(mtn("--key", "address@hidden", "ssh_agent_export"), 1, false, false) + +-- * (ok) export key with -k that does exist +check(mtn("--key", "address@hidden", "ssh_agent_export"), 0, false, false) + +-- * (ok) export monotone key with passphrase +check(mtn("ssh_agent_export"), 0, false, false, tkey .. "\n" .. tkey .. "\n") + +-- * (ok) export monotone key without passphrase +check(mtn("ssh_agent_export"), 0, true, false) +-- io.output("id_monotone"):write(io.input("stdout"):read()) +rename("stdout", "id_monotone") +skip_if(not existsonpath("chmod")) +check({"chmod", "600", "id_monotone"}, 0, false, false) + +-- xfail_if +-- * Windows +-- * cygwin +skip_if(not existsonpath("ssh-agent")) + +function cleanup() + check({"kill", os.getenv("SSH_AGENT_PID")}, 0, false, false) +end + +check({"ssh-agent"}, 0, true, false) +for line in io.lines("stdout") do + for k, v in string.gmatch(line, "([%w_]+)=([%w/\.-]+)") do + set_env(k, v) + end +end + +-- * (ok) mtn ci with ssh-agent running with no keys +addfile("some_file2", "test") +check(mtn("ci", "--message", "commit msg"), 0, false, false) + +skip_if(not existsonpath("ssh-add")) + +-- * (N) mtn ci with no ssh key with --ssh-sign +addfile("some_file3", "test") +check(mtn("ci", "--message", "commit msg", "--ssh-sign"), 1, false, false) + +-- * (N) mtn ci with no ssh key with --ssh-sign=blah +addfile("some_file3", "test") +check(mtn("ci", "--message", "commit msg", "--ssh-sign=blah"), 1, false, false) + +-- * (N) mtn ci with no ssh key with --ssh-sign=only +addfile("some_file3_b", "test") +check(mtn("ci", "--ssh-sign=only", "--message", "commit msg"), 1, false, false) + +-- * (ok) mtn ci with no ssh key with --ssh-sign=yes +addfile("some_file4", "test") +check(mtn("ci", "--ssh-sign=yes", "--message", "commit msg"), 0, false, false) + +-- * (ok) mtn ci with no ssh key with --ssh-sign=no +addfile("some_file5", "test") +check(mtn("ci", "--ssh-sign=no", "--message", "commit msg"), 0, false, false) + +-- * (ok) mtn ci with no ssh key with --ssh-sign=check +addfile("some_file6", "test") +check(mtn("ci", "--ssh-sign=check", "--message", "commit msg"), 0, false, false) + +-- * (ok) mtn ci with ssh-agent running with non-monotone rsa key +check(get("id_rsa")) +check({"ssh-add", "id_rsa"}, 0, false, false) +addfile("some_file7", "test") +check(mtn("ci", "--message", "commit msg"), 0, false, false) + +-- * (ok) mtn ci with ssh-agent running with dss key +check({"ssh-add", "-D"}, 0, false, false) +check(get("id_dsa")) +check({"ssh-add", "id_dsa"}, 0, false, false) +addfile("some_file8", "test") +check(mtn("ci", "--message", "commit msg"), 0, false, false) + +-- * (ok) mtn ci with ssh-agent running with multiple non-monotone rsa keys +check({"ssh-add", "-D"}, 0, false, false) +check(get("id_rsa")) +check({"ssh-add", "id_rsa"}, 0, false, false) +check(get("id_rsa2")) +check({"ssh-add", "id_rsa2"}, 0, false, false) +addfile("some_file9", "test") +check(mtn("ci", "--message", "commit msg"), 0, false, false) + +-- * (ok) add password-less exported key with ssh-add +check({"ssh-add", "-D"}, 0, false, false) +check({"ssh-add", "id_monotone"}, 0, false, false) + +-- * (ok) mtn ci with ssh key without --ssh-sign +addfile("some_file10", "test") +check(mtn("ci", "--message", "commit msg"), 0, false, false) + +-- * (ok) mtn ci with ssh key with --ssh-sign=only +addfile("some_file11", "test") +check(mtn("ci", "--ssh-sign=only", "--message", "commit msg"), 0, false, false) + +-- * (ok) mtn ci with ssh key with --ssh-sign=yes +addfile("some_file12", "test") +check(mtn("ci", "--ssh-sign=yes", "--message", "commit msg"), 0, false, false) + +-- * (ok) mtn ci with ssh key with --ssh-sign=no +addfile("some_file13", "test") +check(mtn("ci", "--ssh-sign=no", "--message", "commit msg"), 0, false, false) + +-- * (ok) mtn ci with ssh key with --ssh-sign=check +addfile("some_file14", "test") +check(mtn("ci", "--ssh-sign=check", "--message", "commit msg"), 0, false, false) + +-- +-- with multiple monotone keys: +-- * (N) try to export monotone key without -k +-- * (ok) export monotone key with -k +-- * (ok) mtn ci with -k and with ssh-agent running with no keys +-- * (ok) mtn ci with -k and with ssh-agent running with one non-monotone rsa key +-- * (ok) mtn ci with -k and with ssh-agent running with same monotone key ex/imported key +-- * (ok) mtn ci with -k and with ssh-agent running with other monotone key ex/imported key +-- * (ok) mtn ci with -k and with ssh-agent running with both montone keys ex/imported key ============================================================ --- tests/ssh_agent/id_dsa c573c29477ae817dd0dba16792864243a21309b1 +++ tests/ssh_agent/id_dsa c573c29477ae817dd0dba16792864243a21309b1 @@ -0,0 +1,12 @@ +-----BEGIN DSA PRIVATE KEY----- +MIIBugIBAAKBgQCdev72VyiOTiZcoGvuRVN+oxl5/i7Wns820QYJH778mPDzpiN3 +/awoCPnEcgJrvdJaTzCUNsG6AuSM/VvA8sR6JFS08YbUVI/sjXFLSY+cILQvcc4b +S/E9xMQAY6dXe9czP9yS/No50c3NHsKeYWjchpyl++LJYuVjNR8r8ApxoQIVALHR +gbzXebmZhCGiDwNgUqxSO1yTAoGAOU0zXbyyODUtuG/TxXTUUZiS0Fpvez4jdqpX +wq6jdPIUlR5b+ee2nT3EvJSncXTusMD74vrn3V//FTsIgIJ/gvKZM3YjDnlGI4oG +4ip2rgaCwhAcHmuIlzNc1rmR39pQoXxro0t48ihKQvjq6X79E/Ilp1Pa27fwJ63Y +9abuDt8CgYBXB0Hg/ruNlHuRmbFkmGmHGAba/WvFRef0+RvDtF7pb8ImFMLsL/4+ +Jt6mkVRwwxmVDIkycKG/b1+UkBzWIET521sbql6TdaKDULwwqBkoggVxTO/b3/nD +esgO/ixOSUK2ldp6sf9HwlkhXn1kndqK4DP8GIts9Iheu7LnSeDZLgIUTht7MAMM +M3Isr+ahmYpjaCcbuz4= +-----END DSA PRIVATE KEY----- ============================================================ --- tests/ssh_agent/id_dsa.pub f80a2cda24e78ff8eb064ded8c1293fa28d4c1b1 +++ tests/ssh_agent/id_dsa.pub f80a2cda24e78ff8eb064ded8c1293fa28d4c1b1 @@ -0,0 +1 @@ +ssh-dss AAAAB3NzaC1kc3MAAACBAJ16/vZXKI5OJlyga+5FU36jGXn+LtaezzbRBgkfvvyY8POmI3f9rCgI+cRyAmu90lpPMJQ2wboC5Iz9W8DyxHokVLTxhtRUj+yNcUtJj5wgtC9xzhtL8T3ExABjp1d71zM/3JL82jnRzc0ewp5haNyGnKX74sli5WM1HyvwCnGhAAAAFQCx0YG813m5mYQhog8DYFKsUjtckwAAAIA5TTNdvLI4NS24b9PFdNRRmJLQWm97PiN2qlfCrqN08hSVHlv557adPcS8lKdxdO6wwPvi+ufdX/8VOwiAgn+C8pkzdiMOeUYjigbiKnauBoLCEBwea4iXM1zWuZHf2lChfGujS3jyKEpC+Orpfv0T8iWnU9rbt/Anrdj1pu4O3wAAAIBXB0Hg/ruNlHuRmbFkmGmHGAba/WvFRef0+RvDtF7pb8ImFMLsL/4+Jt6mkVRwwxmVDIkycKG/b1+UkBzWIET521sbql6TdaKDULwwqBkoggVxTO/b3/nDesgO/ixOSUK2ldp6sf9HwlkhXn1kndqK4DP8GIts9Iheu7LnSeDZLg== address@hidden ============================================================ --- tests/ssh_agent/id_rsa 05e02baa78c114b83366cbe41f0392b86508f43a +++ tests/ssh_agent/id_rsa 05e02baa78c114b83366cbe41f0392b86508f43a @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEoQIBAAKCAQEAr91dkMqLe+wiLLT3kOEel0KJJE6QN/1IoaIC7bbegNMiQ8+1 +mXF7j2kvHEAh3hTv3pjdo4sa3JuZPB8pcFNMYqQ1vC8u53nXkWGBFfw4D/EuMgfV +dAxKR4IH+AAgkrcpfaZC9FBzweiPPExnXPh4ZOcQ9nhCDZfPYgjqfu+XkXCMg7F9 +gmgnTaw37NyVXbEvBSKx17B2ghJJLhLfV0l/hrfpPRnRWATmeAPGCYrVP477USYc +DOZfk1MY6TBj0qrI5XMSsZtAo5ixZFtGtCiNkrr0q2o6GKfld5G95b64yjtuVpwb +/3ie1uVMg2QwxNdgaI5gTME95shmgkUBFceSCQIBIwKCAQAPEvlkLp490mlUSgaX +Y8DLIvXP6XoTbXtBDeL+bsKdU+z+f4SYH6uBUiicBX8+69oLw/W9j5SWkP6BfwON +SPfrMqWFKJ2ez+3n48k8ZhNvFKwwLI6jjAZd5pL4AALKvz4SFZC12wKbl5c/rscH ++ApRyqmuudnGppy/QpfBvMPZRATsNTWTnq2/uT+yDaN7yy5ppS0vE4Ylob6v7Zg6 +O5vi4SkaKn9GLXByAp2hYnM3+flE4AGFa0KyfBzd3a47C+LZAuLMjFxTFNvDmbBI +uyiercsj8XvavecP7Gpfb/Q6dpZcQPzors29kot2H/9LoYyENsLOm7OfnzBLS9wM +enOfAoGBANeEtmf9TnSMegGIP4nbHLjw4XCnuAqSlrOQjCMTiv4O/jCdhBxAxqRf +fZHGcKGSyyRDVNi9JtQb5DIhsZL9bLpnR1HZq+o9SgXd/xnoiNYEk63wdanBHEiK +zEguWGhXaPdZRRI535oJjO0MltFc6gvSGcOGXh/x+gajtUMONkNPAoGBANDl46R1 +iR0Ea6ScqJgzp1iZD4dgFKQ4ceTuXXbxsbwgzC5uUJLkgXeRElqS8vN1CiWU8TGQ +htaqcZYAZIrPCLfvtMAwNHadBfzxsHl7GDL9kQTCSJYKOWqIVJyzTC8eFZzJC4Mq +9vnUVVm/WBJK5e06oGaxSpkD4oHFcAwgp18nAoGAEnkW8vh0cGPP8YC0/TAJxrWP +qpIIde9Ovu8h9GDCxVG+BCrCLk6x8NT8InAYSF0KGQ0V5rEgldaBRiAlKds1NIyC +dLri2ZA5i3ltoyKPYs0xOst3zLjH6PX0QLOD66+4ijraCOBjn30pViWmhvlV48GN +LgQz9BwOHdOEkLgTR5kCgYEAyu3zFMny6Pz62mxMAZFDeqNQ6ehOkOZgAvYu6JME +bZw0D9jgjrIXXjUnxbNSaNgYfEeLN3Z0W4EAoFgnJ8HN9IJ1Enf4czlziAC6D5wm +IuexclZVJAnuogDHOSM0EIOf92Q3EbS1Z7hS6XgMaYqWNuh+j6TpYXF88xeRat3k +aw8CgYAgctuZfI1hJoA3iaYt4MRUG1ydzvp2Z+jU7ZzpvN5d6oM7P6o6TMoeYWPE +8LuPVGND3wES37gk/jaqI1JETUR96Ef+lBQScXFwZe6By+0dOKJj0f2Aovv7l8fp +zvyyCelp+ezvIA5ZkDm8kSWgLHSaRNZZ7eiUSoMADHEzOl/T5g== +-----END RSA PRIVATE KEY----- ============================================================ --- tests/ssh_agent/id_rsa.pub c2fc49911a1ec3bcbfefcb0d1029326e7a799b73 +++ tests/ssh_agent/id_rsa.pub c2fc49911a1ec3bcbfefcb0d1029326e7a799b73 @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAr91dkMqLe+wiLLT3kOEel0KJJE6QN/1IoaIC7bbegNMiQ8+1mXF7j2kvHEAh3hTv3pjdo4sa3JuZPB8pcFNMYqQ1vC8u53nXkWGBFfw4D/EuMgfVdAxKR4IH+AAgkrcpfaZC9FBzweiPPExnXPh4ZOcQ9nhCDZfPYgjqfu+XkXCMg7F9gmgnTaw37NyVXbEvBSKx17B2ghJJLhLfV0l/hrfpPRnRWATmeAPGCYrVP477USYcDOZfk1MY6TBj0qrI5XMSsZtAo5ixZFtGtCiNkrr0q2o6GKfld5G95b64yjtuVpwb/3ie1uVMg2QwxNdgaI5gTME95shmgkUBFceSCQ== address@hidden ============================================================ --- tests/ssh_agent/id_rsa2 7c62435cc287f8928d67a4984c3900d3c495edaf +++ tests/ssh_agent/id_rsa2 7c62435cc287f8928d67a4984c3900d3c495edaf @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEArqH2mkRNgM4tBMiRsNOO/UcfSXPiQllPHZXFaK8hCYu/inpZ +yYAN+9sOLWfq+eo2GTU0es3MeNddtOgOe+r5lIp0OJqw60lIRiNwlFdpFyRao7SF +hwQSjVxITReEt4TxshdAy7/v8zTdrLzsf7ggVZ26Nab2Fu3t9A8ijqNQu6E/JpUf +CeUzCRMYIAV66a+adVDEQdbxsWCjyf98EPqNtc+y1WjjJogCCn27KWdk0GFgnNq6 +PHVUalOS3rcifAtq4//9ozaFZIyeDn9PmaLUo9q4O21Y2I4HdeQiFMwJCwSGCkwX +Wg2bs27ep2Q5YhDuANMx8b7NygUNkbdR04stcQIBIwKCAQAJ+qBgljBQgM9fW+sR +ayy+BBBqmOhbkBMmQxKYRIWLhFQWiqYLg6kHE9Tspto6KqQBcMErlrs6Gu9pbFiZ +XeJgQm0KjH8jY0X1YRxgP4JZGAUt7Q7xxbfq0hLCk6EvDuk9YGoaRXts+7TlTJ/M +yLFj+mJpd0FDI4nwsGhf7BM969zQo8Mh8CL4jNx/NgB/fuK8UUlvGh8xHu/B538m +1Rc0hMYbtECn8rhFVEvmLihyjio2uQx/Cf4obZSNDRkdJIEcb9FQBBSgwRekdxwt +V5RsQDD+Dk0vTdneHVOYhC8HFsLij4Qitz+sfPT0SvhVm7M5Swlc4vrdbWQmZ6E2 +yjyDAoGBANUSh8Cx+spWdNlhJYfRRTw39xdmm85PYt435PFEFidpelpDr8YlDZ4a +2n6pNAlzk5W/wxCThYKS2Q32OoBuC9BpOZiDV4P/VmGIVKtH0Qm/p6EXqOzy/mWU +7oHgGwGW58Ksdxqweeac14BVtAl0peHkRhd9DIEXsHzlsYXJ2Bo7AoGBANHQ24eG +AAS0/SwMruphPd5dyyfC8gGGYGHQx1mlU1A1Qc2s5rGGYssyYAxEC5eIFegfcU75 +wPIT/N1EF2qQAMcJIZYnl5hoAx7IBjc4VSV9z73FyiUpvT0x9GlHp9B4DnDhBXRK +DNrMDJ+ekDYTRkux6/abLiaPWjgL8EbK3/BDAoGBAKRewH61Ly5f872ito1YS1pX +DxINU58nTEUGjAqTnA/GZbNYyWz4AzDS4xFAsx075uE8KMOlAJftoCC2oiiPaDMP +WFEU3RyvCB9ainWAi1CpynT0/qgpKqYibtk32lGu7U0Is6bf6QJbvC/NFdtonTk7 +EX/Vfqy6gNVgvCVhMa3VAoGANfPgrdIAATXas447m1rVZRDN1wY+OugKJ8f4v0fE +914m3R3U69IZZ3Nahs+rNZgFoha2vIldgBPErezwFBZmmZSiPI3Whkaht3VDbUj/ +87KjIiuLwGnRk2Sd7y+uzzTQg20QB/XIyow9wqUdxMMgtGDziI5NsiTcr1OG7aHh +0BECgYEAmG3MfZtLMcjJ1LbM2RQwiPJkd2N3vLPQoHaAcPY2Ttq3AuTDaDRpitn+ +CsCrffgJBj7yRTLDka4IPz/s/qffAGismjkF0elQUSrRET+RI7h3XVLBv0D0pKm7 +LFXnyi+EYgsOSOQ0pCq3N2RXB4XAGl0YB3ekhLCrlELxiHMA4kw= +-----END RSA PRIVATE KEY----- ============================================================ --- tests/ssh_agent/id_rsa2.pub 0a60e1ea8084572e3bbdf04a27d43318cd67a5a9 +++ tests/ssh_agent/id_rsa2.pub 0a60e1ea8084572e3bbdf04a27d43318cd67a5a9 @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEArqH2mkRNgM4tBMiRsNOO/UcfSXPiQllPHZXFaK8hCYu/inpZyYAN+9sOLWfq+eo2GTU0es3MeNddtOgOe+r5lIp0OJqw60lIRiNwlFdpFyRao7SFhwQSjVxITReEt4TxshdAy7/v8zTdrLzsf7ggVZ26Nab2Fu3t9A8ijqNQu6E/JpUfCeUzCRMYIAV66a+adVDEQdbxsWCjyf98EPqNtc+y1WjjJogCCn27KWdk0GFgnNq6PHVUalOS3rcifAtq4//9ozaFZIyeDn9PmaLUo9q4O21Y2I4HdeQiFMwJCwSGCkwXWg2bs27ep2Q5YhDuANMx8b7NygUNkbdR04stcQ== address@hidden