webbynode 1.0.4 → 1.0.4.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of webbynode might be problematic. Click here for more details.

data/Gemfile ADDED
@@ -0,0 +1,20 @@
1
+ source :rubygems
2
+
3
+ gem 'httparty'
4
+ gem 'domainatrix'
5
+ gem 'net-ssh'
6
+ gem 'highline'
7
+
8
+ group :development do
9
+ gem 'rspec'
10
+ gem 'growl'
11
+ gem 'guard'
12
+ gem 'guard-rspec'
13
+ gem 'ZenTest'
14
+ gem 'autotest-growl'
15
+ gem 'database_cleaner'
16
+ gem 'awesome_print'
17
+ gem 'fakeweb'
18
+ gem 'echoe'
19
+ gem 'rcov'
20
+ end
data/Gemfile.lock ADDED
@@ -0,0 +1,69 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ ZenTest (4.5.0)
5
+ addressable (2.2.4)
6
+ allison (2.0.3)
7
+ autotest-growl (0.2.9)
8
+ awesome_print (0.3.2)
9
+ configuration (1.2.0)
10
+ crack (0.1.8)
11
+ database_cleaner (0.6.4)
12
+ diff-lcs (1.1.2)
13
+ domainatrix (0.0.7)
14
+ addressable
15
+ echoe (4.5.1)
16
+ allison
17
+ gemcutter
18
+ rubyforge
19
+ fakeweb (1.3.0)
20
+ gemcutter (0.6.1)
21
+ growl (1.0.3)
22
+ guard (0.3.0)
23
+ open_gem (~> 1.4.2)
24
+ thor (~> 0.14.6)
25
+ guard-rspec (0.1.9)
26
+ guard (>= 0.2.2)
27
+ highline (1.6.1)
28
+ httparty (0.7.4)
29
+ crack (= 0.1.8)
30
+ json_pure (1.5.1)
31
+ launchy (0.3.7)
32
+ configuration (>= 0.0.5)
33
+ rake (>= 0.8.1)
34
+ net-ssh (2.1.0)
35
+ open_gem (1.4.2)
36
+ launchy (~> 0.3.5)
37
+ rake (0.8.7)
38
+ rcov (0.9.9)
39
+ rspec (2.5.0)
40
+ rspec-core (~> 2.5.0)
41
+ rspec-expectations (~> 2.5.0)
42
+ rspec-mocks (~> 2.5.0)
43
+ rspec-core (2.5.1)
44
+ rspec-expectations (2.5.0)
45
+ diff-lcs (~> 1.1.2)
46
+ rspec-mocks (2.5.0)
47
+ rubyforge (2.0.4)
48
+ json_pure (>= 1.1.7)
49
+ thor (0.14.6)
50
+
51
+ PLATFORMS
52
+ ruby
53
+
54
+ DEPENDENCIES
55
+ ZenTest
56
+ autotest-growl
57
+ awesome_print
58
+ database_cleaner
59
+ domainatrix
60
+ echoe
61
+ fakeweb
62
+ growl
63
+ guard
64
+ guard-rspec
65
+ highline
66
+ httparty
67
+ net-ssh
68
+ rcov
69
+ rspec
data/Guardfile ADDED
@@ -0,0 +1,5 @@
1
+ guard 'rspec' do
2
+ watch(%r{spec/(.*)_spec.rb})
3
+ watch(%r{lib/(.*)\.rb}) { |m| "spec/lib/#{m[1]}_spec.rb" }
4
+ watch('spec/spec_helper.rb') { "spec" }
5
+ end
data/Manifest CHANGED
@@ -1,8 +1,12 @@
1
+ Gemfile
2
+ Gemfile.lock
3
+ Guardfile
1
4
  Manifest
2
5
  PostInstall.txt
3
6
  README.rdoc
4
7
  Rakefile
5
8
  assets/webbynode.png
9
+ autotest/discover.rb
6
10
  bin/webbynode
7
11
  bin/wn
8
12
  changelog.rdoc
@@ -27,6 +31,7 @@ lib/webbynode/commands/add_key.rb
27
31
  lib/webbynode/commands/addons.rb
28
32
  lib/webbynode/commands/alias.rb
29
33
  lib/webbynode/commands/apps.rb
34
+ lib/webbynode/commands/authorize_root.rb
30
35
  lib/webbynode/commands/change_dns.rb
31
36
  lib/webbynode/commands/config.rb
32
37
  lib/webbynode/commands/console.rb
@@ -48,6 +53,7 @@ lib/webbynode/commands/webbies.rb
48
53
  lib/webbynode/engines/all.rb
49
54
  lib/webbynode/engines/django.rb
50
55
  lib/webbynode/engines/engine.rb
56
+ lib/webbynode/engines/html.rb
51
57
  lib/webbynode/engines/nodejs.rb
52
58
  lib/webbynode/engines/php.rb
53
59
  lib/webbynode/engines/rack.rb
@@ -104,6 +110,7 @@ spec/webbynode/commands/add_key_spec.rb
104
110
  spec/webbynode/commands/addons_spec.rb
105
111
  spec/webbynode/commands/alias_spec.rb
106
112
  spec/webbynode/commands/apps_spec.rb
113
+ spec/webbynode/commands/authorize_root_spec.rb
107
114
  spec/webbynode/commands/change_dns_spec.rb
108
115
  spec/webbynode/commands/config_spec.rb
109
116
  spec/webbynode/commands/console_spec.rb
@@ -121,6 +128,7 @@ spec/webbynode/commands/version_spec.rb
121
128
  spec/webbynode/commands/webbies_spec.rb
122
129
  spec/webbynode/engines/django_spec.rb
123
130
  spec/webbynode/engines/engine_spec.rb
131
+ spec/webbynode/engines/html_spec.rb
124
132
  spec/webbynode/engines/nodejs_spec.rb
125
133
  spec/webbynode/engines/php_spec.rb
126
134
  spec/webbynode/engines/rack_spec.rb
data/Rakefile CHANGED
@@ -4,7 +4,7 @@ require 'rake/testtask'
4
4
 
5
5
  require 'echoe'
