shelly 0.0.57 → 0.0.58
Sign up to get free protection for your applications and to get access to all the features.
- data/Guardfile +1 -0
- data/lib/shelly/cli/backup.rb +13 -14
- data/lib/shelly/cli/config.rb +43 -55
- data/lib/shelly/cli/deploys.rb +8 -10
- data/lib/shelly/cli/main.rb +80 -93
- data/lib/shelly/cli/user.rb +36 -49
- data/lib/shelly/cloudfile.rb +1 -2
- data/lib/shelly/helpers.rb +11 -3
- data/lib/shelly/version.rb +1 -1
- data/spec/shelly/cli/backup_spec.rb +35 -33
- data/spec/shelly/cli/config_spec.rb +53 -135
- data/spec/shelly/cli/deploys_spec.rb +20 -59
- data/spec/shelly/cli/main_spec.rb +106 -186
- data/spec/shelly/cli/user_spec.rb +23 -27
- metadata +147 -163
@@ -10,6 +10,7 @@ describe Shelly::CLI::Deploys do
|
|
10
10
|
Shelly::Client.stub(:new).and_return(@client)
|
11
11
|
$stdout.stub(:puts)
|
12
12
|
$stdout.stub(:print)
|
13
|
+
@app = Shelly::App.new("foo-staging")
|
13
14
|
end
|
14
15
|
|
15
16
|
describe "#list" do
|
@@ -24,8 +25,12 @@ describe Shelly::CLI::Deploys do
|
|
24
25
|
hooks(@deploys, :list).should include(:logged_in?)
|
25
26
|
end
|
26
27
|
|
27
|
-
|
28
|
-
|
28
|
+
# multiple_clouds is tested in main_spec.rb in describe "#start" block
|
29
|
+
it "should ensure multiple_clouds check" do
|
30
|
+
@client.should_receive(:deploy_logs).with("foo-staging").and_return([
|
31
|
+
{"failed" => false, "created_at" => "2011-12-12-14-14-59"}])
|
32
|
+
@deploys.should_receive(:multiple_clouds).and_return(@app)
|
33
|
+
invoke(@deploys, :list)
|
29
34
|
end
|
30
35
|
|
31
36
|
it "should exit if user doesn't have access to cloud in Cloudfile" do
|
@@ -34,39 +39,14 @@ describe Shelly::CLI::Deploys do
|
|
34
39
|
lambda { invoke(@deploys, :list) }.should raise_error(SystemExit)
|
35
40
|
end
|
36
41
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
$stdout.should_receive(:puts).with("Available clouds:")
|
46
|
-
$stdout.should_receive(:puts).with(" * foo-production")
|
47
|
-
$stdout.should_receive(:puts).with(" * foo-staging")
|
48
|
-
lambda { invoke(@deploys, :list) }.should raise_error(SystemExit)
|
49
|
-
end
|
50
|
-
|
51
|
-
it "should take cloud from command line for which to show logs" do
|
52
|
-
@client.should_receive(:deploy_logs).with("foo-staging").and_return([{"failed" => false, "created_at" => "2011-12-12-14-14-59"}])
|
53
|
-
$stdout.should_receive(:puts).with(green "Available deploy logs")
|
54
|
-
$stdout.should_receive(:puts).with(" * 2011-12-12-14-14-59")
|
55
|
-
@deploys.options = {:cloud => "foo-staging"}
|
56
|
-
invoke(@deploys, :list)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
context "single cloud" do
|
61
|
-
it "should display available logs" do
|
62
|
-
@client.should_receive(:deploy_logs).with("foo-staging").and_return([
|
63
|
-
{"failed" => false, "created_at" => "2011-12-12-14-14-59"},
|
64
|
-
{"failed" => true, "created_at" => "2011-12-12-15-14-59"}])
|
65
|
-
$stdout.should_receive(:puts).with(green "Available deploy logs")
|
66
|
-
$stdout.should_receive(:puts).with(" * 2011-12-12-14-14-59")
|
67
|
-
$stdout.should_receive(:puts).with(" * 2011-12-12-15-14-59 (failed)")
|
68
|
-
invoke(@deploys, :list)
|
69
|
-
end
|
42
|
+
it "should display available logs" do
|
43
|
+
@client.should_receive(:deploy_logs).with("foo-staging").and_return([
|
44
|
+
{"failed" => false, "created_at" => "2011-12-12-14-14-59"},
|
45
|
+
{"failed" => true, "created_at" => "2011-12-12-15-14-59"}])
|
46
|
+
$stdout.should_receive(:puts).with(green "Available deploy logs")
|
47
|
+
$stdout.should_receive(:puts).with(" * 2011-12-12-14-14-59")
|
48
|
+
$stdout.should_receive(:puts).with(" * 2011-12-12-15-14-59 (failed)")
|
49
|
+
invoke(@deploys, :list)
|
70
50
|
end
|
71
51
|
end
|
72
52
|
|
@@ -82,8 +62,11 @@ describe Shelly::CLI::Deploys do
|
|
82
62
|
hooks(@deploys, :show).should include(:logged_in?)
|
83
63
|
end
|
84
64
|
|
85
|
-
|
86
|
-
|
65
|
+
# multiple_clouds is tested in main_spec.rb in describe "#start" block
|
66
|
+
it "should ensure multiple_clouds check" do
|
67
|
+
@client.should_receive(:deploy_log).with("foo-staging", "last").and_return(response)
|
68
|
+
@deploys.should_receive(:multiple_clouds).and_return(@app)
|
69
|
+
invoke(@deploys, :show, "last")
|
87
70
|
end
|
88
71
|
|
89
72
|
context "user doesn't have access to cloud" do
|
@@ -104,28 +87,6 @@ describe Shelly::CLI::Deploys do
|
|
104
87
|
end
|
105
88
|
end
|
106
89
|
|
107
|
-
context "multiple clouds" do
|
108
|
-
before do
|
109
|
-
File.open("Cloudfile", 'w') {|f| f.write("foo-staging:\nfoo-production:\n") }
|
110
|
-
end
|
111
|
-
|
112
|
-
it "should show information to select specific cloud and exit" do
|
113
|
-
$stdout.should_receive(:puts).with(red "You have multiple clouds in Cloudfile.")
|
114
|
-
$stdout.should_receive(:puts).with("Select cloud using `shelly deploys show last --cloud foo-production`")
|
115
|
-
$stdout.should_receive(:puts).with("Available clouds:")
|
116
|
-
$stdout.should_receive(:puts).with(" * foo-production")
|
117
|
-
$stdout.should_receive(:puts).with(" * foo-staging")
|
118
|
-
lambda { invoke(@deploys, :show, "last") }.should raise_error(SystemExit)
|
119
|
-
end
|
120
|
-
|
121
|
-
it "should render the logs" do
|
122
|
-
@client.should_receive(:deploy_log).with("foo-staging", "last").and_return(response)
|
123
|
-
expected_output
|
124
|
-
@deploys.options = {:cloud => "foo-staging"}
|
125
|
-
invoke(@deploys, :show, "last")
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
90
|
context "single cloud" do
|
130
91
|
it "should render logs without passing cloud" do
|
131
92
|
@client.should_receive(:deploy_log).with("foo-staging", "last").and_return(response)
|
@@ -553,20 +553,12 @@ OUT
|
|
553
553
|
Dir.chdir("/projects/foo")
|
554
554
|
File.open("Cloudfile", 'w') {|f| f.write("foo-production:\n") }
|
555
555
|
Shelly::User.stub(:new).and_return(@user)
|
556
|
-
@client.stub(:apps).and_return([{"code_name" => "foo-production"
|
556
|
+
@client.stub(:apps).and_return([{"code_name" => "foo-production", "state" => "running"},
|
557
|
+
{"code_name" => "foo-staging", "state" => "no_code"}])
|
557
558
|
@app = Shelly::App.new
|
558
559
|
Shelly::App.stub(:new).and_return(@app)
|
559
560
|
end
|
560
561
|
|
561
|
-
# This spec tests cloudfile_present? hook
|
562
|
-
it "should exit if there is no Cloudfile" do
|
563
|
-
File.delete("Cloudfile")
|
564
|
-
$stdout.should_receive(:puts).with("\e[31mNo Cloudfile found\e[0m")
|
565
|
-
lambda {
|
566
|
-
invoke(@main, :start)
|
567
|
-
}.should raise_error(SystemExit)
|
568
|
-
end
|
569
|
-
|
570
562
|
it "should ensure user has logged in" do
|
571
563
|
hooks(@main, :start).should include(:logged_in?)
|
572
564
|
end
|
@@ -588,6 +580,29 @@ OUT
|
|
588
580
|
end
|
589
581
|
end
|
590
582
|
|
583
|
+
# this tests multiple_clouds method used in majority of tasks
|
584
|
+
context "without Cloudfile" do
|
585
|
+
it "should use cloud from params" do
|
586
|
+
Dir.chdir("/projects")
|
587
|
+
@client.stub(:start_cloud)
|
588
|
+
$stdout.should_receive(:puts).with(green "Starting cloud foo-production.")
|
589
|
+
@main.options = {:cloud => "foo-production"}
|
590
|
+
invoke(@main, :start)
|
591
|
+
end
|
592
|
+
|
593
|
+
it "should ask user to specify cloud, list all clouds and exit" do
|
594
|
+
Dir.chdir("/projects")
|
595
|
+
@client.stub(:start_cloud)
|
596
|
+
$stdout.should_receive(:puts).with(red "You have to specify cloud.")
|
597
|
+
$stdout.should_receive(:puts).with("Select cloud using `shelly start --cloud CLOUD_NAME`")
|
598
|
+
$stdout.should_receive(:puts).with(green "You have following clouds available:")
|
599
|
+
$stdout.should_receive(:puts).with(" foo-production | running")
|
600
|
+
$stdout.should_receive(:puts).with(" foo-staging | no code")
|
601
|
+
lambda { invoke(@main, :start) }.should raise_error(SystemExit)
|
602
|
+
end
|
603
|
+
end
|
604
|
+
|
605
|
+
# this tests multiple_clouds method used in majority of tasks
|
591
606
|
context "multiple clouds in Cloudfile" do
|
592
607
|
before do
|
593
608
|
File.open("Cloudfile", 'w') {|f| f.write("foo-staging:\nfoo-production:\n") }
|
@@ -692,8 +707,13 @@ We have been notified about it. We will be adding new resources shortly")
|
|
692
707
|
hooks(@main, :stop).should include(:logged_in?)
|
693
708
|
end
|
694
709
|
|
695
|
-
|
696
|
-
|
710
|
+
# multiple_clouds is tested in main_spec.rb in describe "#start" block
|
711
|
+
it "should ensure multiple_clouds check" do
|
712
|
+
@client.stub(:stop_cloud)
|
713
|
+
@main.should_receive(:multiple_clouds).and_return(@app)
|
714
|
+
fake_stdin(["yes"]) do
|
715
|
+
invoke(@main, :stop)
|
716
|
+
end
|
697
717
|
end
|
698
718
|
|
699
719
|
it "should exit if user doesn't have access to clouds in Cloudfile" do
|
@@ -706,48 +726,21 @@ We have been notified about it. We will be adding new resources shortly")
|
|
706
726
|
}.should raise_error(SystemExit)
|
707
727
|
end
|
708
728
|
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
invoke(@main, :stop)
|
717
|
-
end
|
729
|
+
it "should stop the cloud" do
|
730
|
+
@client.stub(:stop_cloud)
|
731
|
+
$stdout.should_receive(:print).with("Are you sure you want to shut down your application (yes/no): ")
|
732
|
+
$stdout.should_receive(:puts).with("\n")
|
733
|
+
$stdout.should_receive(:puts).with("Cloud 'foo-production' stopped")
|
734
|
+
fake_stdin(["yes"]) do
|
735
|
+
invoke(@main, :stop)
|
718
736
|
end
|
719
737
|
end
|
720
738
|
|
721
|
-
context "multiple clouds in Cloudfile" do
|
722
|
-
before do
|
723
|
-
File.open("Cloudfile", 'w') {|f| f.write("foo-staging:\nfoo-production:\n") }
|
724
|
-
end
|
725
|
-
|
726
|
-
it "should show information to stop specific cloud and exit" do
|
727
|
-
$stdout.should_receive(:puts).with(red "You have multiple clouds in Cloudfile.")
|
728
|
-
$stdout.should_receive(:puts).with("Select cloud using `shelly stop --cloud foo-production`")
|
729
|
-
$stdout.should_receive(:puts).with("Available clouds:")
|
730
|
-
$stdout.should_receive(:puts).with(" * foo-production")
|
731
|
-
$stdout.should_receive(:puts).with(" * foo-staging")
|
732
|
-
lambda { invoke(@main, :stop) }.should raise_error(SystemExit)
|
733
|
-
end
|
734
|
-
|
735
|
-
it "should fetch from command line which cloud to stop" do
|
736
|
-
@client.should_receive(:stop_cloud).with("foo-staging")
|
737
|
-
$stdout.should_receive(:print).with("Are you sure you want to shut down your application (yes/no): ")
|
738
|
-
$stdout.should_receive(:puts).with("\n")
|
739
|
-
$stdout.should_receive(:puts).with("Cloud 'foo-staging' stopped")
|
740
|
-
@main.options = {:cloud => "foo-staging"}
|
741
|
-
fake_stdin(["yes"]) do
|
742
|
-
invoke(@main, :stop)
|
743
|
-
end
|
744
|
-
end
|
745
|
-
end
|
746
739
|
end
|
747
740
|
|
748
741
|
describe "#ip" do
|
749
742
|
before do
|
750
|
-
File.open("Cloudfile", 'w') {|f| f.write("foo-
|
743
|
+
File.open("Cloudfile", 'w') {|f| f.write("foo-production:\n") }
|
751
744
|
@main.stub(:logged_in?).and_return(true)
|
752
745
|
end
|
753
746
|
|
@@ -755,8 +748,12 @@ We have been notified about it. We will be adding new resources shortly")
|
|
755
748
|
hooks(@main, :ip).should include(:logged_in?)
|
756
749
|
end
|
757
750
|
|
758
|
-
|
759
|
-
|
751
|
+
# multiple_clouds is tested in main_spec.rb in describe "#start" block
|
752
|
+
it "should ensure multiple_clouds check" do
|
753
|
+
@app.should_receive(:web_server_ip).and_return("11.11")
|
754
|
+
@app.should_receive(:mail_server_ip).and_return("22.22")
|
755
|
+
@main.should_receive(:multiple_clouds).and_return(@app)
|
756
|
+
invoke(@main, :ip)
|
760
757
|
end
|
761
758
|
|
762
759
|
context "on success" do
|
@@ -777,8 +774,8 @@ We have been notified about it. We will be adding new resources shortly")
|
|
777
774
|
it "should raise an error if user does not have access to cloud" do
|
778
775
|
exception = Shelly::Client::NotFoundException.new("resource" => "cloud")
|
779
776
|
@client.stub(:app).and_raise(exception)
|
780
|
-
$stdout.should_receive(:puts).with(red "You have no access to 'foo-
|
781
|
-
invoke(@main, :ip)
|
777
|
+
$stdout.should_receive(:puts).with(red "You have no access to 'foo-production' cloud defined in Cloudfile")
|
778
|
+
lambda { invoke(@main, :ip) }.should raise_error(SystemExit)
|
782
779
|
end
|
783
780
|
end
|
784
781
|
end
|
@@ -803,13 +800,14 @@ We have been notified about it. We will be adding new resources shortly")
|
|
803
800
|
hooks(@main, :setup).should include(:inside_git_repository?)
|
804
801
|
end
|
805
802
|
|
806
|
-
|
807
|
-
|
803
|
+
# multiple_clouds is tested in main_spec.rb in describe "#start" block
|
804
|
+
it "should ensure multiple_clouds check" do
|
805
|
+
@main.should_receive(:multiple_clouds).and_return(@app)
|
806
|
+
invoke(@main, :setup)
|
808
807
|
end
|
809
808
|
|
810
809
|
it "should show info about adding remote and branch" do
|
811
|
-
$stdout.should_receive(:puts).with("
|
812
|
-
$stdout.should_receive(:puts).with(green "Adding foo-staging cloud")
|
810
|
+
$stdout.should_receive(:puts).with(green "Setting up foo-staging cloud")
|
813
811
|
$stdout.should_receive(:puts).with("git remote add foo-staging git_url")
|
814
812
|
$stdout.should_receive(:puts).with("git fetch production")
|
815
813
|
$stdout.should_receive(:puts).with("git checkout -b foo-staging --track foo-staging/master")
|
@@ -849,7 +847,7 @@ We have been notified about it. We will be adding new resources shortly")
|
|
849
847
|
end
|
850
848
|
|
851
849
|
context "and user answers no" do
|
852
|
-
it "should display commands to perform manually
|
850
|
+
it "should display commands to perform manually" do
|
853
851
|
@app.should_not_receive(:add_git_remote)
|
854
852
|
@app.should_not_receive(:git_fetch_remote)
|
855
853
|
@app.should_not_receive(:git_add_tracking_branch)
|
@@ -877,6 +875,15 @@ We have been notified about it. We will be adding new resources shortly")
|
|
877
875
|
hooks(@main, :delete).should include(:logged_in?)
|
878
876
|
end
|
879
877
|
|
878
|
+
# multiple_clouds is tested in main_spec.rb in describe "#start" block
|
879
|
+
it "should ensure multiple_clouds check" do
|
880
|
+
@client.stub(:delete)
|
881
|
+
@main.should_receive(:multiple_clouds).and_return(@app)
|
882
|
+
fake_stdin(["yes", "yes", "yes"]) do
|
883
|
+
invoke(@main, :delete)
|
884
|
+
end
|
885
|
+
end
|
886
|
+
|
880
887
|
context "when cloud is given" do
|
881
888
|
before do
|
882
889
|
File.open("Cloudfile", 'w') {|f|
|
@@ -1021,8 +1028,11 @@ We have been notified about it. We will be adding new resources shortly")
|
|
1021
1028
|
hooks(@main, :logs).should include(:logged_in?)
|
1022
1029
|
end
|
1023
1030
|
|
1024
|
-
|
1025
|
-
|
1031
|
+
# multiple_clouds is tested in main_spec.rb in describe "#start" block
|
1032
|
+
it "should ensure multiple_clouds check" do
|
1033
|
+
@client.stub(:application_logs).and_return(["log1"])
|
1034
|
+
@main.should_receive(:multiple_clouds).and_return(@app)
|
1035
|
+
invoke(@main, :logs)
|
1026
1036
|
end
|
1027
1037
|
|
1028
1038
|
it "should exit if user doesn't have access to clouds in Cloudfile" do
|
@@ -1033,40 +1043,12 @@ We have been notified about it. We will be adding new resources shortly")
|
|
1033
1043
|
lambda { invoke(@main, :logs) }.should raise_error(SystemExit)
|
1034
1044
|
end
|
1035
1045
|
|
1036
|
-
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1041
|
-
|
1042
|
-
invoke(@main, :logs)
|
1043
|
-
end
|
1044
|
-
end
|
1045
|
-
|
1046
|
-
context "multiple clouds in Cloudfile" do
|
1047
|
-
before do
|
1048
|
-
File.open("Cloudfile", 'w') {|f|
|
1049
|
-
f.write("foo-staging:\nfoo-production:\n") }
|
1050
|
-
end
|
1051
|
-
|
1052
|
-
it "should show information to print logs for specific cloud and exit" do
|
1053
|
-
$stdout.should_receive(:puts).with(red "You have multiple clouds in Cloudfile.")
|
1054
|
-
$stdout.should_receive(:puts).with("Select cloud using `shelly logs --cloud foo-production`")
|
1055
|
-
$stdout.should_receive(:puts).with("Available clouds:")
|
1056
|
-
$stdout.should_receive(:puts).with(" * foo-production")
|
1057
|
-
$stdout.should_receive(:puts).with(" * foo-staging")
|
1058
|
-
lambda { invoke(@main, :logs) }.should raise_error(SystemExit)
|
1059
|
-
end
|
1060
|
-
|
1061
|
-
it "should fetch from command line which cloud to start" do
|
1062
|
-
@client.should_receive(:application_logs).with("foo-staging").
|
1063
|
-
and_return(["log1"])
|
1064
|
-
$stdout.should_receive(:puts).with(green "Cloud foo-staging:")
|
1065
|
-
$stdout.should_receive(:puts).with(green "Instance 1:")
|
1066
|
-
$stdout.should_receive(:puts).with("log1")
|
1067
|
-
@main.options = {:cloud => "foo-staging"}
|
1068
|
-
invoke(@main, :logs)
|
1069
|
-
end
|
1046
|
+
it "should show logs for the cloud" do
|
1047
|
+
@client.stub(:application_logs).and_return(["log1"])
|
1048
|
+
$stdout.should_receive(:puts).with(green "Cloud foo-production:")
|
1049
|
+
$stdout.should_receive(:puts).with(green "Instance 1:")
|
1050
|
+
$stdout.should_receive(:puts).with("log1")
|
1051
|
+
invoke(@main, :logs)
|
1070
1052
|
end
|
1071
1053
|
|
1072
1054
|
context "multiple instances" do
|
@@ -1092,7 +1074,7 @@ We have been notified about it. We will be adding new resources shortly")
|
|
1092
1074
|
Shelly::User.stub(:new).and_return(@user)
|
1093
1075
|
@client.stub(:apps).and_return([{"code_name" => "foo-production"},
|
1094
1076
|
{"code_name" => "foo-staging"}])
|
1095
|
-
@app = Shelly::App.new
|
1077
|
+
@app = Shelly::App.new("foo-production")
|
1096
1078
|
Shelly::App.stub(:new).and_return(@app)
|
1097
1079
|
File.open("to_execute.rb", 'w') {|f| f.write("User.count") }
|
1098
1080
|
end
|
@@ -1101,51 +1083,26 @@ We have been notified about it. We will be adding new resources shortly")
|
|
1101
1083
|
hooks(@main, :execute).should include(:logged_in?)
|
1102
1084
|
end
|
1103
1085
|
|
1104
|
-
|
1105
|
-
|
1086
|
+
# multiple_clouds is tested in main_spec.rb in describe "#start" block
|
1087
|
+
it "should ensure multiple_clouds check" do
|
1088
|
+
@client.should_receive(:command).with("foo-production", "User.count", :ruby).
|
1089
|
+
and_return({"result" => "3"})
|
1090
|
+
@main.should_receive(:multiple_clouds).and_return(@app)
|
1091
|
+
invoke(@main, :execute, "to_execute.rb")
|
1106
1092
|
end
|
1107
1093
|
|
1108
|
-
|
1109
|
-
|
1110
|
-
|
1111
|
-
|
1112
|
-
|
1113
|
-
invoke(@main, :execute, "to_execute.rb")
|
1114
|
-
end
|
1094
|
+
it "should execute code for the cloud" do
|
1095
|
+
@client.should_receive(:command).with("foo-production", "User.count", :ruby).
|
1096
|
+
and_return({"result" => "3"})
|
1097
|
+
$stdout.should_receive(:puts).with("3")
|
1098
|
+
invoke(@main, :execute, "to_execute.rb")
|
1115
1099
|
end
|
1116
1100
|
|
1117
|
-
|
1118
|
-
|
1119
|
-
|
1120
|
-
|
1121
|
-
|
1122
|
-
|
1123
|
-
it "should show information to print logs for specific cloud and exit" do
|
1124
|
-
$stdout.should_receive(:puts).
|
1125
|
-
with(red "You have multiple clouds in Cloudfile.")
|
1126
|
-
$stdout.should_receive(:puts).
|
1127
|
-
with("Select cloud using `shelly execute --cloud foo-production`")
|
1128
|
-
$stdout.should_receive(:puts).with("Available clouds:")
|
1129
|
-
$stdout.should_receive(:puts).with(" * foo-production")
|
1130
|
-
$stdout.should_receive(:puts).with(" * foo-staging")
|
1131
|
-
lambda { invoke(@main, :execute, "to_execute.rb") }.should raise_error(SystemExit)
|
1132
|
-
end
|
1133
|
-
|
1134
|
-
it "should fetch from command line which cloud to start" do
|
1135
|
-
@client.should_receive(:command).with("foo-staging", "User.count", :ruby).
|
1136
|
-
and_return({"result" => "3"})
|
1137
|
-
$stdout.should_receive(:puts).with("3")
|
1138
|
-
@main.options = {:cloud => "foo-staging"}
|
1139
|
-
invoke(@main, :execute, "to_execute.rb")
|
1140
|
-
end
|
1141
|
-
|
1142
|
-
it "should run code when no file from parameter is found" do
|
1143
|
-
@client.should_receive(:command).with("foo-staging", "2 + 2", :ruby).
|
1144
|
-
and_return({"result" => "4"})
|
1145
|
-
$stdout.should_receive(:puts).with("4")
|
1146
|
-
@main.options = {:cloud => "foo-staging"}
|
1147
|
-
invoke(@main, :execute, "2 + 2")
|
1148
|
-
end
|
1101
|
+
it "should run code when no file from parameter is found" do
|
1102
|
+
@client.should_receive(:command).with("foo-production", "2 + 2", :ruby).
|
1103
|
+
and_return({"result" => "4"})
|
1104
|
+
$stdout.should_receive(:puts).with("4")
|
1105
|
+
invoke(@main, :execute, "2 + 2")
|
1149
1106
|
end
|
1150
1107
|
|
1151
1108
|
context "cloud is not in running state" do
|
@@ -1176,7 +1133,7 @@ We have been notified about it. We will be adding new resources shortly")
|
|
1176
1133
|
@user = Shelly::User.new
|
1177
1134
|
@user.stub(:token)
|
1178
1135
|
Shelly::User.stub(:new).and_return(@user)
|
1179
|
-
@app = Shelly::App.new
|
1136
|
+
@app = Shelly::App.new("foo-production")
|
1180
1137
|
Shelly::App.stub(:new).and_return(@app)
|
1181
1138
|
@main.stub(:rake_args).and_return(%w(db:migrate))
|
1182
1139
|
end
|
@@ -1185,8 +1142,12 @@ We have been notified about it. We will be adding new resources shortly")
|
|
1185
1142
|
hooks(@main, :rake).should include(:logged_in?)
|
1186
1143
|
end
|
1187
1144
|
|
1188
|
-
|
1189
|
-
|
1145
|
+
# multiple_clouds is tested in main_spec.rb in describe "#start" block
|
1146
|
+
it "should ensure multiple_clouds check" do
|
1147
|
+
@client.should_receive(:command).with("foo-production", "db:migrate", :rake).
|
1148
|
+
and_return({"result" => "OK"})
|
1149
|
+
@main.should_receive(:multiple_clouds).and_return(@app)
|
1150
|
+
invoke(@main, :rake, "db:migrate")
|
1190
1151
|
end
|
1191
1152
|
|
1192
1153
|
it "should invoke :command on app with rake task" do
|
@@ -1227,45 +1188,26 @@ We have been notified about it. We will be adding new resources shortly")
|
|
1227
1188
|
lambda { invoke(@main, :rake, "db:migrate") }.should raise_error(SystemExit)
|
1228
1189
|
end
|
1229
1190
|
end
|
1230
|
-
|
1231
|
-
context "multiple clouds in Cloudfile" do
|
1232
|
-
before do
|
1233
|
-
File.open("Cloudfile", 'w') {|f|
|
1234
|
-
f.write("foo-staging:\nfoo-production:\n") }
|
1235
|
-
end
|
1236
|
-
|
1237
|
-
it "should show information to run rake task for specific cloud and exit" do
|
1238
|
-
$stdout.should_receive(:puts).
|
1239
|
-
with(red "You have multiple clouds in Cloudfile.")
|
1240
|
-
$stdout.should_receive(:puts).
|
1241
|
-
with("Select cloud using `shelly rake db:migrate --cloud foo-production`")
|
1242
|
-
$stdout.should_receive(:puts).with("Available clouds:")
|
1243
|
-
$stdout.should_receive(:puts).with(" * foo-production")
|
1244
|
-
$stdout.should_receive(:puts).with(" * foo-staging")
|
1245
|
-
lambda { invoke(@main, :rake, "db:migrate") }.should raise_error(SystemExit)
|
1246
|
-
end
|
1247
|
-
|
1248
|
-
it "should fetch from command line for which cloud run rake task" do
|
1249
|
-
@client.should_receive(:command).with("foo-staging", "db:migrate", :rake).
|
1250
|
-
and_return({"result" => "3"})
|
1251
|
-
$stdout.should_receive(:puts).with("3")
|
1252
|
-
@main.options = {:cloud => "foo-staging"}
|
1253
|
-
invoke(@main, :rake, "db:migrate")
|
1254
|
-
end
|
1255
|
-
end
|
1256
1191
|
end
|
1257
1192
|
|
1258
1193
|
describe "#redeploy" do
|
1259
1194
|
before do
|
1260
1195
|
@user = Shelly::User.new
|
1261
1196
|
@client.stub(:token).and_return("abc")
|
1262
|
-
@app = Shelly::App.new
|
1197
|
+
@app = Shelly::App.new("foo-production")
|
1263
1198
|
Shelly::App.stub(:new).and_return(@app)
|
1264
1199
|
FileUtils.mkdir_p("/projects/foo")
|
1265
1200
|
Dir.chdir("/projects/foo")
|
1266
1201
|
File.open("Cloudfile", 'w') { |f| f.write("foo-production:\n") }
|
1267
1202
|
end
|
1268
1203
|
|
1204
|
+
# multiple_clouds is tested in main_spec.rb in describe "#start" block
|
1205
|
+
it "should ensure multiple_clouds check" do
|
1206
|
+
@client.stub(:redeploy)
|
1207
|
+
@main.should_receive(:multiple_clouds).and_return(@app)
|
1208
|
+
invoke(@main, :redeploy)
|
1209
|
+
end
|
1210
|
+
|
1269
1211
|
it "should redeploy the application" do
|
1270
1212
|
$stdout.should_receive(:puts).with(green "Redeploying your application for cloud 'foo-production'")
|
1271
1213
|
@app.should_receive(:redeploy)
|
@@ -1308,27 +1250,5 @@ We have been notified about it. We will be adding new resources shortly")
|
|
1308
1250
|
}.should raise_error(Shelly::Client::ConflictException)
|
1309
1251
|
end
|
1310
1252
|
end
|
1311
|
-
|
1312
|
-
context "on multiple clouds in Cloudfile" do
|
1313
|
-
before do
|
1314
|
-
File.open("Cloudfile", 'w') { |f| f.write("foo-staging:\nfoo-production:\n") }
|
1315
|
-
end
|
1316
|
-
|
1317
|
-
it "should show information to redeploy application for specific cloud and exit" do
|
1318
|
-
$stdout.should_receive(:puts).with(red "You have multiple clouds in Cloudfile.")
|
1319
|
-
$stdout.should_receive(:puts).with("Select cloud using `shelly redeploy --cloud foo-production`")
|
1320
|
-
$stdout.should_receive(:puts).with("Available clouds:")
|
1321
|
-
$stdout.should_receive(:puts).with(" * foo-production")
|
1322
|
-
$stdout.should_receive(:puts).with(" * foo-staging")
|
1323
|
-
lambda { invoke(@main, :redeploy) }.should raise_error(SystemExit)
|
1324
|
-
end
|
1325
|
-
|
1326
|
-
it "should fetch from command line which cloud to redeploy application for" do
|
1327
|
-
@client.should_receive(:redeploy).with("foo-staging")
|
1328
|
-
$stdout.should_receive(:puts).with(green "Redeploying your application for cloud 'foo-staging'")
|
1329
|
-
@main.options = {:cloud => "foo-staging"}
|
1330
|
-
invoke(@main, :redeploy)
|
1331
|
-
end
|
1332
|
-
end
|
1333
1253
|
end
|
1334
1254
|
end
|