summaryrefslogtreecommitdiff
path: root/test/unit/keyring_test.rb
diff options
context:
space:
mode:
authorazul <azul@riseup.net>2018-01-28 08:37:45 -0800
committerazul <azul@riseup.net>2018-01-28 08:37:45 -0800
commit19606ec31d7a1606b5e9fc4df2440a6b470e9d97 (patch)
tree3a1c851033c46e1a140de3e3b5a17ad4b7f2647e /test/unit/keyring_test.rb
parentf77e48b1ffdc2350c454ced2fe1eba6446f7bc76 (diff)
parent54653f75cf44890310a06c3a8a6be59625629d2a (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.rb100
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