6
6
 
7
- Echoe.new('webbynode', '1.0.4') do |p|
7
+ Echoe.new('webbynode', '1.0.4.2') do |p|
8
8
  p.description = "Webbynode Deployment Gem"
9
9
  p.url = "http://webbynode.com"
10
10
  p.author = "Felipe Coury"
@@ -0,0 +1,2 @@
1
+ # in ./autotest/discover.rb
2
+ Autotest.add_discovery {"rspec2"}
@@ -0,0 +1,23 @@
1
+ module Webbynode::Commands
2
+ class AuthorizeRoot < Webbynode::Command
3
+ requires_initialization!
4
+
5
+ summary "Adds your ssh public key to your Webby's root user"
6
+ option :passphrase, "If present, passphrase will be used when creating a new SSH key", :take => :words
7
+
8
+ add_alias "authorizeroot"
9
+ add_alias "authroot"
10
+
11
+ def execute
12
+ server.add_ssh_root_key LocalSshKey, options[:passphrase].value
13
+ io.log "Your local SSH Key has been added to your Webby's root user", :notify
14
+
15
+ rescue Webbynode::InvalidAuthentication
16
+ io.log "Could not connect to webby: invalid authentication.", true
17
+
18
+ rescue Webbynode::PermissionError
19
+ io.log "Could not create an SSH key: permission error.", true
20
+
21
+ end
22
+ end
23
+ end
@@ -1,5 +1,6 @@
1
1
  module Webbynode::Engines
