duse 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/.gitignore +3 -0
- data/.travis.yml +3 -0
- data/Gemfile +5 -2
- data/README.md +12 -3
- data/bin/duse +2 -1
- data/config/warble.rb +183 -0
- data/duse.gemspec +2 -0
- data/lib/duse.rb +1 -0
- data/lib/duse/cli.rb +1 -0
- data/lib/duse/cli/cli_config.rb +2 -0
- data/lib/duse/cli/folder.rb +18 -0
- data/lib/duse/cli/folder_add.rb +24 -0
- data/lib/duse/cli/folder_list.rb +17 -0
- data/lib/duse/cli/folder_remove.rb +19 -0
- data/lib/duse/cli/folder_update.rb +18 -0
- data/lib/duse/cli/register.rb +1 -1
- data/lib/duse/cli/secret.rb +2 -0
- data/lib/duse/cli/secret_add.rb +5 -0
- data/lib/duse/cli/secret_list.rb +1 -3
- data/lib/duse/cli/secret_tree.rb +15 -0
- data/lib/duse/cli/secret_update.rb +2 -1
- data/lib/duse/client/folder.rb +34 -0
- data/lib/duse/client/secret.rb +13 -2
- data/lib/duse/encryption.rb +32 -8
- data/lib/duse/version.rb +1 -1
- data/spec/cli/cli_config_spec.rb +1 -1
- data/spec/cli/commands/account_spec.rb +1 -1
- data/spec/cli/commands/config_spec.rb +1 -1
- data/spec/cli/commands/login_spec.rb +2 -2
- data/spec/cli/commands/register_spec.rb +1 -1
- data/spec/cli/commands/secret_spec.rb +23 -6
- data/spec/client/secret_spec.rb +20 -32
- data/spec/client/user_spec.rb +3 -4
- data/spec/encryption_spec.rb +10 -0
- data/spec/spec_helper.rb +7 -3
- data/spec/support/key_helper.rb +27 -0
- data/spec/support/mock_api.rb +93 -111
- metadata +26 -2
data/spec/client/user_spec.rb
CHANGED
@@ -8,7 +8,7 @@ RSpec.describe Duse::Client::User do
|
|
8
8
|
'id' => 2,
|
9
9
|
'username' => 'flower-pot',
|
10
10
|
'email' => 'flower-pot@example.org',
|
11
|
-
'public_key' =>
|
11
|
+
'public_key' => user_public_key.to_s,
|
12
12
|
'url' => 'https://example.com/users/2'
|
13
13
|
}.to_json
|
14
14
|
|
@@ -33,19 +33,18 @@ RSpec.describe Duse::Client::User do
|
|
33
33
|
describe '.create' do
|
34
34
|
it 'creates correct user entity from json create response' do
|
35
35
|
stub_create_user
|
36
|
-
public_key = OpenSSL::PKey::RSA.new("-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCftZvHkB6uKWVDvrIzmy2p496H\nv9PD/hhRk+DSXcE/CPtRmvYZzbWbbBup9hkvhyH/P1O5EF8KSZm4Cdnz6p37idTe\nNdlaH9cRFV2wc2A/hbg2kaISxrDxUqRbywBE9NOBSjXu2wRpy0TMo85eM2A0E2ET\n2XM6tZcuwFULX6bl8QIDAQAB\n-----END PUBLIC KEY-----\n")
|
37
36
|
|
38
37
|
user = Duse::User.create(
|
39
38
|
username: 'flower-pot',
|
40
39
|
email: 'flower-pot@example.org',
|
41
40
|
password: 'Passw0rd!',
|
42
41
|
password_confirmation: 'Passw0rd!',
|
43
|
-
public_key:
|
42
|
+
public_key: user_public_key.to_s
|
44
43
|
)
|
45
44
|
|
46
45
|
expect(user.username).to eq 'flower-pot'
|
47
46
|
expect(user.email).to eq 'flower-pot@example.org'
|
48
|
-
expect(user.public_key.to_s).to eq
|
47
|
+
expect(user.public_key.to_s).to eq user_public_key.to_s
|
49
48
|
end
|
50
49
|
end
|
51
50
|
|
data/spec/spec_helper.rb
CHANGED
@@ -23,14 +23,17 @@ unless ENV['CI']
|
|
23
23
|
end
|
24
24
|
|
25
25
|
if ENV['CI']
|
26
|
-
require '
|
27
|
-
|
26
|
+
require 'webmock'
|
27
|
+
WebMock.disable_net_connect!(:allow => "codeclimate.com")
|
28
|
+
require 'codeclimate-test-reporter'
|
29
|
+
CodeClimate::TestReporter.start
|
28
30
|
end
|
29
31
|
|
30
32
|
require 'fileutils'
|
31
33
|
require 'fakefs/spec_helpers'
|
32
34
|
|
33
35
|
require 'support/helpers'
|
36
|
+
require 'support/key_helper'
|
34
37
|
require 'support/mock_api'
|
35
38
|
require 'duse'
|
36
39
|
require 'duse/cli'
|
@@ -49,8 +52,9 @@ RSpec.configure do |config|
|
|
49
52
|
end
|
50
53
|
|
51
54
|
config.include Helpers
|
55
|
+
config.include KeyHelper
|
52
56
|
config.include MockAPI
|
53
|
-
config.include FakeFS::SpecHelpers
|
57
|
+
config.include FakeFS::SpecHelpers, :fs => :fake
|
54
58
|
|
55
59
|
config.before :each do
|
56
60
|
Duse.config = nil
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'openssl'
|
2
|
+
|
3
|
+
module KeyHelper
|
4
|
+
def server_private_key
|
5
|
+
OpenSSL::PKey::RSA.new "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEAvyvyAf7lnVx9eQcAS7JLYRHrqJJe51rAdanaUiiy8eek2Iyh\n6JG551EK7x4n9/Y7r0fW2sNmy+Bp3FpL8E/pcxutggTWCnUQUvXmEEm5qZ1KOIIl\nEQNp5glToAenJ7pxotJsTMlVw4tizsKScenc8w+02wpcmWuzWKjoY/G5KV33UDz/\nLxVo1RJdJp94JiL/OinIl+uk+Vf7VZj/E8g/7DyXIuiBosVpj9E9T4kpxs3/7RmU\nfDzUisVq0UvgflRjvP1V+1KdpNnjVB+H08mbSVO6yf2YOcrPDRa3pgz7PIr225QJ\n+HmVjPTg5VAy7rUxhCK+q+HNd2oz35zA70SOpQIDAQABAoIBAQCHXFJrX1St64Nc\nYryu3HvLK6k1Hw7bucJ0jePsMK0j4+Uw/8LUrfp380ZOsYeTZ2IzZiaXl6v9x9St\nFbKXYb3mpz5fxZTYqrL4Suyvs8QmeRzIjj44obYmD4yKz2BoHPfBVkUgyZ5Uayl3\nRQX0aqbr478nKVsPttayfEawHcQBqTHPE9dfavuT14/64iqkrIya4ejFVXd1vYG2\nx+oKedPAnD3jr9foEHTqj1D4AeORwonbxFllh3K91IcabV3zdIZH0ICvYaaryceU\n2npp1H0mqETMZ97o3uMo8S5AEK7TsyB26WlD1IUSfwaP3apkog2WMNvgU4c2OD/q\nX8l3mA2BAoGBAOHGaZtBXQUSUD95eQAG/03F1Non21dD+aUtMbDn1Li6aOD+C+a4\ncJVZ+D2nMMIoQz3nEBIVoEdK4prugQXZJ87pvWwpZ/afRmTNSYWHnJmmg5/rvrZ5\nuvR17DwmS5ucTVOWcdryoG0O5KZqyAnpshLecr5PALY+cfG+fjo6KxNpAoGBANjD\noeFiSZ5a9aS8QR4pHkHz4zjDh/JglN4F7QFSLBLdnn54HHguq8oyg6VXQVMv6IA6\nnFv4wcypyjO+wRktwW+pklpoIuPaTNbHykBTjWD+Ew82iEIzh2m9j43UdGM+Kfmh\nGUSCYorwZG41v2GyepnCDWC5H3RslmxZ6+e9XcXdAoGALz3GAS93GEWRtwZi1Cei\nqhJYDGHEmojlprNDL4IC17hhk5p0wQ0cuZN+xt/B6w5jq4M6sJ4H0IMR0VtQcfnT\nQ49TDFvJnigLobH2zVLn6JqX9hFs8V+dR+OYz6kvrtrQr0nOfwK/oLI6E7xKKRDW\nKu6S0dFUE84TJ4M1hFeBhekCgYEAnYX9vBZ7PXMIlECiadKjxHYCKBwgTUlWpcpU\no+MdWFBpf6q1tbjk6rmu5Zb1SAjGw3jUbBnobFzvLo9vMGcJ7aWjT8PhpwfbUzI5\njmmpklTRcPrGJqXfwD4bdoxwUDa6tkgWXq0KA8ISmezBObREWDynECU38JmA7xih\n0PTSkpkCgYBUUASKsz2ThzQiAU+Ivu2Y/QON78N0ZyQ/0kDhxZ8AUnbtGZAOq5pV\nRMj053t5oJMr2eWkMZ5aBYmjo0Uy4vrRCV6SXrlAs3YsN1mh1P+xGRRmX99xwalJ\n6dQaTBdtQ33MhY0+17EXr6WUGRZHIcFM6uGa32MKSmeqkATuV7eyzg==\n-----END RSA PRIVATE KEY-----\n"
|
6
|
+
end
|
7
|
+
|
8
|
+
def server_public_key
|
9
|
+
OpenSSL::PKey::RSA.new "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvyvyAf7lnVx9eQcAS7JL\nYRHrqJJe51rAdanaUiiy8eek2Iyh6JG551EK7x4n9/Y7r0fW2sNmy+Bp3FpL8E/p\ncxutggTWCnUQUvXmEEm5qZ1KOIIlEQNp5glToAenJ7pxotJsTMlVw4tizsKScenc\n8w+02wpcmWuzWKjoY/G5KV33UDz/LxVo1RJdJp94JiL/OinIl+uk+Vf7VZj/E8g/\n7DyXIuiBosVpj9E9T4kpxs3/7RmUfDzUisVq0UvgflRjvP1V+1KdpNnjVB+H08mb\nSVO6yf2YOcrPDRa3pgz7PIr225QJ+HmVjPTg5VAy7rUxhCK+q+HNd2oz35zA70SO\npQIDAQAB\n-----END PUBLIC KEY-----\n"
|
10
|
+
end
|
11
|
+
|
12
|
+
def user_private_key
|
13
|
+
OpenSSL::PKey::RSA.new "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAmMm3Ovh7gU0rLHK4NiHhWaYRrV9PH6XtHqV0GoiHH7awrjVk\nT1aZiS+nlBxckfuvuQjRXakVCZh18UdQadVQ7FLTWMZNoZ/uh41g4Iv17Wh1I3Fg\nqihdm83cSWvJ81qQCVGBaKeVitSa49zT/MmooBvYFwulaqJjhqFc3862Rl3WowzG\nVqGf+OiYhFrBbnIqXijDmVKsbqkG5AILGo1nng06HIAvMqUcGMebgoju9SuKaR+C\n46KT0K5sPpNw/tNcDEZqZAd25QjAroGnpRHSI9hTEuPopPSyRqz/EVQfbhi0Lbkd\nDW9S5ECw7GfFPFpRp2239fjl/9ybL6TkeZL7AwIDAQABAoIBAQCGSVyLLxRWC/4z\nPc0cfuCyy5xj1g4UEeD7+421OGQTAp39L54vgTzG76SJL/hIsn660b46ZL7BxUd8\nPiK2Mi/C1fU95GUc9hVO/Hq2QS1wcUvrT94XEA1eQCwqN9uy0Nkh54om8owkDkLo\nnRGQ76kOuApQDwNfWsTA8phPeT6JTtr+2K2yc0H4G5G0+py2GDclq56E99SljAqq\nwjFKGazqF0pxJvqLRCR9uVt0FgrRANOLGvxPMNZtnkVBVHmXs1iRD7BUALfESGS1\nHXZxjvD487E2h0Vjkli7rqnu6FZNgQ8Mq5TOfIm5i04LeGCgSTNP9sw7vdZgaYgT\nDPK9BIlZAoGBAMlhenDUOkT1dm28CjGCkygM1kUgDTQDLyBXW/JacotRp3GVZLr2\nV/2rZ3JPxva0cjjs3X4q/CxYsHvqI/ImXbsTBOYIT1/y1fgmXvN6AbiVW5Qne1UD\nneEGqCyB6YfKV2/8CX5Ru01Ay1EYVQDU4APkR1P4H38CuTMeu8SHK/BHAoGBAMI6\nR6TeEIdLprWRmUKU8Iuiwwm0SVxle2trSj6mknsJ93sK7gQkoKNzw0qwZdM6ApKH\nbJo/LiwiZ1Znx1NOyDsKT/ET6CSl59jOBuSUoxqTJ8XvrWlSD8pkbOJ2zWF8WqFR\ncC74bNFgd+n0tftR/7dwkriebITrp5IpF6P2Z9llAoGAAqO3ciEl/l9lRPzw+UMn\n4J+Cc3d/FM5x4K+kceHDnJXeZvu5TUYLUzTa70Gibvtgf+SC5rNziLVE4urnu7XL\nBreyGb3EJJLPQShnmDNiMGQsxh1aXXvlptxqeeLeB7ycNsiL607w8ItH3vE9s/wW\nT5a/ZJdc+lIz0Tq25VWMOuMCgYAejVZZu8izz5WguA94pr8T5/1wGFj13MzGP/FE\n26TtD8tLIpQAONa//2S36fmKeXSQIhdWSBv2O08wC1ESbLEYgG3EyVHZ+fL3aqkw\n6aSieIVoIGSRzaPIPXXXRcLW093ZxFq2OMO9R8R1G9ZIe0STUXTy75C4c+0/E5Gx\nbAA39QKBgDLjtjmG3nJGpQuaftAAjJR+AcA3svSdVug7w5k6D+lxBeM/x4pGP9z4\nkdOrqeD6bv1cctouVVywK/ZQ8dyLczJoGfJIlCvacI1L7fyVUpBp2Lby/uwYMd5w\ngswew+6Xnvtx15SirvYQmDRzA71KBSA4GxpaFwthRIxIwn881m5U\n-----END RSA PRIVATE KEY-----\n"
|
14
|
+
end
|
15
|
+
|
16
|
+
def user_public_key
|
17
|
+
OpenSSL::PKey::RSA.new "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmMm3Ovh7gU0rLHK4NiHh\nWaYRrV9PH6XtHqV0GoiHH7awrjVkT1aZiS+nlBxckfuvuQjRXakVCZh18UdQadVQ\n7FLTWMZNoZ/uh41g4Iv17Wh1I3Fgqihdm83cSWvJ81qQCVGBaKeVitSa49zT/Mmo\noBvYFwulaqJjhqFc3862Rl3WowzGVqGf+OiYhFrBbnIqXijDmVKsbqkG5AILGo1n\nng06HIAvMqUcGMebgoju9SuKaR+C46KT0K5sPpNw/tNcDEZqZAd25QjAroGnpRHS\nI9hTEuPopPSyRqz/EVQfbhi0LbkdDW9S5ECw7GfFPFpRp2239fjl/9ybL6TkeZL7\nAwIDAQAB\n-----END PUBLIC KEY-----\n"
|
18
|
+
end
|
19
|
+
|
20
|
+
def other_private_key
|
21
|
+
OpenSSL::PKey::RSA.new "-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA0Y1b9awjW0nshQXk64uO1v+GYliBH8ogu6QjQDn0eoLIfcOi\nbrotbhJuSS0G46yOhboOCZQWrwyqi4MYtTMBH3ITTmNkhzOkdRXLJGJXXv3OCYR0\nJ+PdCXbrtfYkvqOgyJE4RAR6YBEO/XcQk0EmE4IDFq22Aar7MxSjrLk17LX9mTif\ndzg1xdxX5myX4NrXGVWTWKeS5klLWCe9AigQ35b8c2Zyehx6jxHk+jt5CguMC9Vq\nSyJobKdu926W4k2AgzWRdZh0EvCg2wWjlYjchJEnrpHLeJxGMEThPoGqgQWiG5BB\nYIl9kx1vg1QZmS2biS6djGpGIn8l8PN30+QS5QIDAQABAoIBAQC3pXYRMOHvkDKr\nRcYgs7bkLx47tCq9jGvxZmDKWcArWdCRf1EsTxefXqGumbpu73wcMDk7JcBXevc/\nuw19R4zVXSkUSsEASD75qbbVVSYTBsV5y83sY6MEN2dNmcEMHeS7waEY4v/Ij0qe\n0akCFFdlQ0ynpGdcwNbTJmRm7A4ZOrLMoVTJaI/enRJcQSEzBkQ/oHpMlcDBoFJq\nIB61tfm5JD6IPM2BKlXvSOpV8ItPpJYG4PJxUDT7YEhrXy0vGHKyjaKoE04EdLvI\nvfEkP67if9BTR0tMP+dxaeZ8c9ydGCHC9p1rDJMdpGoS4gwBLueEkDxNEchtrf5p\nM+fPan5lAoGBAPR6YLODhK6YIl6M1EMxbXlytnwAwr5vJvMmRBiVyXLnXKoVFI8V\nHkPsjO6wUH8OjZjEflteoo7Co2pawvfUuPhtHPrWVpW8tAdIELGfazOnsdxvcIAJ\nTUB7tHSS/WeWEcsloCAOTb+6wjZdah9CDly95madbI1IYtz9s0Z/TPMXAoGBANtt\nmhAIxNs/8X9lDWbkbQRWdIr/sb6LCQcBN/Jc5mdz9Kp3sXu2Ag4aRsSPbbtu+XBY\nkl+aSIIYWlHJJE1kKKMDJ+cEpCdx8+kdhz/NIfAdbo3RsZ3cDy7ZM28iHNO4LVRX\ndu/VlBrm4CXCBdlug4+GhZK7on1YnPtrqldV7RdjAoGBALb6nUPejMEMdrTjnL8J\n0JEUjYZ0H03e7X0RR+hKu7L3fUCDdJa+zJ8z/itr5WOjZdFQR+5k/y/wd9TTR5es\nLCErsYQARl/eE7RbeLsowVixC4scEUyTKbG4pNCXb3hHNtwgNh+n9QMqac+8zP/G\nNe+t5jMpYiTAZ9ZVQAfkoZhTAoGAezIG7Hev5pT5Bph6tMkM+AF+P0gdyCgRcnBZ\ns+Y6qdytgkPfTuC6OKbCErugVTqSK2RfEfPyP7BijUaL7jOMqTEtZwPxEgBle/1L\nISQPqNstZcxUl5ekop3pxbx2SNw//vl4WmEkXRJAyJItbI0iqiNRvTdBnHRy9qnV\nImGo0pcCgYEA5SJk+Fx/9bJXyKEJIp/Q+Zjq5Oc/4Th9b8ydSBCeksoz9qF+5pWq\nWpDXCa1fdLUxXK+cG39VxF3w2pok5NASeTgF+0myUofc8z/+K/qCDCn8wbojCZpi\nJwB1XlU0M+ZV9emAI1L1DGtoz7i8LT0uG8U5wWFZNljI3GXhfOYpWD4=\n-----END RSA PRIVATE KEY-----\n"
|
22
|
+
end
|
23
|
+
|
24
|
+
def other_public_key
|
25
|
+
OpenSSL::PKey::RSA.new "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Y1b9awjW0nshQXk64uO\n1v+GYliBH8ogu6QjQDn0eoLIfcOibrotbhJuSS0G46yOhboOCZQWrwyqi4MYtTMB\nH3ITTmNkhzOkdRXLJGJXXv3OCYR0J+PdCXbrtfYkvqOgyJE4RAR6YBEO/XcQk0Em\nE4IDFq22Aar7MxSjrLk17LX9mTifdzg1xdxX5myX4NrXGVWTWKeS5klLWCe9AigQ\n35b8c2Zyehx6jxHk+jt5CguMC9VqSyJobKdu926W4k2AgzWRdZh0EvCg2wWjlYjc\nhJEnrpHLeJxGMEThPoGqgQWiG5BBYIl9kx1vg1QZmS2biS6djGpGIn8l8PN30+QS\n5QIDAQAB\n-----END PUBLIC KEY-----\n"
|
26
|
+
end
|
27
|
+
end
|
data/spec/support/mock_api.rb
CHANGED
@@ -1,7 +1,75 @@
|
|
1
1
|
require 'webmock/rspec'
|
2
2
|
require 'json'
|
3
|
+
require 'uri'
|
4
|
+
require 'support/key_helper'
|
3
5
|
|
4
6
|
module MockAPI
|
7
|
+
METHOD_STATUS_DEFAULT = { get: 200, put: 200, patch: 200, post: 201, delete: 204 }
|
8
|
+
include KeyHelper
|
9
|
+
|
10
|
+
class RequestStub
|
11
|
+
def initialize(http_method, route)
|
12
|
+
@http_method = http_method
|
13
|
+
@url = URI.join('https://example.com/', route)
|
14
|
+
@status = METHOD_STATUS_DEFAULT[http_method]
|
15
|
+
@request_headers = { 'Accept'=>'application/vnd.duse.1+json' }
|
16
|
+
@response_headers = {}
|
17
|
+
@body = nil
|
18
|
+
end
|
19
|
+
|
20
|
+
def body(body)
|
21
|
+
@body = body
|
22
|
+
@body = @body.to_json if @body.is_a?(Hash) || @body.is_a?(Array)
|
23
|
+
self
|
24
|
+
end
|
25
|
+
|
26
|
+
def activate
|
27
|
+
WebMock.stub_request(@http_method, @url).
|
28
|
+
with(headers: @request_headers).
|
29
|
+
to_return(status: @status, body: @body, headers: @response_headers)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
[:get, :put, :patch, :post, :delete].each do |http_method|
|
34
|
+
define_method "stub_#{http_method.to_s}" do |route|
|
35
|
+
RequestStub.new(http_method, route)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def secret_hash
|
40
|
+
{
|
41
|
+
'id' => 1,
|
42
|
+
'title' => 'test',
|
43
|
+
'cipher_text' => "oMmo5ptscZJzzgTMkTQ63A==\n",
|
44
|
+
'shares' => [
|
45
|
+
{
|
46
|
+
'last_edited_by_id' => 2,
|
47
|
+
"content" => "CyNrNgp0ywDymkLkkU2kEU3oTZM65CzvuX9qbDOu0Yee4iAVI7+tIPXzaH/T\na47Lqq59eoQimzPJJYW6FGSkG7DRVZ5coZRIgmt+1nPAyCdTYEcJ9Aoj+9Ua\nE0SC5irgQatVN0LFh4M+mbrlkwhYpSpRh/WJvC2TWEDuh4koKcJ0hxyrvBxM\n/LbE5J3GlIm7U0fnoeGIcGYvJSqQD4N+6LmrWJFrPDwp2NhVGCGEDJvErDKC\nd0XiPu9WXr3YCZ3sgsaxJiqNicdzbfnLbaqP9Kq0y2Do7zU1tQEN0OOiTh1y\nfLLU0hDv1zGUSIzT/Z+yddTguvmd4LqxrGTsPCFP7A==\n",
|
48
|
+
"signature" => "OGZgZ8nClakhxnt1LAh4iGNmXnB9hU44FtDrZSaVAvRLyGcFYdbxx1yueUxP\nLLY6K9pB19DqxowtOMdkBdVtss64+FKV87Wuqx2c+c6+l6VzSwTRdsezapiS\nunlY42v5io/lIQD9g+leMzJyw1tK4q3cixY9jsk5uXLR5opbOovBzweNIk1W\n7MXz0YYJgf/tTePqqcLFCV4i3JhT9zzCCAIb019mVpmqvUoouRFBuIet5cNR\nj4/wZqEiCyrd87Q+HG4Ssyh9UNKHCeC8zdhb67nfQKcRa8rNbnluLM4/HsIa\nBvmp9d0VtIYuH3ri+IYMQECo7ediDbkvZkqzjUl/kA==\n"
|
49
|
+
},
|
50
|
+
{
|
51
|
+
'last_edited_by_id' => 2,
|
52
|
+
"content" => "aOmkxffDVAxBmj7ZRfX6wEepaBKWlFzipBg3PdDtlOe45tepmMxY/juFECkw\nJODnq0knfcoIXD2ObVv9gzToAtZy+eTkgElmpxebrh3bH9iB1kDkLMq1z7C+\n/5HmBj8sJ59u6YFcyRGDrmL+yY+meeBGwJdH5lL1cOVMbe6lxbvItnSIQXpi\n6KQM5YczMBzd2jYUAJpGk22S2p4j+5ElKB7n9aR/VRPGaB+nnA5CJSTGSfrW\nDm4xjfzYBOgFNFpAF4+Yjw35+okrdSQoF16+y8+KeTdN/Uo/Jm+aQh9Q2tk4\nSjRnhJjY4ZqO0WMtML3BBQhbwXcXAFl0sxZF1zzB4Q==\n",
|
53
|
+
"signature" => "Nv9sNIDypa0b4f7m4Bcf3bulikN487VbGizGBlDkfetXNCP0zrL/LtUfGMv6\n158HoX68nBPVX+0o1wSkjKoD4Qm79E3F4ftPLrHcsErvZr8rCUluRpoBsK/O\nP3ZOstyjEMjbkj2eaqmZkykhVIR55JtXzIM3YCo4UwjgtgzCyK5Ym8of3xzi\npVfoy4ZYVQnk7ec5u5nQUMpI8gixPH1WfM94bxZyw8bICr8r6kw5TkqEvW5U\nhpFkYdRXj8Fav1gHq3GiGmUhxd59Q/79optz3nWl/v/jDnVbEoAEtDltGS1B\n+Ijtoq3SfNkPY3DyhUxB5MSkMH5axJdcyFuU389j7A==\n"
|
54
|
+
}
|
55
|
+
],
|
56
|
+
'users' => [{
|
57
|
+
'id' => 1,
|
58
|
+
'username' => 'server',
|
59
|
+
'email' => 'server@localhost',
|
60
|
+
'public_key' => server_public_key.to_s,
|
61
|
+
'url' => 'https://example.com/users/1'
|
62
|
+
}, {
|
63
|
+
'id' => 2,
|
64
|
+
'username' => 'flower-pot',
|
65
|
+
'email' => 'flower-pot@example.org',
|
66
|
+
'public_key' => user_public_key.to_s,
|
67
|
+
'url' => 'https://example.com/users/2'
|
68
|
+
}],
|
69
|
+
'url' => 'http://example.com/secrets/1'
|
70
|
+
}
|
71
|
+
end
|
72
|
+
|
5
73
|
def stub_get_users
|
6
74
|
payload = [{
|
7
75
|
'id' => 1,
|
@@ -18,10 +86,8 @@ module MockAPI
|
|
18
86
|
'username' => 'adracus',
|
19
87
|
'email' => 'adracus@example.org',
|
20
88
|
'url' => 'https://example.com/users/3'
|
21
|
-
}]
|
22
|
-
|
23
|
-
with(headers: {'Accept'=>'application/vnd.duse.1+json'}).
|
24
|
-
to_return(status: 200, body: payload, headers: {})
|
89
|
+
}]
|
90
|
+
stub_get('/users').body(payload).activate
|
25
91
|
end
|
26
92
|
|
27
93
|
def stub_user_me_get
|
@@ -33,45 +99,39 @@ module MockAPI
|
|
33
99
|
'id' => 2,
|
34
100
|
'username' => 'flower-pot',
|
35
101
|
'email' => 'flower-pot@example.org',
|
36
|
-
'public_key' =>
|
102
|
+
'public_key' => user_public_key.to_s,
|
37
103
|
'url' => 'https://example.com/users/2'
|
38
|
-
}
|
104
|
+
}
|
39
105
|
|
40
|
-
|
41
|
-
with(headers: {'Accept'=>'application/vnd.duse.1+json'}).
|
42
|
-
to_return(status: 200, body: payload)
|
106
|
+
stub_get("/users/#{id}").body(payload).activate
|
43
107
|
end
|
44
108
|
|
45
109
|
def stub_user_get1(id = 1)
|
46
110
|
payload = {
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
}
|
111
|
+
'id' => 1,
|
112
|
+
'username' => 'server',
|
113
|
+
'email' => 'server@localhost',
|
114
|
+
'public_key' => server_public_key.to_s,
|
115
|
+
'url' => 'https://example.com/users/1'
|
116
|
+
}
|
53
117
|
|
54
|
-
|
55
|
-
with(headers: {'Accept'=>'application/vnd.duse.1+json'}).
|
56
|
-
to_return(status: 200, body: payload)
|
118
|
+
stub_get("/users/#{id}").body(payload).activate
|
57
119
|
end
|
58
120
|
|
59
121
|
def stub_server_user_get
|
60
122
|
stub_user_get1('server')
|
61
123
|
end
|
62
124
|
|
63
|
-
# private key for documentation is: "-----BEGIN RSA PRIVATE KEY-----\nMIIEpQIBAAKCAQEA0Y1b9awjW0nshQXk64uO1v+GYliBH8ogu6QjQDn0eoLIfcOi\nbrotbhJuSS0G46yOhboOCZQWrwyqi4MYtTMBH3ITTmNkhzOkdRXLJGJXXv3OCYR0\nJ+PdCXbrtfYkvqOgyJE4RAR6YBEO/XcQk0EmE4IDFq22Aar7MxSjrLk17LX9mTif\ndzg1xdxX5myX4NrXGVWTWKeS5klLWCe9AigQ35b8c2Zyehx6jxHk+jt5CguMC9Vq\nSyJobKdu926W4k2AgzWRdZh0EvCg2wWjlYjchJEnrpHLeJxGMEThPoGqgQWiG5BB\nYIl9kx1vg1QZmS2biS6djGpGIn8l8PN30+QS5QIDAQABAoIBAQC3pXYRMOHvkDKr\nRcYgs7bkLx47tCq9jGvxZmDKWcArWdCRf1EsTxefXqGumbpu73wcMDk7JcBXevc/\nuw19R4zVXSkUSsEASD75qbbVVSYTBsV5y83sY6MEN2dNmcEMHeS7waEY4v/Ij0qe\n0akCFFdlQ0ynpGdcwNbTJmRm7A4ZOrLMoVTJaI/enRJcQSEzBkQ/oHpMlcDBoFJq\nIB61tfm5JD6IPM2BKlXvSOpV8ItPpJYG4PJxUDT7YEhrXy0vGHKyjaKoE04EdLvI\nvfEkP67if9BTR0tMP+dxaeZ8c9ydGCHC9p1rDJMdpGoS4gwBLueEkDxNEchtrf5p\nM+fPan5lAoGBAPR6YLODhK6YIl6M1EMxbXlytnwAwr5vJvMmRBiVyXLnXKoVFI8V\nHkPsjO6wUH8OjZjEflteoo7Co2pawvfUuPhtHPrWVpW8tAdIELGfazOnsdxvcIAJ\nTUB7tHSS/WeWEcsloCAOTb+6wjZdah9CDly95madbI1IYtz9s0Z/TPMXAoGBANtt\nmhAIxNs/8X9lDWbkbQRWdIr/sb6LCQcBN/Jc5mdz9Kp3sXu2Ag4aRsSPbbtu+XBY\nkl+aSIIYWlHJJE1kKKMDJ+cEpCdx8+kdhz/NIfAdbo3RsZ3cDy7ZM28iHNO4LVRX\ndu/VlBrm4CXCBdlug4+GhZK7on1YnPtrqldV7RdjAoGBALb6nUPejMEMdrTjnL8J\n0JEUjYZ0H03e7X0RR+hKu7L3fUCDdJa+zJ8z/itr5WOjZdFQR+5k/y/wd9TTR5es\nLCErsYQARl/eE7RbeLsowVixC4scEUyTKbG4pNCXb3hHNtwgNh+n9QMqac+8zP/G\nNe+t5jMpYiTAZ9ZVQAfkoZhTAoGAezIG7Hev5pT5Bph6tMkM+AF+P0gdyCgRcnBZ\ns+Y6qdytgkPfTuC6OKbCErugVTqSK2RfEfPyP7BijUaL7jOMqTEtZwPxEgBle/1L\nISQPqNstZcxUl5ekop3pxbx2SNw//vl4WmEkXRJAyJItbI0iqiNRvTdBnHRy9qnV\nImGo0pcCgYEA5SJk+Fx/9bJXyKEJIp/Q+Zjq5Oc/4Th9b8ydSBCeksoz9qF+5pWq\nWpDXCa1fdLUxXK+cG39VxF3w2pok5NASeTgF+0myUofc8z/+K/qCDCn8wbojCZpi\nJwB1XlU0M+ZV9emAI1L1DGtoz7i8LT0uG8U5wWFZNljI3GXhfOYpWD4=\n-----END RSA PRIVATE KEY-----\n"
|
64
125
|
def stub_get_other_user
|
65
126
|
payload = {
|
66
127
|
'id' => 3,
|
67
128
|
'username' => 'adracus',
|
68
129
|
'email' => 'adracus@example.org',
|
69
|
-
'public_key' =>
|
130
|
+
'public_key' => other_public_key.to_s,
|
70
131
|
'url' => 'https://example.com/users/3'
|
71
|
-
}
|
72
|
-
|
73
|
-
|
74
|
-
to_return(status: 200, body: payload, headers: {})
|
132
|
+
}
|
133
|
+
|
134
|
+
stub_get('/users/3').body(payload).activate
|
75
135
|
end
|
76
136
|
|
77
137
|
def stub_get_secrets
|
@@ -79,106 +139,28 @@ module MockAPI
|
|
79
139
|
'id' => 1,
|
80
140
|
'title' => 'test',
|
81
141
|
'url' => 'http://example.com/secrets/1'
|
82
|
-
}]
|
83
|
-
|
84
|
-
with(headers: {'Accept'=>'application/vnd.duse.1+json'}).
|
85
|
-
to_return(status: 200, body: payload)
|
142
|
+
}]
|
143
|
+
stub_get('/secrets').body(payload).activate
|
86
144
|
end
|
87
145
|
|
88
146
|
def stub_secret_get_broken_signature
|
89
|
-
payload =
|
90
|
-
|
91
|
-
|
92
|
-
'cipher_text' => "DZTJUbyBLTtJ2TFETHfbvw==\n",
|
93
|
-
'shares' => [
|
94
|
-
{ 'last_edited_by_id' => 1, 'signature' => "blabla123", 'content' => "JmmvpdzT3umPfU8eFmCLY35GYTjHwjTjaUKT2wTUgyRojFnYbjO3l1gQF0gZ\nspBGK2rlb5q8Ak18XIl+eOsIDmjtPS4a+9Uk/hcCgHmAZ5u5TRHjtEE0X1Ih\nKkF8iXN/PomOW4WCFEseK0VeRTcPzQZ6CtMWjb0Cgr95KpiAqIoPMSlSU8JD\nXbcKsaKeAXspXgjpN+wxyiI+dQIrU+hYhErYOa28AIZkFgtqiP8ZcgiNXqbm\nS6n211M4NCaqD2inZ3dpbDS6MLAG737kSbL5puclArSuyp71Q1a25s5YTmeI\nCAf30zcV3RwPOWjYLfi+Pb8vskN3bxblS3nJxJ4WbQ==\n" },
|
95
|
-
{ 'last_edited_by_id' => 2, 'signature' => "blabla123", 'content' => "IkiK8njWLinkWku7B5dltlMiyOzjDU2N+/2J+ZAUADcfOzA2xlRi6XhKg8BY\n3g792iWyzPpKzj17FywQf4MDL2h12KtC6nvBenlmZx49hg6fIcHCuUoSflwJ\n4Mz5+Ud3N3KP3Zak1WGR4wjVmjkvkFj/KWqMaTMfkc3dTArO15/9ld+J5kfS\n1XjSa8T+NDPBuwdE2VOLiwyJVLTBQuvjRimZ5QgGPoTnD6CQ5jvohyiDHCob\noSbH/TfhVbKlv/ZkSCyVsaWmMUbGvNNxRGjJRPyNZ6R5y74U9UQlO60J/Cur\nXQlBqTRBPf7cZPl/bRgicPabc61S17u8jQU1U4BDxQ==\n" }
|
96
|
-
],
|
97
|
-
'users' => [{
|
98
|
-
'id' => 1,
|
99
|
-
'username' => 'server',
|
100
|
-
'email' => 'server@localhost',
|
101
|
-
'public_key' => "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvyvyAf7lnVx9eQcAS7JL\nYRHrqJJe51rAdanaUiiy8eek2Iyh6JG551EK7x4n9/Y7r0fW2sNmy+Bp3FpL8E/p\ncxutggTWCnUQUvXmEEm5qZ1KOIIlEQNp5glToAenJ7pxotJsTMlVw4tizsKScenc\n8w+02wpcmWuzWKjoY/G5KV33UDz/LxVo1RJdJp94JiL/OinIl+uk+Vf7VZj/E8g/\n7DyXIuiBosVpj9E9T4kpxs3/7RmUfDzUisVq0UvgflRjvP1V+1KdpNnjVB+H08mb\nSVO6yf2YOcrPDRa3pgz7PIr225QJ+HmVjPTg5VAy7rUxhCK+q+HNd2oz35zA70SO\npQIDAQAB\n-----END PUBLIC KEY-----\n",
|
102
|
-
'url' => 'https://example.com/users/1'
|
103
|
-
}, {
|
104
|
-
'id' => 2,
|
105
|
-
'username' => 'flower-pot',
|
106
|
-
'email' => 'flower-pot@example.org',
|
107
|
-
'public_key' => "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmMm3Ovh7gU0rLHK4NiHh\nWaYRrV9PH6XtHqV0GoiHH7awrjVkT1aZiS+nlBxckfuvuQjRXakVCZh18UdQadVQ\n7FLTWMZNoZ/uh41g4Iv17Wh1I3Fgqihdm83cSWvJ81qQCVGBaKeVitSa49zT/Mmo\noBvYFwulaqJjhqFc3862Rl3WowzGVqGf+OiYhFrBbnIqXijDmVKsbqkG5AILGo1n\nng06HIAvMqUcGMebgoju9SuKaR+C46KT0K5sPpNw/tNcDEZqZAd25QjAroGnpRHS\nI9hTEuPopPSyRqz/EVQfbhi0LbkdDW9S5ECw7GfFPFpRp2239fjl/9ybL6TkeZL7\nAwIDAQAB\n-----END PUBLIC KEY-----\n",
|
108
|
-
'url' => 'https://example.com/users/2'
|
109
|
-
}],
|
110
|
-
'url' => 'http://example.com/secrets/1'
|
111
|
-
}.to_json
|
147
|
+
payload = secret_hash
|
148
|
+
payload['shares'][0]['signature'] = 'blabla'
|
149
|
+
payload['shares'][1]['signature'] = 'blabla'
|
112
150
|
|
113
|
-
|
114
|
-
with(headers: {'Accept'=>'application/vnd.duse.1+json'}).
|
115
|
-
to_return(status: 200, body: payload)
|
151
|
+
stub_get('/secrets/2').body(payload).activate
|
116
152
|
end
|
117
153
|
|
118
154
|
def stub_secret_get
|
119
|
-
|
120
|
-
'id' => 1,
|
121
|
-
'title' => 'test',
|
122
|
-
'cipher_text' => "DZTJUbyBLTtJ2TFETHfbvw==\n",
|
123
|
-
'shares' => [
|
124
|
-
{ 'last_edited_by_id' => 1, 'signature' => "mWecJ8ni+yVsRmN4rOfE+i36s0efYkJcazLTE9d57fX7sV4yRujMrbaYCpzi\n90puFKHJex25CjrHEhDmb8i8YMNIX96DBymbb2yvyCSsBQ1e8LLE3tXlQ7SM\nRr2Q5mkqoLWcfaNhszw6gLTXElASdtUdd0lmcMX9kKwNmOmdv6eZcWphI4Ti\nVBdylYnMrq3zb+9FOqB2ONl9Gn/HiKItxCZw2dcyGhrwAVrGFisxVHHrMfKt\nF90vwLkfRKfoz4aKgS4x4FC2fSI8xIA5K1hHENMrEviNeC0nCMt1DnafR7Cb\nEVoTamNU9jSgMNrJxsQTOgsblqPpfV/JgGTx3iEyTg==\n", 'content' => "JmmvpdzT3umPfU8eFmCLY35GYTjHwjTjaUKT2wTUgyRojFnYbjO3l1gQF0gZ\nspBGK2rlb5q8Ak18XIl+eOsIDmjtPS4a+9Uk/hcCgHmAZ5u5TRHjtEE0X1Ih\nKkF8iXN/PomOW4WCFEseK0VeRTcPzQZ6CtMWjb0Cgr95KpiAqIoPMSlSU8JD\nXbcKsaKeAXspXgjpN+wxyiI+dQIrU+hYhErYOa28AIZkFgtqiP8ZcgiNXqbm\nS6n211M4NCaqD2inZ3dpbDS6MLAG737kSbL5puclArSuyp71Q1a25s5YTmeI\nCAf30zcV3RwPOWjYLfi+Pb8vskN3bxblS3nJxJ4WbQ==\n" },
|
125
|
-
{ 'last_edited_by_id' => 2, 'signature' => "fMB7PImowpcNBdgdeVRJtSGXtd5krI1wI/a/VbKRgPV4LiRxzoeuFrkhBrFq\n7L7/sXCdRsu5LyJGgxC8P/mSihv64e1jy/uXX9+HkhKfE7KQeSZKOvfIh4Hj\n7mKaAIQvAaASf54MKQFl5WHuXyUXUYECNS5uBHSSeFIjbIsaUuTXSrrvabBK\nk4VjHjz6C5yZ8uCHTP3Wsh8kg6kUqJcWV0cUSAo4eUxhrRnn7lGUTUp+HtVl\n0iTSJGrDXh1qiz6xO0FipWNyJEtZwxm005t0QhsA2E9hGgGMS2kvEFFNtvG0\ncz0b1WBrkZHum+Ol0xRC/u8jVmkxu4/TEiy0mfMbPg==\n", 'content' => "IkiK8njWLinkWku7B5dltlMiyOzjDU2N+/2J+ZAUADcfOzA2xlRi6XhKg8BY\n3g792iWyzPpKzj17FywQf4MDL2h12KtC6nvBenlmZx49hg6fIcHCuUoSflwJ\n4Mz5+Ud3N3KP3Zak1WGR4wjVmjkvkFj/KWqMaTMfkc3dTArO15/9ld+J5kfS\n1XjSa8T+NDPBuwdE2VOLiwyJVLTBQuvjRimZ5QgGPoTnD6CQ5jvohyiDHCob\noSbH/TfhVbKlv/ZkSCyVsaWmMUbGvNNxRGjJRPyNZ6R5y74U9UQlO60J/Cur\nXQlBqTRBPf7cZPl/bRgicPabc61S17u8jQU1U4BDxQ==\n" }
|
126
|
-
],
|
127
|
-
'users' => [{
|
128
|
-
'id' => 1,
|
129
|
-
'username' => 'server',
|
130
|
-
'email' => 'server@localhost',
|
131
|
-
'public_key' => "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvyvyAf7lnVx9eQcAS7JL\nYRHrqJJe51rAdanaUiiy8eek2Iyh6JG551EK7x4n9/Y7r0fW2sNmy+Bp3FpL8E/p\ncxutggTWCnUQUvXmEEm5qZ1KOIIlEQNp5glToAenJ7pxotJsTMlVw4tizsKScenc\n8w+02wpcmWuzWKjoY/G5KV33UDz/LxVo1RJdJp94JiL/OinIl+uk+Vf7VZj/E8g/\n7DyXIuiBosVpj9E9T4kpxs3/7RmUfDzUisVq0UvgflRjvP1V+1KdpNnjVB+H08mb\nSVO6yf2YOcrPDRa3pgz7PIr225QJ+HmVjPTg5VAy7rUxhCK+q+HNd2oz35zA70SO\npQIDAQAB\n-----END PUBLIC KEY-----\n",
|
132
|
-
'url' => 'https://example.com/users/1'
|
133
|
-
}, {
|
134
|
-
'id' => 2,
|
135
|
-
'username' => 'flower-pot',
|
136
|
-
'email' => 'flower-pot@example.org',
|
137
|
-
'public_key' => "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmMm3Ovh7gU0rLHK4NiHh\nWaYRrV9PH6XtHqV0GoiHH7awrjVkT1aZiS+nlBxckfuvuQjRXakVCZh18UdQadVQ\n7FLTWMZNoZ/uh41g4Iv17Wh1I3Fgqihdm83cSWvJ81qQCVGBaKeVitSa49zT/Mmo\noBvYFwulaqJjhqFc3862Rl3WowzGVqGf+OiYhFrBbnIqXijDmVKsbqkG5AILGo1n\nng06HIAvMqUcGMebgoju9SuKaR+C46KT0K5sPpNw/tNcDEZqZAd25QjAroGnpRHS\nI9hTEuPopPSyRqz/EVQfbhi0LbkdDW9S5ECw7GfFPFpRp2239fjl/9ybL6TkeZL7\nAwIDAQAB\n-----END PUBLIC KEY-----\n",
|
138
|
-
'url' => 'https://example.com/users/2'
|
139
|
-
}],
|
140
|
-
'url' => 'http://example.com/secrets/1'
|
141
|
-
}.to_json
|
142
|
-
|
143
|
-
stub_request(:get, "https://example.com/secrets/1").
|
144
|
-
with(headers: {'Accept'=>'application/vnd.duse.1+json'}).
|
145
|
-
to_return(status: 200, body: payload)
|
155
|
+
stub_get('/secrets/1').body(secret_hash).activate
|
146
156
|
end
|
147
157
|
|
148
158
|
def stub_secret_delete
|
149
|
-
|
150
|
-
with(headers: {'Accept'=>'application/vnd.duse.1+json'}).
|
151
|
-
to_return(status: 204, body: "", headers: {})
|
159
|
+
stub_delete('/secrets/1').activate
|
152
160
|
end
|
153
161
|
|
154
162
|
def stub_create_secret
|
155
|
-
|
156
|
-
'id' => 1,
|
157
|
-
'title' => 'test',
|
158
|
-
'cipher_text' => "DZTJUbyBLTtJ2TFETHfbvw==\n",
|
159
|
-
'shares' => [
|
160
|
-
{ 'last_edited_by_id' => 1, 'signature' => "mWecJ8ni+yVsRmN4rOfE+i36s0efYkJcazLTE9d57fX7sV4yRujMrbaYCpzi\n90puFKHJex25CjrHEhDmb8i8YMNIX96DBymbb2yvyCSsBQ1e8LLE3tXlQ7SM\nRr2Q5mkqoLWcfaNhszw6gLTXElASdtUdd0lmcMX9kKwNmOmdv6eZcWphI4Ti\nVBdylYnMrq3zb+9FOqB2ONl9Gn/HiKItxCZw2dcyGhrwAVrGFisxVHHrMfKt\nF90vwLkfRKfoz4aKgS4x4FC2fSI8xIA5K1hHENMrEviNeC0nCMt1DnafR7Cb\nEVoTamNU9jSgMNrJxsQTOgsblqPpfV/JgGTx3iEyTg==\n", 'content' => "JmmvpdzT3umPfU8eFmCLY35GYTjHwjTjaUKT2wTUgyRojFnYbjO3l1gQF0gZ\nspBGK2rlb5q8Ak18XIl+eOsIDmjtPS4a+9Uk/hcCgHmAZ5u5TRHjtEE0X1Ih\nKkF8iXN/PomOW4WCFEseK0VeRTcPzQZ6CtMWjb0Cgr95KpiAqIoPMSlSU8JD\nXbcKsaKeAXspXgjpN+wxyiI+dQIrU+hYhErYOa28AIZkFgtqiP8ZcgiNXqbm\nS6n211M4NCaqD2inZ3dpbDS6MLAG737kSbL5puclArSuyp71Q1a25s5YTmeI\nCAf30zcV3RwPOWjYLfi+Pb8vskN3bxblS3nJxJ4WbQ==\n" },
|
161
|
-
{ 'last_edited_by_id' => 2, 'signature' => "fMB7PImowpcNBdgdeVRJtSGXtd5krI1wI/a/VbKRgPV4LiRxzoeuFrkhBrFq\n7L7/sXCdRsu5LyJGgxC8P/mSihv64e1jy/uXX9+HkhKfE7KQeSZKOvfIh4Hj\n7mKaAIQvAaASf54MKQFl5WHuXyUXUYECNS5uBHSSeFIjbIsaUuTXSrrvabBK\nk4VjHjz6C5yZ8uCHTP3Wsh8kg6kUqJcWV0cUSAo4eUxhrRnn7lGUTUp+HtVl\n0iTSJGrDXh1qiz6xO0FipWNyJEtZwxm005t0QhsA2E9hGgGMS2kvEFFNtvG0\ncz0b1WBrkZHum+Ol0xRC/u8jVmkxu4/TEiy0mfMbPg==\n", 'content' => "IkiK8njWLinkWku7B5dltlMiyOzjDU2N+/2J+ZAUADcfOzA2xlRi6XhKg8BY\n3g792iWyzPpKzj17FywQf4MDL2h12KtC6nvBenlmZx49hg6fIcHCuUoSflwJ\n4Mz5+Ud3N3KP3Zak1WGR4wjVmjkvkFj/KWqMaTMfkc3dTArO15/9ld+J5kfS\n1XjSa8T+NDPBuwdE2VOLiwyJVLTBQuvjRimZ5QgGPoTnD6CQ5jvohyiDHCob\noSbH/TfhVbKlv/ZkSCyVsaWmMUbGvNNxRGjJRPyNZ6R5y74U9UQlO60J/Cur\nXQlBqTRBPf7cZPl/bRgicPabc61S17u8jQU1U4BDxQ==\n" }
|
162
|
-
],
|
163
|
-
'users' => [{
|
164
|
-
'id' => 1,
|
165
|
-
'username' => 'server',
|
166
|
-
'email' => 'server@localhost',
|
167
|
-
'public_key' => "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmMm3Ovh7gU0rLHK4NiHh\nWaYRrV9PH6XtHqV0GoiHH7awrjVkT1aZiS+nlBxckfuvuQjRXakVCZh18UdQadVQ\n7FLTWMZNoZ/uh41g4Iv17Wh1I3Fgqihdm83cSWvJ81qQCVGBaKeVitSa49zT/Mmo\noBvYFwulaqJjhqFc3862Rl3WowzGVqGf+OiYhFrBbnIqXijDmVKsbqkG5AILGo1n\nng06HIAvMqUcGMebgoju9SuKaR+C46KT0K5sPpNw/tNcDEZqZAd25QjAroGnpRHS\nI9hTEuPopPSyRqz/EVQfbhi0LbkdDW9S5ECw7GfFPFpRp2239fjl/9ybL6TkeZL7\nAwIDAQAB\n-----END PUBLIC KEY-----\n",
|
168
|
-
'url' => 'https://example.com/users/1'
|
169
|
-
}, {
|
170
|
-
'id' => 2,
|
171
|
-
'username' => 'flower-pot',
|
172
|
-
'email' => 'flower-pot@example.org',
|
173
|
-
'public_key' => "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmMm3Ovh7gU0rLHK4NiHh\nWaYRrV9PH6XtHqV0GoiHH7awrjVkT1aZiS+nlBxckfuvuQjRXakVCZh18UdQadVQ\n7FLTWMZNoZ/uh41g4Iv17Wh1I3Fgqihdm83cSWvJ81qQCVGBaKeVitSa49zT/Mmo\noBvYFwulaqJjhqFc3862Rl3WowzGVqGf+OiYhFrBbnIqXijDmVKsbqkG5AILGo1n\nng06HIAvMqUcGMebgoju9SuKaR+C46KT0K5sPpNw/tNcDEZqZAd25QjAroGnpRHS\nI9hTEuPopPSyRqz/EVQfbhi0LbkdDW9S5ECw7GfFPFpRp2239fjl/9ybL6TkeZL7\nAwIDAQAB\n-----END PUBLIC KEY-----\n",
|
174
|
-
'url' => 'https://example.com/users/2'
|
175
|
-
}],
|
176
|
-
'url' => 'http://example.com/secrets/1'
|
177
|
-
}.to_json
|
178
|
-
|
179
|
-
stub_request(:post, "https://example.com/secrets").
|
180
|
-
with(headers: {'Accept'=>'application/vnd.duse.1+json'}).
|
181
|
-
to_return(status: 201, body: payload, headers: {})
|
163
|
+
stub_post('/secrets').body(secret_hash).activate
|
182
164
|
end
|
183
165
|
end
|
184
166
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: duse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Frederic Branczyk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: highline
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ! '>='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: tree_outline
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ! '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
description: CLI and Ruby client library for duse
|
70
84
|
email: fbranczyk@gmail.com
|
71
85
|
executables:
|
@@ -81,6 +95,7 @@ files:
|
|
81
95
|
- README.md
|
82
96
|
- Rakefile
|
83
97
|
- bin/duse
|
98
|
+
- config/warble.rb
|
84
99
|
- duse.gemspec
|
85
100
|
- lib/duse.rb
|
86
101
|
- lib/duse/cli.rb
|
@@ -96,6 +111,11 @@ files:
|
|
96
111
|
- lib/duse/cli/cli_config.rb
|
97
112
|
- lib/duse/cli/command.rb
|
98
113
|
- lib/duse/cli/config.rb
|
114
|
+
- lib/duse/cli/folder.rb
|
115
|
+
- lib/duse/cli/folder_add.rb
|
116
|
+
- lib/duse/cli/folder_list.rb
|
117
|
+
- lib/duse/cli/folder_remove.rb
|
118
|
+
- lib/duse/cli/folder_update.rb
|
99
119
|
- lib/duse/cli/help.rb
|
100
120
|
- lib/duse/cli/key_helper.rb
|
101
121
|
- lib/duse/cli/login.rb
|
@@ -109,11 +129,13 @@ files:
|
|
109
129
|
- lib/duse/cli/secret_get.rb
|
110
130
|
- lib/duse/cli/secret_list.rb
|
111
131
|
- lib/duse/cli/secret_remove.rb
|
132
|
+
- lib/duse/cli/secret_tree.rb
|
112
133
|
- lib/duse/cli/secret_update.rb
|
113
134
|
- lib/duse/cli/share_with_user.rb
|
114
135
|
- lib/duse/cli/version.rb
|
115
136
|
- lib/duse/client/config.rb
|
116
137
|
- lib/duse/client/entity.rb
|
138
|
+
- lib/duse/client/folder.rb
|
117
139
|
- lib/duse/client/namespace.rb
|
118
140
|
- lib/duse/client/secret.rb
|
119
141
|
- lib/duse/client/session.rb
|
@@ -128,8 +150,10 @@ files:
|
|
128
150
|
- spec/cli/commands/secret_spec.rb
|
129
151
|
- spec/client/secret_spec.rb
|
130
152
|
- spec/client/user_spec.rb
|
153
|
+
- spec/encryption_spec.rb
|
131
154
|
- spec/spec_helper.rb
|
132
155
|
- spec/support/helpers.rb
|
156
|
+
- spec/support/key_helper.rb
|
133
157
|
- spec/support/mock_api.rb
|
134
158
|
homepage: https://github.com/duse-io/duse.rb
|
135
159
|
licenses:
|