1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
#
# Copyright (c) 2015 Paul Fariello <paul@fariello.eu>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
import unittest
import kptest
class TestEditCommand(kptest.KPTestCase):
def test_edit_is_successful(self):
# Given
self.editor('env', env="But a RocknRolla, oh, he's different. Why? Because a real RocknRolla wants the fucking lot.")
self.create("test")
self.editor('save')
# When
self.edit("test")
# Then
self.assertSafeExists("test")
self.assertSafeIsBigEnough("test")
self.assertClearTextExists()
self.assertClearTextEquals("But a RocknRolla, oh, he's different. Why? Because a real RocknRolla wants the fucking lot.")
def test_edit_only_password_is_successful(self):
# Given
self.editor('date')
self.create("test")
# When
self.edit("test", password="RocknRolla", options=["-p"])
# Then
self.cat("test", options=["-p"])
self.assertStdoutEquals("RocknRolla")
def test_edit_only_metadata_is_successful(self):
# Given
self.editor('date')
self.create("test")
self.editor('env', env="Oh, you are something special, Mr. Johnny Quid.")
# When
self.edit("test", password=None, options=["-m"])
# Then
self.cat("test")
self.assertStdoutEquals("Oh, you are something special, Mr. Johnny Quid.")
def test_edit_with_empty_password(self):
# Given
self.editor('date')
self.create("test", password="RocknRolla")
# When
self.edit("test", password="", options=["-p"], yesno="n")
# Then
self.cat("test", options=["-p"])
self.assertStdoutEquals("RocknRolla")
def test_edit_with_empty_password_erased(self):
# Given
self.editor('date')
self.create("test", password="RocknRolla")
# When
self.edit("test", password="", options=["-p"], yesno="y")
# Then
self.cat("test", options=["-p"])
self.assertStdoutEquals()
def test_edit_with_password_generation_is_successful(self):
# Given
self.editor('save')
self.create("test", password="RocknRolla")
# When
self.edit("test", options=["-g", "-l", "42"], password=None)
# Then
self.cat("test", options=["-p"])
passwd = self.stdout.splitlines()[1]
self.assertNotEqual(passwd, "RocknRolla")
self.assertEqual(len(passwd), 42)
def test_edit_opened_safe_is_successful(self):
# Given
self.start_agent()
self.editor('date')
self.create("test", password="RocknRolla", options=["-o"])
self.editor('env', env="But a RocknRolla, oh, he's different. Why? Because a real RocknRolla wants the fucking lot.")
# When
self.edit("test", password="42")
# Then
self.cat("test", master=None, options=["-pm"])
self.assertStdoutEquals("42",
"But a RocknRolla, oh, he's different. Why? Because a real RocknRolla wants the fucking lot.")
# When
self.stop_agent()
self.cat("test", options=["-pm"])
self.assertStdoutEquals("42",
"But a RocknRolla, oh, he's different. Why? Because a real RocknRolla wants the fucking lot.")
def test_edit_in_sub_workspace_is_successful(self):
# Given
self.init("sub", master="sub master password")
self.editor('env', env="But a RocknRolla, oh, he's different. Why? Because a real RocknRolla wants the fucking lot.")
self.create("sub/test", master="sub master password")
self.editor('save')
# When
self.edit("sub/test", master="sub master password")
# Then
self.assertSafeExists("sub/test")
self.assertSafeIsBigEnough("sub/test")
self.assertClearTextExists()
self.assertClearTextEquals("But a RocknRolla, oh, he's different. Why? Because a real RocknRolla wants the fucking lot.")
if __name__ == '__main__':
unittest.main()
|