diff options
author | azul <azul@riseup.net> | 2018-01-28 08:37:45 -0800 |
---|---|---|
committer | azul <azul@riseup.net> | 2018-01-28 08:37:45 -0800 |
commit | 19606ec31d7a1606b5e9fc4df2440a6b470e9d97 (patch) | |
tree | 3a1c851033c46e1a140de3e3b5a17ad4b7f2647e /test/unit/keyring_test.rb | |
parent | f77e48b1ffdc2350c454ced2fe1eba6446f7bc76 (diff) | |
parent | 54653f75cf44890310a06c3a8a6be59625629d2a (diff) |
Merge branch 'feature/different-keytypes' into 'master'
initial feature description for key uploads
See merge request leap/webapp!58
Diffstat (limited to 'test/unit/keyring_test.rb')
-rw-r--r-- | test/unit/keyring_test.rb | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/test/unit/keyring_test.rb b/test/unit/keyring_test.rb new file mode 100644 index 0000000..c7df63e --- /dev/null +++ b/test/unit/keyring_test.rb @@ -0,0 +1,100 @@ +require 'test_helper' + +class KeyringTest < ActiveSupport::TestCase + + test 'create initial key' do + keyring.create 'type', 'value' + assert_equal 'value', keyring.key_of_type('type')['value'] + end + + test 'raise on creating twice' do + keyring.create 'type', 'value' + assert_raises Keyring::Error do + keyring.create 'type', 'value' + end + end + + test 'update with new key' do + keyring.create 'type', 'value' + initial_rev = keyring.key_of_type('type')['rev'] + keyring.update 'type', rev: initial_rev, value: 'new value' + assert_equal 'new value', keyring.key_of_type('type')['value'] + end + + test 'raise on updating missing key' do + assert_raises Keyring::NotFound do + keyring.update 'type', rev: nil ,value: 'new value' + end + assert_nil keyring.key_of_type('type') + end + + test 'raise on updating without rev' do + keyring.create 'type', 'value' + assert_raises Keyring::Error do + keyring.update 'type', rev: nil ,value: 'new value' + end + assert_equal 'value', keyring.key_of_type('type')['value'] + end + + test 'raise on updating with wrong rev' do + keyring.create 'type', 'value' + assert_raises Keyring::Error do + keyring.update 'type', rev: 'wrong rev', value: 'new value' + end + assert_equal 'value', keyring.key_of_type('type')['value'] + end + + test 'delete key' do + keyring.create 'type', 'value' + initial_rev = keyring.key_of_type('type')['rev'] + keyring.delete 'type', rev: initial_rev + assert_nil keyring.key_of_type('type') + end + + test 'raise on deleting missing key' do + assert_raises Keyring::NotFound do + keyring.delete 'type', rev: nil + end + end + + test 'raise on deleting without rev' do + keyring.create 'type', 'value' + assert_raises Keyring::Error do + keyring.delete 'type', rev: nil + end + assert_equal 'value', keyring.key_of_type('type')['value'] + end + + test 'raise on deleting with wrong rev' do + keyring.create 'type', 'value' + assert_raises Keyring::Error do + keyring.delete 'type', rev: 'wrong rev' + end + assert_equal 'value', keyring.key_of_type('type')['value'] + end + + + protected + + def keyring + @keyring ||= Keyring.new(teststorage) + end + + def teststorage + @teststorage ||= Hash.new.tap do |dummy| + def dummy.set_key(type, value) + self[type] = value + end + + def dummy.keys + self + end + + def dummy.delete_key(type) + self.delete(type) + end + + def dummy.save; end + end + end +end |