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.
@@ -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' => "-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCftZvHkB6uKWVDvrIzmy2p496H\nv9PD/hhRk+DSXcE/CPtRmvYZzbWbbBup9hkvhyH/P1O5EF8KSZm4Cdnz6p37idTe\nNdlaH9cRFV2wc2A/hbg2kaISxrDxUqRbywBE9NOBSjXu2wRpy0TMo85eM2A0E2ET\n2XM6tZcuwFULX6bl8QIDAQAB\n-----END PUBLIC KEY-----\n",
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: public_key.to_s
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 public_key.to_s
47
+ expect(user.public_key.to_s).to eq user_public_key.to_s
49
48
  end
50
49
  end
51
50
 
@@ -0,0 +1,10 @@
1
+ require 'duse/encryption'
2
+
3
+ RSpec.describe Duse::Encryption do
4
+ describe '.hmac' do
5
+ it 'returns a base64 encoded hmac' do
6
+ hash = Duse::Encryption.hmac('key', 'msg')
7
+ expect(hash).to eq "LZPLwb4We8sWN6SiPL/wGnh48MUO6DOVTqUiG7G4xig=\n"
8
+ end
9
+ end
10
+ end
@@ -23,14 +23,17 @@ unless ENV['CI']
23
23
  end
24
24
 
25
25
  if ENV['CI']
26
- require 'coveralls'
27
- Coveralls.wear!
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
@@ -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
- }].to_json
22
- stub_request(:get, "https://example.com/users").
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' => "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmMm3Ovh7gU0rLHK4NiHh\nWaYRrV9PH6XtHqV0GoiHH7awrjVkT1aZiS+nlBxckfuvuQjRXakVCZh18UdQadVQ\n7FLTWMZNoZ/uh41g4Iv17Wh1I3Fgqihdm83cSWvJ81qQCVGBaKeVitSa49zT/Mmo\noBvYFwulaqJjhqFc3862Rl3WowzGVqGf+OiYhFrBbnIqXijDmVKsbqkG5AILGo1n\nng06HIAvMqUcGMebgoju9SuKaR+C46KT0K5sPpNw/tNcDEZqZAd25QjAroGnpRHS\nI9hTEuPopPSyRqz/EVQfbhi0LbkdDW9S5ECw7GfFPFpRp2239fjl/9ybL6TkeZL7\nAwIDAQAB\n-----END PUBLIC KEY-----\n",
102
+ 'public_key' => user_public_key.to_s,
37
103
  'url' => 'https://example.com/users/2'
38
- }.to_json
104
+ }
39
105
 
40
- stub_request(:get, "https://example.com/users/#{id}").
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
- 'id' => 1,
48
- 'username' => 'server',
49
- 'email' => 'server@localhost',
50
- '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",
51
- 'url' => 'https://example.com/users/1'
52
- }.to_json
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
- stub_request(:get, "https://example.com/users/#{id}").
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' => "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Y1b9awjW0nshQXk64uO\n1v+GYliBH8ogu6QjQDn0eoLIfcOibrotbhJuSS0G46yOhboOCZQWrwyqi4MYtTMB\nH3ITTmNkhzOkdRXLJGJXXv3OCYR0J+PdCXbrtfYkvqOgyJE4RAR6YBEO/XcQk0Em\nE4IDFq22Aar7MxSjrLk17LX9mTifdzg1xdxX5myX4NrXGVWTWKeS5klLWCe9AigQ\n35b8c2Zyehx6jxHk+jt5CguMC9VqSyJobKdu926W4k2AgzWRdZh0EvCg2wWjlYjc\nhJEnrpHLeJxGMEThPoGqgQWiG5BBYIl9kx1vg1QZmS2biS6djGpGIn8l8PN30+QS\n5QIDAQAB\n-----END PUBLIC KEY-----\n",
130
+ 'public_key' => other_public_key.to_s,
70
131
  'url' => 'https://example.com/users/3'
71
- }.to_json
72
- stub_request(:get, "https://example.com/users/3").
73
- with(headers: {'Accept'=>'application/vnd.duse.1+json'}).
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
- }].to_json
83
- stub_request(:get, "https://example.com/secrets").
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
- 'id' => 2,
91
- 'title' => 'test',
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
- stub_request(:get, "https://example.com/secrets/2").
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
- payload = {
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
- stub_request(:delete, "https://example.com/secrets/1").
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
- payload = {
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.7
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-06-15 00:00:00.000000000 Z
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: