Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Jruby support #9

Merged
merged 9 commits into from
Jun 15, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
language: ruby
rvm:
- 2.2.2
- 2.2.2
- jruby-1.7.19
jdk:
- openjdk7
- oraclejdk7
- oraclejdk8
matrix:
exclude:
- rvm: 2.2.2
jdk: oraclejdk7
- rvm: 2.2.2
jdk: oraclejdk8
sudo: false
cache: bundler
deploy:
Expand Down
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,17 @@ written in ruby.

This implementation was heavily inspired by [travis-ci/travis.rb](https://github.com/travis-ci/travis.rb)

Compatibility
-------------

Tested against

* Ruby MRI
* JRuby

> Hint: Be sure to install the Java Cryptography Extension (JCE) Unlimited
> Strength Jurisdiction Policy Files for this to work on the JVM

CLI
===

Expand Down
8 changes: 8 additions & 0 deletions lib/duse/cli/command.rb
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,14 @@ def wrong_args(quantity)
say help
end
end

def format(data, format = nil, style = nil)
style ||= :important
data = format % color(data, style) if format and interactive?
data = data.gsub(/<\[\[/, '<%=').gsub(/\]\]>/, '%>')
data.encode! 'utf-8' if data.respond_to? :encode!
data
end
end
end
end
2 changes: 1 addition & 1 deletion lib/duse/cli/share_with_user.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def select_users(ignored_users = [])

def select_from_list(subjects, method = :to_s)
print_list(subjects, method)
selection = terminal.ask 'Type the ids of the users you want to share with (separate with commas to select multiple)'
selection = terminal.ask "Type the ids of the users you want to share with (separate with commas to select multiple)\n"
CommaSeparatedIntegerList.new(selection).map do |i|
fail InvalidSelection if subjects[i-1].nil?
subjects[i-1]
Expand Down
13 changes: 4 additions & 9 deletions spec/cli/commands/secret_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@

run_cli('secret', 'get') { |i| i.puts('1') }

expect(last_run.out).to eq(
"1: test\n\nSelect the id of the secret to retrieve: \nName: test\nSecret: test\nAccess: flower-pot\n"
expect(last_run.out).to match(
"1: test\n\nSelect the id of the secret to retrieve: (1\n)?\nName: test\nSecret: test\nAccess: flower-pot\n"
)
expect(last_run.err).to be_empty
end
Expand Down Expand Up @@ -125,13 +125,8 @@
i.puts '1'
end.success?).to be true

expect(last_run.out).to eq(
"What do you want to call this secret? " + # new lines are in stdin not stdout
"Secret to save: " +
"Do you want to share this secret?[y/n] " +
"Who do you want to share this secret with?\n" +
"1: adracus\n" +
"Type the ids of the users you want to share with (separate with commas to select multiple)\n"
expect(last_run.out).to match(
/What do you want to call this secret\? (test\n)?Secret to save: (test\n)?Do you want to share this secret\?\[y\/n\] (y\n)?Who do you want to share this secret with\?\n1: adracus\nType the ids of the users you want to share with \(separate with commas to select multiple\)\n(1\n)?/
)
end
end
Expand Down
2 changes: 2 additions & 0 deletions spec/client/secret_spec.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# encoding: UTF-8

RSpec.describe Duse::Client::Secret do
before :each do
Duse.config = Duse::CLIConfig.new({ 'uri' => 'https://example.com/'})
Expand Down
20 changes: 10 additions & 10 deletions spec/client/user_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,59 +33,59 @@ def stub_create_user
describe '.create' do
it 'creates correct user entity from json create response' do
stub_create_user
public_key = "-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCftZvHkB6uKWVDvrIzmy2p496H\nv9PD/hhRk+DSXcE/CPtRmvYZzbWbbBup9hkvhyH/P1O5EF8KSZm4Cdnz6p37idTe\nNdlaH9cRFV2wc2A/hbg2kaISxrDxUqRbywBE9NOBSjXu2wRpy0TMo85eM2A0E2ET\n2XM6tZcuwFULX6bl8QIDAQAB\n-----END PUBLIC KEY-----\n"
public_key = OpenSSL::PKey::RSA.new("-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCftZvHkB6uKWVDvrIzmy2p496H\nv9PD/hhRk+DSXcE/CPtRmvYZzbWbbBup9hkvhyH/P1O5EF8KSZm4Cdnz6p37idTe\nNdlaH9cRFV2wc2A/hbg2kaISxrDxUqRbywBE9NOBSjXu2wRpy0TMo85eM2A0E2ET\n2XM6tZcuwFULX6bl8QIDAQAB\n-----END PUBLIC KEY-----\n")

user = Duse::User.create(
username: 'flower-pot',
email: 'flower-pot@example.org',
password: 'Passw0rd!',
password_confirmation: 'Passw0rd!',
public_key: public_key
public_key: public_key.to_s
)

expect(user.username).to eq 'flower-pot'
expect(user.email).to eq 'flower-pot@example.org'
expect(user.public_key.to_s).to eq public_key
expect(user.public_key.to_s).to eq public_key.to_s
end
end

describe '.find' do
context 'own user' do
it 'creates the correct entity when requesting own user' do
stub_user_me_get
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"
public_key = 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")

user = Duse::User.find 'me'

expect(user.username).to eq 'flower-pot'
expect(user.email).to eq 'flower-pot@example.org'
expect(user.public_key.to_s).to eq public_key
expect(user.public_key.to_s).to eq public_key.to_s
end
end

context 'server user' do
it 'creates the correct entity when requesting the server user' do
stub_server_user_get
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"
public_key = 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")

user = Duse::User.find 'server'

expect(user.username).to eq 'server'
expect(user.email).to eq 'server@localhost'
expect(user.public_key.to_s).to eq public_key
expect(user.public_key.to_s).to eq public_key.to_s
end
end

context 'any user' do
it 'creates the correct entity when requesting a specific user' do
stub_get_other_user
public_key = "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Y1b9awjW0nshQXk64uO\n1v+GYliBH8ogu6QjQDn0eoLIfcOibrotbhJuSS0G46yOhboOCZQWrwyqi4MYtTMB\nH3ITTmNkhzOkdRXLJGJXXv3OCYR0J+PdCXbrtfYkvqOgyJE4RAR6YBEO/XcQk0Em\nE4IDFq22Aar7MxSjrLk17LX9mTifdzg1xdxX5myX4NrXGVWTWKeS5klLWCe9AigQ\n35b8c2Zyehx6jxHk+jt5CguMC9VqSyJobKdu926W4k2AgzWRdZh0EvCg2wWjlYjc\nhJEnrpHLeJxGMEThPoGqgQWiG5BBYIl9kx1vg1QZmS2biS6djGpGIn8l8PN30+QS\n5QIDAQAB\n-----END PUBLIC KEY-----\n"
public_key = OpenSSL::PKey::RSA.new("-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Y1b9awjW0nshQXk64uO\n1v+GYliBH8ogu6QjQDn0eoLIfcOibrotbhJuSS0G46yOhboOCZQWrwyqi4MYtTMB\nH3ITTmNkhzOkdRXLJGJXXv3OCYR0J+PdCXbrtfYkvqOgyJE4RAR6YBEO/XcQk0Em\nE4IDFq22Aar7MxSjrLk17LX9mTifdzg1xdxX5myX4NrXGVWTWKeS5klLWCe9AigQ\n35b8c2Zyehx6jxHk+jt5CguMC9VqSyJobKdu926W4k2AgzWRdZh0EvCg2wWjlYjc\nhJEnrpHLeJxGMEThPoGqgQWiG5BBYIl9kx1vg1QZmS2biS6djGpGIn8l8PN30+QS\n5QIDAQAB\n-----END PUBLIC KEY-----\n")

user = Duse::User.find 3

expect(user.username).to eq 'adracus'
expect(user.email).to eq 'adracus@example.org'
expect(user.public_key.to_s).to eq public_key
expect(user.public_key.to_s).to eq public_key.to_s
end
end
end
Expand All @@ -100,6 +100,6 @@ def stub_create_user
expect(user.attributes['public_key']).to be nil
expect(user.username).to eq 'adracus'
expect(user.email).to eq 'adracus@example.org'
expect(user.public_key.to_s).to eq "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Y1b9awjW0nshQXk64uO\n1v+GYliBH8ogu6QjQDn0eoLIfcOibrotbhJuSS0G46yOhboOCZQWrwyqi4MYtTMB\nH3ITTmNkhzOkdRXLJGJXXv3OCYR0J+PdCXbrtfYkvqOgyJE4RAR6YBEO/XcQk0Em\nE4IDFq22Aar7MxSjrLk17LX9mTifdzg1xdxX5myX4NrXGVWTWKeS5klLWCe9AigQ\n35b8c2Zyehx6jxHk+jt5CguMC9VqSyJobKdu926W4k2AgzWRdZh0EvCg2wWjlYjc\nhJEnrpHLeJxGMEThPoGqgQWiG5BBYIl9kx1vg1QZmS2biS6djGpGIn8l8PN30+QS\n5QIDAQAB\n-----END PUBLIC KEY-----\n"
expect(user.public_key.to_s).to eq OpenSSL::PKey::RSA.new("-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Y1b9awjW0nshQXk64uO\n1v+GYliBH8ogu6QjQDn0eoLIfcOibrotbhJuSS0G46yOhboOCZQWrwyqi4MYtTMB\nH3ITTmNkhzOkdRXLJGJXXv3OCYR0J+PdCXbrtfYkvqOgyJE4RAR6YBEO/XcQk0Em\nE4IDFq22Aar7MxSjrLk17LX9mTifdzg1xdxX5myX4NrXGVWTWKeS5klLWCe9AigQ\n35b8c2Zyehx6jxHk+jt5CguMC9VqSyJobKdu926W4k2AgzWRdZh0EvCg2wWjlYjc\nhJEnrpHLeJxGMEThPoGqgQWiG5BBYIl9kx1vg1QZmS2biS6djGpGIn8l8PN30+QS\n5QIDAQAB\n-----END PUBLIC KEY-----\n").to_s
end
end