2
2
  All = [
3
+ Webbynode::Engines::Html,
3
4
  Webbynode::Engines::Django,
4
5
  Webbynode::Engines::WSGI,
5
6
  Webbynode::Engines::Php,
@@ -0,0 +1,5 @@
1
+ module Webbynode::Engines
2
+ class Html
3
+ include Engine
4
+ end
5
+ end
@@ -8,5 +8,14 @@ module Webbynode::Engines
8
8
  io.directory?('app') && io.directory?('app/controllers') &&
9
9
  io.file_exists?('config/environment.rb')
10
10
  end
11
+
12
+ def prepare
13
+ contents = io.read_file("config/database.yml")
14
+ if contents =~ /mysql2/
15
+ io.add_setting "rails_adapter", "mysql2"
16
+ else
17
+ io.remove_setting "rails_adapter"
18
+ end
19
+ end
11
20
  end
12
21
  end
@@ -17,6 +17,13 @@ module Webbynode::Engines
17
17
 
18
18
  def check_gemfile
19
19
  return unless gemfile.present?
20
+
21
+ contents = io.read_file("config/database.yml")
22
+ if contents =~ /mysql2/
23
+ io.add_setting "rails3_adapter", "mysql2"
24
+ else
25
+ io.remove_setting "rails3_adapter"
26
+ end
20
27
 
21
28
  dependencies = gemfile.dependencies(:without => [:development, :test])
22
29
  if dependencies.include? 'sqlite3-ruby'
@@ -26,16 +26,35 @@ module Webbynode
26
26
  end
27
27
 
28
28
  def add_ssh_key(key_file, passphrase="")
29
- io.create_local_key(passphrase) unless io.file_exists?(key_file)
30
- remote_executor.create_folder("~/.ssh")
31
-
32
- key_contents = io.read_file(key_file)
33
- remote_executor.exec "grep \"#{key_contents}\" ~/.ssh/authorized_keys || (echo \"#{key_contents}\" >> ~/.ssh/authorized_keys; chmod 644 ~/.ssh/authorized_keys)"
29
+ add_ssh_key_in "~", key_file, passphrase
30
+ end
31
+
32
+ def add_ssh_root_key(key_file, passphrase="")
33
+ create_ssh_settings "/root", true
34
+ add_ssh_key_in "/root", key_file, passphrase, true
34
35
  end
35
36
 
36
37
  def application_pushed?
37
38
  return false if remote_executor.exec("cd #{pushand.parse_remote_app_name}") =~ /No such file or directory/
38
39
  true
39
40
  end
41
+
42
+ private
43
+
44
+ def create_ssh_settings(folder, sudo=false)
45
+ sudo = sudo ? "sudo " : ""
46
+ commands = "#{sudo}bash -c 'test -f #{folder}/.ssh/authorized_keys || (mkdir #{folder}/.ssh 2>/dev/null; chmod 700 #{folder}/.ssh; touch #{folder}/.ssh/authorized_keys; chmod 644 #{folder}/.ssh/authorized_keys)'"
47
+ remote_executor.exec commands
48
+ end
49
+
50
+ def add_ssh_key_in(folder, key_file, passphrase, sudo=false)
51
+ io.create_local_key(passphrase) unless io.file_exists?(key_file)
52
+ remote_executor.create_folder("#{folder}/.ssh")
53
+
54
+ sudo = sudo ? "sudo " : ""
55
+ key_contents = io.read_file(key_file)
56
+ commands = "#{sudo}bash -c 'grep \"#{key_contents}\" #{folder}/.ssh/authorized_keys || (echo \"#{key_contents}\" >> #{folder}/.ssh/authorized_keys; chmod 644 #{folder}/.ssh/authorized_keys)'"
57
+ remote_executor.exec commands
58
+ end
40
59
  end
41
60
  end
@@ -6,6 +6,10 @@ module Webbynode
6
6
  run_remote_command "mkdir ~/.ssh 2>/dev/null; chmod 700 ~/.ssh; echo \"#{key}\" >> ~/.ssh/authorized_keys; chmod 644 ~/.ssh/authorized_keys"
7
7
  end
8
8
 
9
+ def add_key_to_remote_user(key, folder)
10
+ run_remote_command "mkdir #{folder}/.ssh 2>/dev/null; chmod 700 #{folder}/.ssh; echo \"#{key}\" >> #{folder}/.ssh/authorized_keys; chmod 644 #{folder}/.ssh/authorized_keys"
11
+ end
12
+
9
13
  # lists all authorized keys on the remote server
10
14
  def remote_authorized_keys
11
15
  run_remote_command "cat \$HOME/.ssh/authorized_keys"
data/lib/webbynode.rb CHANGED
@@ -33,6 +33,7 @@ require File.join(File.dirname(__FILE__), 'webbynode', 'engines', 'django')
33
33
  require File.join(File.dirname(__FILE__), 'webbynode', 'engines', 'php')
34
34
  require File.join(File.dirname(__FILE__), 'webbynode', 'engines', 'nodejs')
35
35
  require File.join(File.dirname(__FILE__), 'webbynode', 'engines', 'wsgi')
36
+ require File.join(File.dirname(__FILE__), 'webbynode', 'engines', 'html')
36
37
  require File.join(File.dirname(__FILE__), 'webbynode', 'engines', 'all')
37
38
  require File.join(File.dirname(__FILE__), 'webbynode', 'commands', 'apps')
38
39
  require File.join(File.dirname(__FILE__), 'webbynode', 'commands', 'addons')
@@ -55,12 +56,13 @@ require File.join(File.dirname(__FILE__), 'webbynode', 'commands', 'webbies')
55
56
  require File.join(File.dirname(__FILE__), 'webbynode', 'commands', 'version')
56
57
  require File.join(File.dirname(__FILE__), 'webbynode', 'commands', 'user')
57
58
  require File.join(File.dirname(__FILE__), 'webbynode', 'commands', 'settings')
59
+ require File.join(File.dirname(__FILE__), 'webbynode', 'commands', 'authorize_root')
58
60
  require File.join(File.dirname(__FILE__), 'webbynode', 'commands', 'console')
59
61
  require File.join(File.dirname(__FILE__), 'webbynode', 'commands', 'logs')
60
62
  require File.join(File.dirname(__FILE__), 'webbynode', 'application')
61
63
 
62
64
  module Webbynode
63
- VERSION = '1.0.4'
65
+ VERSION = '1.0.4.2'
64
66
  end
65
67
 
66
68
  class Array
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # Require RSpec
2
2
  require 'rubygems'
3
- require 'spec'
3
+ require 'rspec'
4
4
  require 'pp'
5
5
  begin
6
6
  require 'fakeweb'
@@ -44,7 +44,7 @@ module Kernel
44
44
  def ppd(x); $stderr.puts x.pretty_inspect; end
45
45
  end
46
46
 
47
- Spec::Runner.configure do |config|
47
+ RSpec.configure do |config|
48
48
  config.include Webbynode::IoStub
49
49
 
50
50
  config.before(:each) do
@@ -0,0 +1,59 @@
1
+ # Load Spec Helper
2
+ require File.join(File.expand_path(File.dirname(__FILE__)), '../..', 'spec_helper')
3
+
4
+ describe Webbynode::Commands::AuthorizeRoot do
5
+ let(:server) { double("server") }
6
+
7
+ it "is aliased to authorizeroot" do
8
+ Webbynode::Commands.should_receive(:const_get).with("AuthorizeRoot")
9
+ Webbynode::Command.for("authorizeroot")
10
+ end
11
+
12
+ it "is aliased to authroot" do
13
+ Webbynode::Commands.should_receive(:const_get).with("AuthorizeRoot")
14
+ Webbynode::Command.for("authroot")
15
+ end
16
+
17
+ context "when successful" do
18
+ it "uploads the local ssh key into the server's root folder" do
19
+ server.should_receive(:add_ssh_root_key).with(LocalSshKey, nil)
20
+
21
+ cmd = Webbynode::Commands::AuthorizeRoot.new
22
+ cmd.should_receive(:server).any_number_of_times.and_return(server)
23
+ cmd.execute
24
+ end
25
+
26
+ it "should create an ssh key with a provided passphrase" do
27
+ server.should_receive(:add_ssh_root_key).with(LocalSshKey, "my_passphrase")
28
+
29
+ cmd = Webbynode::Commands::AuthorizeRoot.new("--passphrase=my_passphrase")
30
+ cmd.should_receive(:server).any_number_of_times.and_return(server)
31
+ cmd.execute
32
+ end
33
+ end
34
+
35
+ context "when unsuccessful" do
36
+ let(:cmd) { Webbynode::Commands::AuthorizeRoot.new }
37
+ let(:io) { double("Io").as_null_object }
38
+
39
+ before(:each) do
40
+ cmd.should_receive(:io).any_number_of_times.and_return(io)
41
+ end
42
+
43
+ it "reports an error if the ssh key could not be added due to invalid authentication" do
44
+ server.should_receive(:add_ssh_root_key).and_raise(Webbynode::InvalidAuthentication)
45
+
46
+ cmd.should_receive(:server).any_number_of_times.and_return(server)
47
+ io.should_receive(:log).with("Could not connect to webby: invalid authentication.", true)
48
+ cmd.execute
49
+ end
50
+
51
+ it "should report an error if the ssh key could not be added due to a permission error" do
52
+ server.should_receive(:add_ssh_root_key).and_raise(Webbynode::PermissionError)
53
+
54
+ cmd.should_receive(:server).any_number_of_times.and_return(server)
55
+ io.should_receive(:log).with("Could not create an SSH key: permission error.", true)
56
+ cmd.execute
57
+ end
58
+ end
59
+ end
@@ -267,7 +267,7 @@ describe Webbynode::Commands::Init do
267
267
  io.stub(:file_exists?).with("script/rails").and_return(false)
268
268
  io.stub(:directory?).with('app').and_return(true)
269
269
  io.stub(:directory?).with('app/controllers').and_return(true)
270
- io.stub(:file_exists?).with('config/environent.rb').and_return(true)
270
+ io.stub(:file_exists?).with('config/environment.rb').and_return(true)
271
271
 
272
272
  Webbynode::Io.stub(:new).and_return(io)
273
273
  Webbynode::Git.stub(:new).and_return(git_handler)
@@ -163,7 +163,7 @@ describe Webbynode::Commands::Push do
163
163
  describe "#perform_before_tasks" do
164
164
  before(:each) do
165
165
  push.before_tasks.stub!(:has_tasks?).and_return(true)
166
- io.stub!(:exec).with("git push webbynode master")
166
+ io.stub!(:exec).with("git push webbynode +HEAD:master", false)
167
167
  end
168
168
 
169
169
  it "should provide feedback to the user that it's going to perform the tasks" do
@@ -182,7 +182,7 @@ describe Webbynode::Commands::Push do
182
182
  describe "#perform_after_tasks" do
183
183
  before(:each) do
184
184
  push.after_tasks.stub!(:has_tasks?).and_return(true)
185
- io.stub!(:exec).with("git push webbynode master")
185
+ io.stub!(:exec).with("git push webbynode +HEAD:master", false)
186
186
  end
187
187
 
188
188
  it "should provide feedback to the user that it's going to perform the tasks" do
@@ -0,0 +1,12 @@
1
+ # Load Spec Helper
2
+ require File.join(File.expand_path(File.dirname(__FILE__)), '../..', 'spec_helper')
3
+
4
+ describe Webbynode::Engines::Html do
5
+ describe 'class methods' do
6
+ subject { Webbynode::Engines::Html }
7
+
8
+ its(:engine_id) { should == 'html' }
9
+ its(:engine_name) { should == 'HTML' }
10
+ its(:git_excluded) { should be_empty }
11
+ end
12
+ end
@@ -28,6 +28,21 @@ describe Webbynode::Engines::Rails3 do
28
28
  subject.stub!(:gemfile).and_return(gemfile)
29
29
  lambda { subject.prepare }.should raise_error(Webbynode::Command::CommandError)
30
30
  end
31
+
32
+ it "adds a rails3_adapter setting when mysql2 is used on the database.yml" do
33
+ io.should_receive(:read_file).with("config/database.yml").and_return("mysql2")
34
+ io.should_receive(:add_setting).with('rails3_adapter', 'mysql2')
35
+
36
+ subject.prepare
37
+ end
38
+
39
+ it "doesn't add a rails3_adapter otherwise" do
40
+ io.should_receive(:read_file).with("config/database.yml").and_return("mysql")
41
+ io.should_receive(:add_setting).with('rails3_adapter', 'mysql2').never
42
+ io.should_receive(:remove_setting).with('rails3_adapter')
43
+
44
+ subject.prepare
45
+ end
31
46
  end
32
47
 
33
48
  describe '#detect' do
@@ -22,7 +22,7 @@ describe Webbynode::Engines::Rails do
22
22
  it "returns true if app app/controllers and config/environent.rb are found" do
23
23
  io.stub!(:directory?).with('app').and_return(true)
24
24
  io.stub!(:directory?).with('app/controllers').and_return(true)
25
- io.stub!(:file_exists?).with('config/environent.rb').and_return(true)
25
+ io.stub!(:file_exists?).with('config/environment.rb').and_return(true)
26
26
 
27
27
  subject.should be_detected
28
28
  end
@@ -35,4 +35,21 @@ describe Webbynode::Engines::Rails do
35
35
  subject.should_not be_detected
36
36
  end
37
37
  end
38
+
39
+ describe '#prepare' do
40
+ it "adds a rails_adapter setting when mysql2 is used on the database.yml" do
41
+ io.should_receive(:read_file).with("config/database.yml").and_return("mysql2")
42
+ io.should_receive(:add_setting).with('rails_adapter', 'mysql2')
43
+
44
+ subject.prepare
45
+ end
46
+
47
+ it "doesn't add a rails_adapter otherwise" do
48
+ io.should_receive(:read_file).with("config/database.yml").and_return("mysql")
49
+ io.should_receive(:add_setting).with('rails_adapter', 'mysql2').never
50
+ io.should_receive(:remove_setting).with('rails_adapter')
51
+
52
+ subject.prepare
53
+ end
54
+ end
38
55
  end
@@ -80,13 +80,102 @@ describe Webbynode::Server do
80
80
 
81
81
  it "should upload the local key to the server" do
82
82
  @io.should_receive(:read_file).with("abc").and_return("key_contents")
83
- @re.should_receive(:exec).with("grep \"key_contents\" ~/.ssh/authorized_keys || (echo \"key_contents\" >> ~/.ssh/authorized_keys; chmod 644 ~/.ssh/authorized_keys)")
83
+ @re.should_receive(:exec).with("bash -c 'grep \"key_contents\" ~/.ssh/authorized_keys || (echo \"key_contents\" >> ~/.ssh/authorized_keys; chmod 644 ~/.ssh/authorized_keys)'")
84
84
 
85
85
  @server.add_ssh_key "abc"
86
86
  end
87
87
  end
88
88
  end
89
89
 
90
+ describe "#application_pushed?" do
91
+ context "when successful" do
92
+ it "should check if the application has been pushed" do
93
+ @pushand.should_receive(:parse_remote_app_name).and_return('test.webbynode.com')
94
+ @re.should_receive(:exec).with("cd test.webbynode.com")
95
+ @server.application_pushed?
96
+ end
97
+ end
98
+
99
+ context "when unsuccessful" do
100
+ it "should check if the application has been pushed" do
101
+ @pushand.should_receive(:parse_remote_app_name).and_return('test.webbynode.com')
102
+ error_message = "bash: line 0: cd: test.webbynode.com: No such file or directory"
103
+ @re.should_receive(:exec).with("cd test.webbynode.com").and_return(error_message)
104
+ error_message.should =~ /No such file or directory/
105
+ @server.application_pushed?
106
+ end
107
+ end
108
+ end
109
+ end
110
+
111
+
112
+ describe "#add_ssh_root_key" do
113
+ before(:each) do
114
+ @io = mock("Io")
115
+ @io.as_null_object
116
+
117
+ @re = mock("RemoteExecutor")
118
+ @re.as_null_object
119
+
120
+ @pushand = mock("PushAnd")
121
+ @pushand.as_null_object
122
+
123
+ @server = Webbynode::Server.new("1.2.3.4", "git", 22)
124
+ @server.should_receive(:io).any_number_of_times.and_return(@io)
125
+ @server.should_receive(:remote_executor).any_number_of_times.and_return(@re)
126
+ @server.should_receive(:pushand).any_number_of_times.and_return(@pushand)
127
+ end
128
+
129
+ describe "which local key missing" do
130
+ context "when unsuccessful" do
131
+ it "creates a local SSH key with empty passphrase" do
132
+ @io.should_receive(:file_exists?).with("xyz").and_return(false)
133
+ @io.should_receive(:create_local_key).with("")
134
+
135
+ @server.add_ssh_root_key "xyz"
136
+ end
137
+
138
+ it "creates a local SSH key with the provided passphrase" do
139
+ @io.should_receive(:file_exists?).with("abc").and_return(false)
140
+ @io.should_receive(:create_local_key).with("my_passphrase")
141
+
142
+ @server.add_ssh_root_key "abc", "my_passphrase"
143
+ end
144
+ end
145
+
146
+ context "when unsuccessful" do
147
+ it "raises a PermissionError if cannot write the key" do
148
+ @io.should_receive(:file_exists?).with("xyz").and_return(false)
149
+ @io.should_receive(:create_local_key).and_raise(Webbynode::PermissionError)
150
+
151
+ lambda { @server.add_ssh_root_key "xyz" }.should raise_error(Webbynode::PermissionError)
152
+ end
153
+ end
154
+ end
155
+
156
+ describe "with local key present" do
157
+ context "when successful" do
158
+ it "doesn't create a local key" do
159
+ @io.should_receive(:file_exists?).with("xyz").and_return(true)
160
+ @io.should_receive(:create_local_key).never()
161
+
162
+ @server.add_ssh_root_key "xyz"
163
+ end
164
+
165
+ it "creates the SSH folder on the server" do
166
+ @re.should_receive(:create_folder).with("/root/.ssh")
167
+ @server.add_ssh_root_key "abc"
168
+ end
169
+
170
+ it "creates the local key to the server" do
171
+ @io.should_receive(:read_file).with("abc").and_return("key_contents")
172
+ @re.should_receive(:exec).with("sudo bash -c 'grep \"key_contents\" /root/.ssh/authorized_keys || (echo \"key_contents\" >> /root/.ssh/authorized_keys; chmod 644 /root/.ssh/authorized_keys)'")
173
+
174
+ @server.add_ssh_root_key "abc"
175
+ end
176
+ end
177
+ end
178
+
90
179
  describe "#application_pushed?" do
91
180
  context "when successful" do
92
181
  it "should check if the application has been pushed" do
data/webbynode.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{webbynode}
5
- s.version = "1.0.4"
5
+ s.version = "1.0.4.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Felipe Coury"]
9
- s.date = %q{2011-02-23}
9
+ s.date = %q{2011-02-26}
10
10
  s.description = %q{Webbynode Deployment Gem}
11
11
  s.email = %q{felipe@webbynode.com}
12
12
  s.executables = ["webbynode", "wn"]
13
- s.extra_rdoc_files = ["README.rdoc", "bin/webbynode", "bin/wn", "lib/templates/api_token", "lib/templates/backup", "lib/templates/gitignore", "lib/templates/help", "lib/webbynode.rb", "lib/webbynode/api_client.rb", "lib/webbynode/application.rb", "lib/webbynode/attribute_accessors.rb", "lib/webbynode/command.rb", "lib/webbynode/commands/add_backup.rb", "lib/webbynode/commands/add_key.rb", "lib/webbynode/commands/addons.rb", "lib/webbynode/commands/alias.rb", "lib/webbynode/commands/apps.rb", "lib/webbynode/commands/change_dns.rb", "lib/webbynode/commands/config.rb", "lib/webbynode/commands/console.rb", "lib/webbynode/commands/delete.rb", "lib/webbynode/commands/help.rb", "lib/webbynode/commands/init.rb", "lib/webbynode/commands/logs.rb", "lib/webbynode/commands/open.rb", "lib/webbynode/commands/push.rb", "lib/webbynode/commands/remote.rb", "lib/webbynode/commands/restart.rb", "lib/webbynode/commands/settings.rb", "lib/webbynode/commands/start.rb", "lib/webbynode/commands/stop.rb", "lib/webbynode/commands/tasks.rb", "lib/webbynode/commands/user.rb", "lib/webbynode/commands/version.rb", "lib/webbynode/commands/webbies.rb", "lib/webbynode/engines/all.rb", "lib/webbynode/engines/django.rb", "lib/webbynode/engines/engine.rb", "lib/webbynode/engines/nodejs.rb", "lib/webbynode/engines/php.rb", "lib/webbynode/engines/rack.rb", "lib/webbynode/engines/rails.rb", "lib/webbynode/engines/rails3.rb", "lib/webbynode/engines/wsgi.rb", "lib/webbynode/gemfile.rb", "lib/webbynode/git.rb", "lib/webbynode/io.rb", "lib/webbynode/notify.rb", "lib/webbynode/option.rb", "lib/webbynode/parameter.rb", "lib/webbynode/properties.rb", "lib/webbynode/push_and.rb", "lib/webbynode/remote_executor.rb", "lib/webbynode/server.rb", "lib/webbynode/ssh.rb", "lib/webbynode/ssh_keys.rb", "lib/webbynode/trial.rb", "lib/webbynode/updater.rb"]
14
- s.files = ["Manifest", "PostInstall.txt", "README.rdoc", "Rakefile", "assets/webbynode.png", "bin/webbynode", "bin/wn", "changelog.rdoc", "cucumber.yml.old", "inactive_features/bootstrap.feature", "inactive_features/step_definitions/command_steps.rb", "inactive_features/support/env.rb", "inactive_features/support/hooks.rb", "inactive_features/support/io_features.rb", "inactive_features/support/mocha.rb", "lib/templates/api_token", "lib/templates/backup", "lib/templates/gitignore", "lib/templates/help", "lib/webbynode.rb", "lib/webbynode/api_client.rb", "lib/webbynode/application.rb", "lib/webbynode/attribute_accessors.rb", "lib/webbynode/command.rb", "lib/webbynode/commands/add_backup.rb", "lib/webbynode/commands/add_key.rb", "lib/webbynode/commands/addons.rb", "lib/webbynode/commands/alias.rb", "lib/webbynode/commands/apps.rb", "lib/webbynode/commands/change_dns.rb", "lib/webbynode/commands/config.rb", "lib/webbynode/commands/console.rb", "lib/webbynode/commands/delete.rb", "lib/webbynode/commands/help.rb", "lib/webbynode/commands/init.rb", "lib/webbynode/commands/logs.rb", "lib/webbynode/commands/open.rb", "lib/webbynode/commands/push.rb", "lib/webbynode/commands/remote.rb", "lib/webbynode/commands/restart.rb", "lib/webbynode/commands/settings.rb", "lib/webbynode/commands/start.rb", "lib/webbynode/commands/stop.rb", "lib/webbynode/commands/tasks.rb", "lib/webbynode/commands/user.rb", "lib/webbynode/commands/version.rb", "lib/webbynode/commands/webbies.rb", "lib/webbynode/engines/all.rb", "lib/webbynode/engines/django.rb", "lib/webbynode/engines/engine.rb", "lib/webbynode/engines/nodejs.rb", "lib/webbynode/engines/php.rb", "lib/webbynode/engines/rack.rb", "lib/webbynode/engines/rails.rb", "lib/webbynode/engines/rails3.rb", "lib/webbynode/engines/wsgi.rb", "lib/webbynode/gemfile.rb", "lib/webbynode/git.rb", "lib/webbynode/io.rb", "lib/webbynode/notify.rb", "lib/webbynode/option.rb", "lib/webbynode/parameter.rb", "lib/webbynode/properties.rb", "lib/webbynode/push_and.rb", "lib/webbynode/remote_executor.rb", "lib/webbynode/server.rb", "lib/webbynode/ssh.rb", "lib/webbynode/ssh_keys.rb", "lib/webbynode/trial.rb", "lib/webbynode/updater.rb", "spec/fixtures/aliases", "spec/fixtures/api/credentials", "spec/fixtures/api/dns", "spec/fixtures/api/dns_a_record", "spec/fixtures/api/dns_a_record_already_exists", "spec/fixtures/api/dns_a_record_error", "spec/fixtures/api/dns_new_zone", "spec/fixtures/api/webbies", "spec/fixtures/api/webbies_unauthorized", "spec/fixtures/api/webby", "spec/fixtures/commands/tasks/after_push", "spec/fixtures/fixture_helpers", "spec/fixtures/git/config/210.11.13.12", "spec/fixtures/git/config/67.23.79.31", "spec/fixtures/git/config/67.23.79.32", "spec/fixtures/git/config/config", "spec/fixtures/git/config/config_5", "spec/fixtures/git/config/new_210.11.13.12", "spec/fixtures/git/config/new_67.23.79.31", "spec/fixtures/git/config/new_67.23.79.32", "spec/fixtures/git/config/new_config", "spec/fixtures/git/status/clean", "spec/fixtures/git/status/dirty", "spec/fixtures/nodejs/server.js", "spec/fixtures/pushand", "spec/fixtures/settings.py", "spec/fixtures/trial/user_add", "spec/spec_helper.rb", "spec/webbynode/api_client_spec.rb", "spec/webbynode/application_spec.rb", "spec/webbynode/command_spec.rb", "spec/webbynode/commands/add_backup_spec.rb", "spec/webbynode/commands/add_key_spec.rb", "spec/webbynode/commands/addons_spec.rb", "spec/webbynode/commands/alias_spec.rb", "spec/webbynode/commands/apps_spec.rb", "spec/webbynode/commands/change_dns_spec.rb", "spec/webbynode/commands/config_spec.rb", "spec/webbynode/commands/console_spec.rb", "spec/webbynode/commands/delete_spec.rb", "spec/webbynode/commands/help_spec.rb", "spec/webbynode/commands/init_spec.rb", "spec/webbynode/commands/logs_spec.rb", "spec/webbynode/commands/open_spec.rb", "spec/webbynode/commands/push_spec.rb", "spec/webbynode/commands/remote_spec.rb", "spec/webbynode/commands/settings_spec.rb", "spec/webbynode/commands/tasks_spec.rb", "spec/webbynode/commands/user_spec.rb", "spec/webbynode/commands/version_spec.rb", "spec/webbynode/commands/webbies_spec.rb", "spec/webbynode/engines/django_spec.rb", "spec/webbynode/engines/engine_spec.rb", "spec/webbynode/engines/nodejs_spec.rb", "spec/webbynode/engines/php_spec.rb", "spec/webbynode/engines/rack_spec.rb", "spec/webbynode/engines/rails3_spec.rb", "spec/webbynode/engines/rails_spec.rb", "spec/webbynode/engines/wsgi_spec.rb", "spec/webbynode/gemfile_spec.rb", "spec/webbynode/git_spec.rb", "spec/webbynode/io_spec.rb", "spec/webbynode/option_spec.rb", "spec/webbynode/parameter_spec.rb", "spec/webbynode/properties_spec.rb", "spec/webbynode/push_and_spec.rb", "spec/webbynode/remote_executor_spec.rb", "spec/webbynode/server_spec.rb", "spec/webbynode/ssh_spec.rb", "spec/webbynode/trial_spec.rb", "webbynode.gemspec"]
13
+ s.extra_rdoc_files = ["README.rdoc", "bin/webbynode", "bin/wn", "lib/templates/api_token", "lib/templates/backup", "lib/templates/gitignore", "lib/templates/help", "lib/webbynode.rb", "lib/webbynode/api_client.rb", "lib/webbynode/application.rb", "lib/webbynode/attribute_accessors.rb", "lib/webbynode/command.rb", "lib/webbynode/commands/add_backup.rb", "lib/webbynode/commands/add_key.rb", "lib/webbynode/commands/addons.rb", "lib/webbynode/commands/alias.rb", "lib/webbynode/commands/apps.rb", "lib/webbynode/commands/authorize_root.rb", "lib/webbynode/commands/change_dns.rb", "lib/webbynode/commands/config.rb", "lib/webbynode/commands/console.rb", "lib/webbynode/commands/delete.rb", "lib/webbynode/commands/help.rb", "lib/webbynode/commands/init.rb", "lib/webbynode/commands/logs.rb", "lib/webbynode/commands/open.rb", "lib/webbynode/commands/push.rb", "lib/webbynode/commands/remote.rb", "lib/webbynode/commands/restart.rb", "lib/webbynode/commands/settings.rb", "lib/webbynode/commands/start.rb", "lib/webbynode/commands/stop.rb", "lib/webbynode/commands/tasks.rb", "lib/webbynode/commands/user.rb", "lib/webbynode/commands/version.rb", "lib/webbynode/commands/webbies.rb", "lib/webbynode/engines/all.rb", "lib/webbynode/engines/django.rb", "lib/webbynode/engines/engine.rb", "lib/webbynode/engines/html.rb", "lib/webbynode/engines/nodejs.rb", "lib/webbynode/engines/php.rb", "lib/webbynode/engines/rack.rb", "lib/webbynode/engines/rails.rb", "lib/webbynode/engines/rails3.rb", "lib/webbynode/engines/wsgi.rb", "lib/webbynode/gemfile.rb", "lib/webbynode/git.rb", "lib/webbynode/io.rb", "lib/webbynode/notify.rb", "lib/webbynode/option.rb", "lib/webbynode/parameter.rb", "lib/webbynode/properties.rb", "lib/webbynode/push_and.rb", "lib/webbynode/remote_executor.rb", "lib/webbynode/server.rb", "lib/webbynode/ssh.rb", "lib/webbynode/ssh_keys.rb", "lib/webbynode/trial.rb", "lib/webbynode/updater.rb"]
14
+ s.files = ["Gemfile", "Gemfile.lock", "Guardfile", "Manifest", "PostInstall.txt", "README.rdoc", "Rakefile", "assets/webbynode.png", "autotest/discover.rb", "bin/webbynode", "bin/wn", "changelog.rdoc", "cucumber.yml.old", "inactive_features/bootstrap.feature", "inactive_features/step_definitions/command_steps.rb", "inactive_features/support/env.rb", "inactive_features/support/hooks.rb", "inactive_features/support/io_features.rb", "inactive_features/support/mocha.rb", "lib/templates/api_token", "lib/templates/backup", "lib/templates/gitignore", "lib/templates/help", "lib/webbynode.rb", "lib/webbynode/api_client.rb", "lib/webbynode/application.rb", "lib/webbynode/attribute_accessors.rb", "lib/webbynode/command.rb", "lib/webbynode/commands/add_backup.rb", "lib/webbynode/commands/add_key.rb", "lib/webbynode/commands/addons.rb", "lib/webbynode/commands/alias.rb", "lib/webbynode/commands/apps.rb", "lib/webbynode/commands/authorize_root.rb", "lib/webbynode/commands/change_dns.rb", "lib/webbynode/commands/config.rb", "lib/webbynode/commands/console.rb", "lib/webbynode/commands/delete.rb", "lib/webbynode/commands/help.rb", "lib/webbynode/commands/init.rb", "lib/webbynode/commands/logs.rb", "lib/webbynode/commands/open.rb", "lib/webbynode/commands/push.rb", "lib/webbynode/commands/remote.rb", "lib/webbynode/commands/restart.rb", "lib/webbynode/commands/settings.rb", "lib/webbynode/commands/start.rb", "lib/webbynode/commands/stop.rb", "lib/webbynode/commands/tasks.rb", "lib/webbynode/commands/user.rb", "lib/webbynode/commands/version.rb", "lib/webbynode/commands/webbies.rb", "lib/webbynode/engines/all.rb", "lib/webbynode/engines/django.rb", "lib/webbynode/engines/engine.rb", "lib/webbynode/engines/html.rb", "lib/webbynode/engines/nodejs.rb", "lib/webbynode/engines/php.rb", "lib/webbynode/engines/rack.rb", "lib/webbynode/engines/rails.rb", "lib/webbynode/engines/rails3.rb", "lib/webbynode/engines/wsgi.rb", "lib/webbynode/gemfile.rb", "lib/webbynode/git.rb", "lib/webbynode/io.rb", "lib/webbynode/notify.rb", "lib/webbynode/option.rb", "lib/webbynode/parameter.rb", "lib/webbynode/properties.rb", "lib/webbynode/push_and.rb", "lib/webbynode/remote_executor.rb", "lib/webbynode/server.rb", "lib/webbynode/ssh.rb", "lib/webbynode/ssh_keys.rb", "lib/webbynode/trial.rb", "lib/webbynode/updater.rb", "spec/fixtures/aliases", "spec/fixtures/api/credentials", "spec/fixtures/api/dns", "spec/fixtures/api/dns_a_record", "spec/fixtures/api/dns_a_record_already_exists", "spec/fixtures/api/dns_a_record_error", "spec/fixtures/api/dns_new_zone", "spec/fixtures/api/webbies", "spec/fixtures/api/webbies_unauthorized", "spec/fixtures/api/webby", "spec/fixtures/commands/tasks/after_push", "spec/fixtures/fixture_helpers", "spec/fixtures/git/config/210.11.13.12", "spec/fixtures/git/config/67.23.79.31", "spec/fixtures/git/config/67.23.79.32", "spec/fixtures/git/config/config", "spec/fixtures/git/config/config_5", "spec/fixtures/git/config/new_210.11.13.12", "spec/fixtures/git/config/new_67.23.79.31", "spec/fixtures/git/config/new_67.23.79.32", "spec/fixtures/git/config/new_config", "spec/fixtures/git/status/clean", "spec/fixtures/git/status/dirty", "spec/fixtures/nodejs/server.js", "spec/fixtures/pushand", "spec/fixtures/settings.py", "spec/fixtures/trial/user_add", "spec/spec_helper.rb", "spec/webbynode/api_client_spec.rb", "spec/webbynode/application_spec.rb", "spec/webbynode/command_spec.rb", "spec/webbynode/commands/add_backup_spec.rb", "spec/webbynode/commands/add_key_spec.rb", "spec/webbynode/commands/addons_spec.rb", "spec/webbynode/commands/alias_spec.rb", "spec/webbynode/commands/apps_spec.rb", "spec/webbynode/commands/authorize_root_spec.rb", "spec/webbynode/commands/change_dns_spec.rb", "spec/webbynode/commands/config_spec.rb", "spec/webbynode/commands/console_spec.rb", "spec/webbynode/commands/delete_spec.rb", "spec/webbynode/commands/help_spec.rb", "spec/webbynode/commands/init_spec.rb", "spec/webbynode/commands/logs_spec.rb", "spec/webbynode/commands/open_spec.rb", "spec/webbynode/commands/push_spec.rb", "spec/webbynode/commands/remote_spec.rb", "spec/webbynode/commands/settings_spec.rb", "spec/webbynode/commands/tasks_spec.rb", "spec/webbynode/commands/user_spec.rb", "spec/webbynode/commands/version_spec.rb", "spec/webbynode/commands/webbies_spec.rb", "spec/webbynode/engines/django_spec.rb", "spec/webbynode/engines/engine_spec.rb", "spec/webbynode/engines/html_spec.rb", "spec/webbynode/engines/nodejs_spec.rb", "spec/webbynode/engines/php_spec.rb", "spec/webbynode/engines/rack_spec.rb", "spec/webbynode/engines/rails3_spec.rb", "spec/webbynode/engines/rails_spec.rb", "spec/webbynode/engines/wsgi_spec.rb", "spec/webbynode/gemfile_spec.rb", "spec/webbynode/git_spec.rb", "spec/webbynode/io_spec.rb", "spec/webbynode/option_spec.rb", "spec/webbynode/parameter_spec.rb", "spec/webbynode/properties_spec.rb", "spec/webbynode/push_and_spec.rb", "spec/webbynode/remote_executor_spec.rb", "spec/webbynode/server_spec.rb", "spec/webbynode/ssh_spec.rb", "spec/webbynode/trial_spec.rb", "webbynode.gemspec"]
15
15
  s.homepage = %q{http://webbynode.com}
16
16
  s.post_install_message = %q{
17
17
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webbynode
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 75
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
9
  - 4
10
- version: 1.0.4
10
+ - 2
11
+ version: 1.0.4.2
11
12
  platform: ruby
12
13
  authors:
13
14
  - Felipe Coury
@@ -15,7 +16,7 @@ autorequire:
15
16
  bindir: bin
16
17
  cert_chain: []
17
18
 
18
- date: 2011-02-23 00:00:00 -03:00
19
+ date: 2011-02-26 00:00:00 -03:00
19
20
  default_executable:
20
21
  dependencies:
21
22
  - !ruby/object:Gem::Dependency
@@ -139,6 +140,7 @@ extra_rdoc_files:
139
140
  - lib/webbynode/commands/addons.rb
140
141
  - lib/webbynode/commands/alias.rb
141
142
  - lib/webbynode/commands/apps.rb
143
+ - lib/webbynode/commands/authorize_root.rb
142
144
  - lib/webbynode/commands/change_dns.rb
143
145
  - lib/webbynode/commands/config.rb
144
146
  - lib/webbynode/commands/console.rb
@@ -160,6 +162,7 @@ extra_rdoc_files:
160
162
  - lib/webbynode/engines/all.rb
161
163
  - lib/webbynode/engines/django.rb
162
164
  - lib/webbynode/engines/engine.rb
165
+ - lib/webbynode/engines/html.rb
163
166
  - lib/webbynode/engines/nodejs.rb
164
167
  - lib/webbynode/engines/php.rb
165
168
  - lib/webbynode/engines/rack.rb
@@ -181,11 +184,15 @@ extra_rdoc_files:
181
184
  - lib/webbynode/trial.rb
182
185
  - lib/webbynode/updater.rb
183
186
  files:
187
+ - Gemfile
188
+ - Gemfile.lock
189
+ - Guardfile
184
190
  - Manifest
185
191
  - PostInstall.txt
186
192
  - README.rdoc
187
193
  - Rakefile
188
194
  - assets/webbynode.png
195
+ - autotest/discover.rb
189
196
  - bin/webbynode
190
197
  - bin/wn
191
198
  - changelog.rdoc
@@ -210,6 +217,7 @@ files:
210
217
  - lib/webbynode/commands/addons.rb
211
218
  - lib/webbynode/commands/alias.rb
212
219
  - lib/webbynode/commands/apps.rb
220
+ - lib/webbynode/commands/authorize_root.rb
213
221
  - lib/webbynode/commands/change_dns.rb
214
222
  - lib/webbynode/commands/config.rb
215
223
  - lib/webbynode/commands/console.rb
@@ -231,6 +239,7 @@ files:
231
239
  - lib/webbynode/engines/all.rb
232
240
  - lib/webbynode/engines/django.rb
233
241
  - lib/webbynode/engines/engine.rb
242
+ - lib/webbynode/engines/html.rb
234
243
  - lib/webbynode/engines/nodejs.rb
235
244
  - lib/webbynode/engines/php.rb
236
245
  - lib/webbynode/engines/rack.rb
@@ -287,6 +296,7 @@ files:
287
296
  - spec/webbynode/commands/addons_spec.rb
288
297
  - spec/webbynode/commands/alias_spec.rb
289
298
  - spec/webbynode/commands/apps_spec.rb
299
+ - spec/webbynode/commands/authorize_root_spec.rb
290
300
  - spec/webbynode/commands/change_dns_spec.rb
291
301
  - spec/webbynode/commands/config_spec.rb
292
302
  - spec/webbynode/commands/console_spec.rb
@@ -304,6 +314,7 @@ files:
304
314
  - spec/webbynode/commands/webbies_spec.rb
305
315
  - spec/webbynode/engines/django_spec.rb
306
316
  - spec/webbynode/engines/engine_spec.rb
317
+ - spec/webbynode/engines/html_spec.rb
307
318
  - spec/webbynode/engines/nodejs_spec.rb
308
319
  - spec/webbynode/engines/php_spec.rb
309
320
  - spec/webbynode/engines/rack_spec.rb