tddium-preview 0.7.3 → 0.7.4

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -5,19 +5,23 @@ PATH
5
5
  bundler
6
6
  highline
7
7
  json
8
- tddium_client (>= 0.0.9)
8
+ tddium_client (>= 0.0.10)
9
9
  tddium_reporting (>= 0.0.3)
10
10
  thor
11
11
 
12
12
  GEM
13
13
  remote: http://rubygems.org/
14
14
  specs:
15
- aruba (0.3.6)
16
- childprocess (>= 0.1.7)
17
- cucumber (>= 0.10.0)
18
- rspec (>= 2.5.0)
15
+ aruba (0.4.6)
16
+ bcat (>= 0.6.1)
17
+ childprocess (>= 0.2.0)
18
+ cucumber (>= 1.0.2)
19
+ rdiscount (>= 1.6.8)
20
+ rspec (>= 2.6.0)
21
+ bcat (0.6.1)
22
+ rack (~> 1.0)
19
23
  builder (3.0.0)
20
- childprocess (0.2.0)
24
+ childprocess (0.2.2)
21
25
  ffi (~> 1.0.6)
22
26
  crack (0.1.8)
23
27
  cucumber (1.0.2)
@@ -27,10 +31,10 @@ GEM
27
31
  json (>= 1.4.6)
28
32
  term-ansicolor (>= 1.0.5)
29
33
  daemons (1.1.4)
30
- diff-lcs (1.1.2)
31
- fakefs (0.3.1)
34
+ diff-lcs (1.1.3)
35
+ fakefs (0.3.2)
32
36
  ffi (1.0.9)
33
- gherkin (2.4.5)
37
+ gherkin (2.4.16)
34
38
  json (>= 1.4.6)
35
39
  highline (1.6.2)
36
40
  httparty (0.7.8)
@@ -45,29 +49,30 @@ GEM
45
49
  cucumber (>= 0.8)
46
50
  rake
47
51
  plist (3.1.0)
48
- rack (1.3.0)
49
- rake (0.8.7)
50
- rspec (2.5.0)
51
- rspec-core (~> 2.5.0)
52
- rspec-expectations (~> 2.5.0)
53
- rspec-mocks (~> 2.5.0)
54
- rspec-core (2.5.1)
55
- rspec-expectations (2.5.0)
52
+ rack (1.3.2)
53
+ rake (0.9.2)
54
+ rdiscount (1.6.8)
55
+ rspec (2.6.0)
56
+ rspec-core (~> 2.6.0)
57
+ rspec-expectations (~> 2.6.0)
58
+ rspec-mocks (~> 2.6.0)
59
+ rspec-core (2.6.4)
60
+ rspec-expectations (2.6.0)
56
61
  diff-lcs (~> 1.1.2)
57
- rspec-mocks (2.5.0)
58
- simplecov (0.4.1)
59
- simplecov-html (~> 0.4.3)
60
- simplecov-html (0.4.3)
62
+ rspec-mocks (2.6.0)
63
+ simplecov (0.4.2)
64
+ simplecov-html (~> 0.4.4)
65
+ simplecov-html (0.4.5)
61
66
  sinatra (1.2.6)
62
67
  rack (~> 1.1)
63
68
  tilt (< 2.0, >= 1.2.2)
64
- tddium_client (0.0.9)
69
+ tddium_client (0.0.10)
65
70
  httparty
66
71
  json
67
72
  tddium_reporting (0.0.3)
68
73
  term-ansicolor (1.0.6)
69
74
  thor (0.14.6)
70
- tilt (1.3.2)
75
+ tilt (1.3.3)
71
76
 
72
77
  PLATFORMS
73
78
  ruby
@@ -0,0 +1,40 @@
1
+ @mimic
2
+ Feature: Login command
3
+
4
+ Scenario: Interactively log in successfully
5
+ Given the user can log in and gets API key "apikey"
6
+ When I run `tddium login --environment=mimic` interactively
7
+ And I type "foo@example.com"
8
+ And I type "barbarbar"
9
+ And the console session ends
10
+ Then the output should contain:
11
+ """
12
+ Logged in successfully
13
+ """
14
+ And the exit status should be 0
15
+ And the file ".tddium.mimic" should contain "apikey"
16
+ And the file ".gitignore" should contain ".tddium.mimic"
17
+ And the file ".gitignore" should contain ".tddium-deploy-key.mimic"
18
+
19
+ Scenario: Non-interactively log in successfully
20
+ Given the user can log in and gets API key "apikey"
21
+ When I run `tddium login --environment=mimic --email=foo@example.com --password=barbarbar`
22
+ Then the output should contain:
23
+ """
24
+ Logged in successfully
25
+ """
26
+ And the exit status should be 0
27
+ And the file ".tddium.mimic" should contain "apikey"
28
+ And the file ".gitignore" should contain ".tddium.mimic"
29
+ And the file ".gitignore" should contain ".tddium-deploy-key.mimic"
30
+
31
+ Scenario: Non-interactively log in unsuccessfully
32
+ Given the user cannot log in
33
+ When I run `tddium login --environment=mimic --email=foo@example.com --password=barbarbar`
34
+ Then the output should contain:
35
+ """
36
+ Access Denied
37
+ """
38
+ And the exit status should be 1
39
+ And the file ".tddium.mimic" should not exist
40
+ And the file ".gitignore" should not exist
@@ -0,0 +1,16 @@
1
+ @mimic
2
+ Feature: Logout Command
3
+
4
+ Scenario: Logout successfully
5
+ Given a file named ".tddium.mimic" with:
6
+ """
7
+ {'api_key':'abcdef'}
8
+ """
9
+ When I run `tddium logout --environment=mimic` interactively
10
+ And the console session ends
11
+ Then the output should contain:
12
+ """
13
+ Logged out successfully
14
+ """
15
+ And the exit status should be 0
16
+ And the file ".tddium.mimic" should not exist
@@ -0,0 +1,4 @@
1
+
2
+ When /^the console session ends$/ do
3
+ @last_exit_status = @interactive.stop(true)
4
+ end
@@ -0,0 +1,18 @@
1
+ Given /^the user is logged in$/ do
2
+ @api_key = "abcdef"
3
+ steps %Q{
4
+ Given a file named ".tddium.mimic" with:
5
+ """
6
+ {"api_key":"#{@api_key}"}
7
+ """
8
+ }
9
+ end
10
+
11
+ Given /^the user can log in and gets API key "([^"]*)"$/ do |apikey|
12
+ MimicServer.server.install(:post, "/1/users/sign_in", {:status=>0, :api_key=>apikey})
13
+ end
14
+
15
+ Given /^the user cannot log in$/ do
16
+ MimicServer.server.install(:post, "/1/users/sign_in", {:status=>1, :explanation=>"Access Denied."}, :code=>403)
17
+ end
18
+
@@ -1,7 +1,6 @@
1
- Given /^the user can log in and gets API key "([^"]*)"$/ do |apikey|
2
- MimicServer.server.install(:post, "/1/users/sign_in", {:status=>0, :api_key=>apikey})
3
- end
4
-
5
- When /^the console session ends$/ do
6
- @last_exit_status = @interactive.stop
1
+ When /^I respond to "([^"]*)" with "([^"]*)"$/ do |expect, response|
2
+ steps %Q{
3
+ Then the output from "tddium suite --environment=mimic" should contain "#{expect}"
4
+ When I type "#{response}"
5
+ }
7
6
  end
@@ -0,0 +1,43 @@
1
+ def make_suite_response(name, branch)
2
+ suite = SAMPLE_SUITE_RESPONSE
3
+ suite["repo_name"] = name
4
+ suite["branch"] = branch
5
+ suite["git_repo_uri"] = "file:///#{Dir.tmpdir}/aruba/repo"
6
+ suite
7
+ end
8
+
9
+ Given /^the user has a suite for "([^"]*)" on "([^"]*)"$/ do |name, branch|
10
+ MimicServer.server.install(:get, "/1/suites", {:status=>0, :suites=>[make_suite_response(name, branch)]})
11
+ end
12
+
13
+ Given /^the user has no suites/ do
14
+ MimicServer.server.install(:get, "/1/suites", {:status=>0, :suites=>[]})
15
+ end
16
+
17
+ Given /^the user can create a suite named "([^"]*)" on branch "([^"]*)"$/ do |name, branch|
18
+ MimicServer.server.install(:post, "/1/suites", {:status=>0, :suite=>make_suite_response(name, branch)}, :code=>201)
19
+ end
20
+
21
+ Given /^the destination repo exists$/ do
22
+ steps %Q{
23
+ Given a directory named "repo"
24
+ And I cd to "repo"
25
+ And I successfully run `git init --bare .`
26
+ And I cd to ".."
27
+ }
28
+ end
29
+
30
+ Given /^a git repo is initialized on branch "([^"]*)"$/ do |branch|
31
+ steps %Q{
32
+ Given a directory named "work"
33
+ And I cd to "work"
34
+ And I successfully run `git init .`
35
+ And a file named "testfile" with:
36
+ """
37
+ some data
38
+ """
39
+ And I successfully run `git add .`
40
+ And I successfully run `git commit -am 'testfile'`
41
+ And I successfully run `git checkout -b #{branch}`
42
+ }
43
+ end
@@ -0,0 +1,24 @@
1
+ @mimic
2
+ Feature: suite command
3
+ As a user
4
+ In order to interact with Tddium
5
+ I want to configure a test suite
6
+
7
+ Scenario: Configure a new suite with a complex branch
8
+ Given the destination repo exists
9
+ And a git repo is initialized on branch "test/foobar"
10
+ And the user is logged in
11
+ And the user has no suites
12
+ And the user can create a suite named "beta" on branch "test/foobar"
13
+ When I run `tddium suite --environment=mimic` interactively
14
+ And I respond to "repo name" with "beta"
15
+ Then the output from "tddium suite --environment=mimic" should contain "Detected branch test/foobar"
16
+ And I respond to "test pattern" with ""
17
+ And I respond to "URL to pull from" with "disable"
18
+ And I respond to "URL to push to" with "disable"
19
+ And I respond to "Campfire subdomain" with "disable"
20
+ Then the output from "tddium suite --environment=mimic" should contain "Pushing changes to Tddium..."
21
+ And the output from "tddium suite --environment=mimic" should contain "Created suite..."
22
+ When the console session ends
23
+ Then the exit status should be 0
24
+
@@ -0,0 +1,6 @@
1
+ Before do
2
+ @aruba_timeout_seconds = 10
3
+ @aruba_io_wait_seconds = 2
4
+ @dirs = [Dir.tmpdir, "aruba"]
5
+ FileUtils.rm_rf(current_dir)
6
+ end
@@ -0,0 +1,63 @@
1
+ require 'aruba/api'
2
+
3
+ SAMPLE_API_KEY = "afb12412bdafe124124asfasfabebafeabwbawf1312342erbfasbb"
4
+ SAMPLE_APP_NAME = "tddelicious"
5
+ SAMPLE_BRANCH_NAME = "test"
6
+ SAMPLE_BUNDLER_VERSION = "Bundler version 1.10.10"
7
+ SAMPLE_DATE_TIME = "2011-03-11T08:43:02Z"
8
+ SAMPLE_EMAIL = "someone@example.com"
9
+ SAMPLE_FILE_PATH = "./my_user_file.png"
10
+ SAMPLE_FILE_PATH2 = "./my_user_file2.png"
11
+ SAMPLE_INVITATION_TOKEN = "TZce3NueiXp2lMTmaeRr"
12
+ SAMPLE_HEROKU_CONFIG = {"TDDIUM_API_KEY" => SAMPLE_API_KEY, "TDDIUM_USER_NAME" => SAMPLE_EMAIL}
13
+ SAMPLE_LICENSE_TEXT = "LICENSE"
14
+ SAMPLE_PASSWORD = "foobar"
15
+ SAMPLE_NEW_PASSWORD = "foobar2"
16
+ SAMPLE_REPORT_URL = "http://api.tddium.com/1/sessions/1/test_executions/report"
17
+ SAMPLE_RUBYGEMS_VERSION = "1.3.7"
18
+ SAMPLE_RUBY_VERSION = "ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-darwin10.5.0]"
19
+ SAMPLE_RECURLY_URL = "https://tddium.recurly.com/account/1"
20
+ SAMPLE_SESSION_ID = 1
21
+ SAMPLE_SUITE_ID = 1
22
+ SAMPLE_USER_ID = 1
23
+ SAMPLE_ROLE = "member"
24
+ SAMPLE_ACCOUNT_NAME = "owner@example.com"
25
+ DEFAULT_TEST_PATTERN = "**/*_spec.rb"
26
+ SAMPLE_SUITE_PATTERN = "features/*.feature, spec/**/*_spec.rb"
27
+ CUSTOM_TEST_PATTERN = "**/cat_spec.rb"
28
+ SAMPLE_SSH_PUBKEY = "ssh-rsa 1234567890"
29
+ SAMPLE_SUITE_RESPONSE = {"repo_name" => SAMPLE_APP_NAME,
30
+ "branch" => SAMPLE_BRANCH_NAME,
31
+ "id" => SAMPLE_SUITE_ID,
32
+ "ruby_version"=>SAMPLE_RUBY_VERSION,
33
+ "rubygems_version"=>SAMPLE_RUBYGEMS_VERSION,
34
+ "bundler_version"=>SAMPLE_BUNDLER_VERSION,
35
+ "ci_ssh_pubkey" => SAMPLE_SSH_PUBKEY,
36
+ "test_pattern" => SAMPLE_SUITE_PATTERN}
37
+ SAMPLE_SUITES_RESPONSE = {"suites" => [SAMPLE_SUITE_RESPONSE]}
38
+ SAMPLE_TDDIUM_CONFIG_FILE = ".tddium.test"
39
+ SAMPLE_TDDIUM_DEPLOY_KEY_FILE = ".tddium-deploy-key.test"
40
+ SAMPLE_TEST_EXECUTION_STATS = "total 1, notstarted 0, started 1, passed 0, failed 0, pending 0, error 0", "start_time"
41
+ SAMPLE_USER_RESPONSE = {"status"=>0, "user"=>
42
+ { "id"=>SAMPLE_USER_ID,
43
+ "api_key" => SAMPLE_API_KEY,
44
+ "email" => SAMPLE_EMAIL,
45
+ "created_at" => SAMPLE_DATE_TIME,
46
+ "account" => SAMPLE_EMAIL,
47
+ "recurly_url" => SAMPLE_RECURLY_URL}}
48
+ SAMPLE_ADDED_USER_RESPONSE = {"status"=>0, "user"=>
49
+ { "id"=>SAMPLE_USER_ID,
50
+ "api_key" => SAMPLE_API_KEY,
51
+ "email" => SAMPLE_EMAIL,
52
+ "created_at" => SAMPLE_DATE_TIME,
53
+ "account" => SAMPLE_ACCOUNT_NAME,
54
+ "account_role" => SAMPLE_ROLE}}
55
+ SAMPLE_HEROKU_USER_RESPONSE = {"user"=>
56
+ { "id"=>SAMPLE_USER_ID,
57
+ "api_key" => SAMPLE_API_KEY,
58
+ "email" => SAMPLE_EMAIL,
59
+ "created_at" => SAMPLE_DATE_TIME,
60
+ "heroku_needs_activation" => true,
61
+ "recurly_url" => SAMPLE_RECURLY_URL}}
62
+ PASSWORD_ERROR_EXPLANATION = "bad confirmation"
63
+ PASSWORD_ERROR_RESPONSE = {"status"=>1, "explanation"=> PASSWORD_ERROR_EXPLANATION}
@@ -1,3 +1,5 @@
1
+ # Copyright (c) 2011 Solano Labs All Rights Reserved
2
+
1
3
  require 'mimic'
2
4
  require 'timeout'
3
5
  require 'daemons'
@@ -6,32 +8,34 @@ require 'httparty'
6
8
  class MimicServer
7
9
  attr_reader :port
8
10
 
9
- def initialize
10
- @port = 8080
11
- @pid_dir = File.join(Dir.tmpdir, 'mimic')
12
- FileUtils.mkdir_p(@pid_dir)
11
+ def initialize(port, log=nil)
12
+ @port = port || 8080
13
+ @pid_list = []
14
+ @log = log
13
15
  end
14
16
 
15
17
  def start
16
- options = {:ARGV => ['start'], :log_output => true, :dir_mode => :normal, :dir => @pid_dir}
17
- args = {:fork => false,
18
- :host => 'localhost',
19
- :port => @port,
20
- :remote_configuration_path => '/api'}
21
- @mimic_group = Daemons.run_proc("mimic", options) do
18
+ pid = Kernel.fork
19
+ if pid.nil? then
20
+ args = {:fork => false,
21
+ :host => 'localhost',
22
+ :port => @port,
23
+ :remote_configuration_path => '/api'}
24
+ args[:log] = @log if @log
22
25
  Mimic.mimic(args) do
23
- [:INT, :TERM].each { |sig| trap(sig) { STDERR.puts "got sig!"; Kernel.exit!(0) } }
26
+ [:INT, :TERM].each { |sig| trap(sig) { Kernel.exit!(0) } }
24
27
  end
28
+ Kernel.exit!(0)
25
29
  end
26
- @mimic_group.setup
30
+ @pid_list.push(pid)
27
31
  wait
28
32
  end
29
33
 
30
34
  def stop
31
- return nil unless @mimic_group
32
- @mimic_group.stop_all
33
- @mimic_group.find_applications(@pid_dir)
34
- @mimic_group.zap_all
35
+ @pid_list.each do |pid|
36
+ Process.kill("TERM", pid)
37
+ end
38
+ @pid_list = []
35
39
  end
36
40
 
37
41
  def wait
@@ -57,9 +61,10 @@ class MimicServer
57
61
  return http
58
62
  end
59
63
 
60
- def install(verb, path, body, headers = {})
61
- params = { 'path' => path, 'body' => body.to_json }.to_json
62
- http = call_api(:post, "/api/#{verb}", params, headers)
64
+ def install(verb, path, body, options={})
65
+ api_headers = options.delete(:api_headers)
66
+ params = { 'path' => path, 'body' => body.to_json }.merge(options)
67
+ http = call_api(:post, "/api/#{verb}", params.to_json, api_headers)
63
68
  return http
64
69
  end
65
70
 
@@ -91,9 +96,9 @@ class MimicServer
91
96
  mimic.stop
92
97
  end
93
98
 
94
- def start
99
+ def start(port=nil, log=nil)
95
100
  return @server if @server
96
- @server = MimicServer.new
101
+ @server = MimicServer.new(port, log || @log)
97
102
  @server.start
98
103
  @server
99
104
  end
@@ -105,16 +110,20 @@ class MimicServer
105
110
  def clear
106
111
  @server.clear rescue nil
107
112
  end
113
+
114
+ def log=(log)
115
+ @log = log
116
+ end
108
117
  end
109
118
  end
110
119
 
111
- if __FILE__ == $0 then
112
- MimicServer.test
113
- end
120
+ MimicServer.log = STDOUT
114
121
 
115
122
  Before('@mimic') do
116
- MimicServer.start
117
- # @aruba_io_wait_seconds = 4
123
+ tid = ENV['TDDIUM_TID'] || 0
124
+ port = 8500 + tid.to_i
125
+ ENV['TDDIUM_CLIENT_PORT'] = port.to_s
126
+ MimicServer.start(port)
118
127
  end
119
128
 
120
129
  After('@mimic') do
@@ -125,5 +134,3 @@ at_exit do
125
134
  server = MimicServer.server
126
135
  server.stop if server
127
136
  end
128
-
129
- MimicServer.start
data/lib/tddium.rb CHANGED
@@ -36,15 +36,17 @@ end
36
36
 
37
37
  class Tddium < Thor
38
38
  include TddiumConstant
39
+
40
+ class_option :environment, :type => :string, :default => nil
41
+ class_option :port, :type => :numeric, :default => nil
39
42
 
40
43
  desc "account", "View/Manage account information"
41
- method_option :environment, :type => :string, :default => nil
42
44
  method_option :email, :type => :string, :default => nil
43
45
  method_option :password, :type => :string, :default => nil
44
46
  method_option :ssh_key_file, :type => :string, :default => nil
45
47
  def account
46
48
  set_shell
47
- set_default_environment(options[:environment])
49
+ set_default_environment
48
50
  if user_details = user_logged_in?
49
51
  # User is already logged in, so just display the info
50
52
  show_user_details(user_details)
@@ -92,14 +94,13 @@ class Tddium < Thor
92
94
  end
93
95
 
94
96
  desc "heroku", "Connect Heroku account with Tddium"
95
- method_option :environment, :type => :string, :default => nil
96
97
  method_option :email, :type => :string, :default => nil
97
98
  method_option :password, :type => :string, :default => nil
98
99
  method_option :ssh_key_file, :type => :string, :default => nil
99
100
  method_option :app, :type => :string, :default => nil
100
101
  def heroku
101
102
  set_shell
102
- set_default_environment(options[:environment])
103
+ set_default_environment
103
104
  if user_details = user_logged_in?
104
105
  # User is already logged in, so just display the info
105
106
  show_user_details(user_details)
@@ -127,10 +128,9 @@ class Tddium < Thor
127
128
 
128
129
  desc "password", "Change password"
129
130
  map "passwd" => :password
130
- method_option :environment, :type => :string, :default => nil
131
131
  def password
132
132
  set_shell
133
- set_default_environment(options[:environment])
133
+ set_default_environment
134
134
  return unless tddium_settings
135
135
  user_details = user_logged_in?
136
136
  return unless user_details
@@ -153,37 +153,36 @@ class Tddium < Thor
153
153
  end
154
154
 
155
155
  desc "login", "Log in to tddium using your email address and password"
156
- method_option :environment, :type => :string, :default => nil
157
156
  method_option :email, :type => :string, :default => nil
158
157
  method_option :password, :type => :string, :default => nil
159
158
  def login
160
159
  set_shell
161
- set_default_environment(options[:environment])
160
+ set_default_environment
162
161
  if user_logged_in?
163
162
  say Text::Process::ALREADY_LOGGED_IN
163
+ elsif login_user(:params => get_user_credentials(options), :show_error => true)
164
+ say Text::Process::LOGGED_IN_SUCCESSFULLY
164
165
  else
165
- say Text::Process::LOGGED_IN_SUCCESSFULLY if login_user(:params => get_user_credentials(options), :show_error => true)
166
+ exit_failure
166
167
  end
167
168
  end
168
169
 
169
170
  desc "logout", "Log out of tddium"
170
- method_option :environment, :type => :string, :default => nil
171
171
  def logout
172
172
  set_shell
173
- set_default_environment(options[:environment])
173
+ set_default_environment
174
174
  FileUtils.rm(tddium_file_name) if File.exists?(tddium_file_name)
175
175
  say Text::Process::LOGGED_OUT_SUCCESSFULLY
176
176
  end
177
177
 
178
178
  desc "spec", "Run the test suite"
179
- method_option :environment, :type => :string, :default => nil
180
179
  method_option :user_data_file, :type => :string, :default => nil
181
180
  method_option :max_parallelism, :type => :numeric, :default => nil
182
181
  method_option :test_pattern, :type => :string, :default => nil
183
182
  method_option :force, :type => :boolean, :default => false
184
183
  def spec
185
184
  set_shell
186
- set_default_environment(options[:environment])
185
+ set_default_environment
187
186
  git_version_ok
188
187
  if git_changes then
189
188
  exit_failure(Text::Error::GIT_CHANGES_NOT_COMMITTED) if !options[:force]
@@ -293,10 +292,9 @@ class Tddium < Thor
293
292
  end
294
293
 
295
294
  desc "status", "Display information about this suite, and any open dev sessions"
296
- method_option :environment, :type => :string, :default => nil
297
295
  def status
298
296
  set_shell
299
- set_default_environment(options[:environment])
297
+ set_default_environment
300
298
  git_version_ok
301
299
  return unless git_repo? && tddium_settings && suite_for_current_branch?
302
300
 
@@ -325,9 +323,8 @@ class Tddium < Thor
325
323
  method_option :pull_url, :type => :string, :default => nil
326
324
  method_option :push_url, :type => :string, :default => nil
327
325
  method_option :test_pattern, :type => :string, :default => nil
328
- method_option :environment, :type => :string, :default => nil
329
326
  def suite
330
- set_default_environment(options[:environment])
327
+ set_default_environment
331
328
  git_version_ok
332
329
  return unless git_repo? && tddium_settings
333
330
 
@@ -436,7 +433,7 @@ class Tddium < Thor
436
433
  end
437
434
 
438
435
  def current_git_branch
439
- @current_git_branch ||= File.basename(`git symbolic-ref HEAD`.gsub("\n", ""))
436
+ @current_git_branch ||= `git symbolic-ref HEAD`.gsub("\n", "").split("/")[2..-1].join("/")
440
437
  end
441
438
 
442
439
  def current_suite_id
@@ -506,7 +503,8 @@ class Tddium < Thor
506
503
  params = {}
507
504
  # prompt for email/invitation and password
508
505
  if options[:invited]
509
- params[:invitation_token] = options[:invitation_token] || ask(Text::Prompt::INVITATION_TOKEN)
506
+ token = options[:invitation_token] || ask(Text::Prompt::INVITATION_TOKEN)
507
+ params[:invitation_token] = token.strip
510
508
  else
511
509
  params[:email] = options[:email] || ask(Text::Prompt::EMAIL)
512
510
  end
@@ -624,9 +622,11 @@ class Tddium < Thor
624
622
  say(Text::Process::SETUP_CAMPFIRE_FIRST_TIME)
625
623
  end
626
624
 
627
- ask_or_update.call(:campfire_subdomain, Text::Prompt::CAMPFIRE_SUBDOMAIN, nil)
628
- ask_or_update.call(:campfire_token, Text::Prompt::CAMPFIRE_TOKEN, nil)
629
- ask_or_update.call(:campfire_room, Text::Prompt::CAMPFIRE_ROOM, nil)
625
+ subdomain = ask_or_update.call(:campfire_subdomain, Text::Prompt::CAMPFIRE_SUBDOMAIN, nil)
626
+ if !subdomain.nil? && subdomain != 'disable' then
627
+ ask_or_update.call(:campfire_token, Text::Prompt::CAMPFIRE_TOKEN, nil)
628
+ ask_or_update.call(:campfire_room, Text::Prompt::CAMPFIRE_ROOM, nil)
629
+ end
630
630
  end
631
631
 
632
632
  def update_suite(suite, options)
@@ -675,13 +675,19 @@ class Tddium < Thor
675
675
  end
676
676
  end
677
677
 
678
- def set_default_environment(env)
678
+ def set_default_environment
679
+ env = options[:environment]
679
680
  if env.nil?
680
681
  tddium_client.environment = :development
681
682
  tddium_client.environment = :production unless File.exists?(tddium_file_name)
682
683
  else
683
684
  tddium_client.environment = env.to_sym
684
685
  end
686
+
687
+ port = options[:port] || ENV['TDDIUM_CLIENT_PORT']
688
+ if port
689
+ tddium_client.port = port.to_i
690
+ end
685
691
  end
686
692
 
687
693
  def show_session_details(params, no_session_prompt, all_session_prompt)
@@ -3,5 +3,5 @@ Copyright (c) 2011 Solano Labs All Rights Reserved
3
3
  =end
4
4
 
5
5
  module TddiumVersion
6
- VERSION = "0.7.3"
6
+ VERSION = "0.7.4"
7
7
  end
data/spec/tddium_spec.rb CHANGED
@@ -14,6 +14,7 @@ describe Tddium do
14
14
  SAMPLE_API_KEY = "afb12412bdafe124124asfasfabebafeabwbawf1312342erbfasbb"
15
15
  SAMPLE_APP_NAME = "tddelicious"
16
16
  SAMPLE_BRANCH_NAME = "test"
17
+ SAMPLE_REF_NAME = "refs/heads/test"
17
18
  SAMPLE_BUNDLER_VERSION = "Bundler version 1.10.10"
18
19
  SAMPLE_DATE_TIME = "2011-03-11T08:43:02Z"
19
20
  SAMPLE_EMAIL = "someone@example.com"
@@ -195,7 +196,7 @@ describe Tddium do
195
196
  create_file(Tddium::Git::GITIGNORE, "something")
196
197
  end
197
198
 
198
- def stub_git_branch(tddium, default_branch_name = SAMPLE_BRANCH_NAME)
199
+ def stub_git_branch(tddium, default_branch_name = SAMPLE_REF_NAME)
199
200
  tddium.stub(:`).with("git symbolic-ref HEAD").and_return(default_branch_name)
200
201
  end
201
202
 
@@ -755,6 +756,8 @@ describe Tddium do
755
756
  before do
756
757
  stub_config_file(:api_key => SAMPLE_API_KEY)
757
758
  stub_call_api_response(:get, Tddium::Api::Path::USERS, SAMPLE_USER_RESPONSE)
759
+ stub_call_api_response(:get, Tddium::Api::Path::SUITES, {"suites" => []})
760
+ stub_call_api_response(:get, Tddium::Api::Path::ACCOUNT_USAGE, {"usage" => "something"})
758
761
  end
759
762
 
760
763
  it "should show the user's email address" do
@@ -934,30 +937,6 @@ describe Tddium do
934
937
  end
935
938
  end
936
939
 
937
- describe "#logout" do
938
- before { stub_defaults }
939
-
940
- context ".tddium file exists" do
941
- before { stub_config_file }
942
- it "should delete the file" do
943
- run_logout(tddium)
944
- File.should_not be_exists(SAMPLE_TDDIUM_CONFIG_FILE)
945
- end
946
- end
947
-
948
- context ".tddium file does not exists" do
949
- it "should do nothing" do
950
- FileUtils.should_not_receive(:rm)
951
- run_logout(tddium)
952
- end
953
- end
954
-
955
- it "should show the user: '#{Tddium::Text::Process::LOGGED_OUT_SUCCESSFULLY}'" do
956
- tddium.should_receive(:say).with(Tddium::Text::Process::LOGGED_OUT_SUCCESSFULLY)
957
- run_logout(tddium)
958
- end
959
- end
960
-
961
940
  describe "#spec" do
962
941
  before do
963
942
  stub_defaults
@@ -1457,11 +1436,18 @@ describe Tddium do
1457
1436
  end
1458
1437
 
1459
1438
  it "should prompt for campfire" do
1460
- tddium.should_receive(:ask).with(Tddium::Text::Prompt::CAMPFIRE_SUBDOMAIN % current['campfire_subdomain'], anything)
1439
+ tddium.should_receive(:ask).with(Tddium::Text::Prompt::CAMPFIRE_SUBDOMAIN % current['campfire_subdomain'], anything).and_return('tddium')
1461
1440
  tddium.should_receive(:ask).with(Tddium::Text::Prompt::CAMPFIRE_TOKEN % current['campfire_token'], anything)
1462
1441
  tddium.should_receive(:ask).with(Tddium::Text::Prompt::CAMPFIRE_ROOM % current['campfire_room'], anything)
1463
1442
  run_suite(tddium, options)
1464
1443
  end
1444
+
1445
+ it "should not prompt for campfire token or room if no domain" do
1446
+ tddium.should_receive(:ask).with(Tddium::Text::Prompt::CAMPFIRE_SUBDOMAIN % current['campfire_subdomain'], anything).and_return('disable')
1447
+ tddium.should_not_receive(:ask).with(Tddium::Text::Prompt::CAMPFIRE_TOKEN % current['campfire_token'], anything)
1448
+ tddium.should_not_receive(:ask).with(Tddium::Text::Prompt::CAMPFIRE_ROOM % current['campfire_room'], anything)
1449
+ run_suite(tddium, options)
1450
+ end
1465
1451
  end
1466
1452
 
1467
1453
  it_should_behave_like "set the default environment"
data/tddium.gemspec CHANGED
@@ -35,7 +35,7 @@ EOF
35
35
  s.add_runtime_dependency("thor")
36
36
  s.add_runtime_dependency("highline")
37
37
  s.add_runtime_dependency("json")
38
- s.add_runtime_dependency("tddium_client", ">=0.0.9")
38
+ s.add_runtime_dependency("tddium_client", ">=0.0.10")
39
39
  s.add_runtime_dependency("tddium_reporting", ">=0.0.3")
40
40
  s.add_runtime_dependency("bundler")
41
41
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: tddium-preview
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.7.3
5
+ version: 0.7.4
6
6
  platform: ruby
7
7
  authors:
8
8
  - Solano Labs
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-08-10 00:00:00 -07:00
13
+ date: 2011-08-30 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -54,7 +54,7 @@ dependencies:
54
54
  requirements:
55
55
  - - ">="
56
56
  - !ruby/object:Gem::Version
57
- version: 0.0.9
57
+ version: 0.0.10
58
58
  type: :runtime
59
59
  version_requirements: *id004
60
60
  - !ruby/object:Gem::Dependency
@@ -151,9 +151,15 @@ files:
151
151
  - README.rdoc
152
152
  - Rakefile
153
153
  - bin/tddium
154
- - features/manage_login.feature
154
+ - features/login_command.feature
155
+ - features/logout_command.feature
156
+ - features/step_definitions/aruba_steps.rb
155
157
  - features/step_definitions/login_steps.rb
156
158
  - features/step_definitions/mimic_steps.rb
159
+ - features/step_definitions/suite_steps.rb
160
+ - features/suite_command.feature
161
+ - features/support/aruba.rb
162
+ - features/support/constants.rb
157
163
  - features/support/env.rb
158
164
  - features/support/mimic.rb
159
165
  - lib/tddium.rb
@@ -1,18 +0,0 @@
1
- @mimic
2
- Feature: Manage Login
3
-
4
- Scenario: Log in successfully
5
- Given the user can log in and gets API key "apikey"
6
- #When I run `tddium login --environment=mimic --email=user@example.org --password=password`
7
- When I run `tddium login --environment=mimic` interactively
8
- And I type "foo@example.com"
9
- And I type "barbarbar"
10
- And the console session ends
11
- Then the output should contain:
12
- """
13
- Logged in successfully
14
- """
15
- And the exit status should be 0
16
- And the file ".tddium.mimic" should contain "apikey"
17
- And the file ".gitignore" should contain ".tddium.mimic"
18
- And the file ".gitignore" should contain ".tddium-deploy-key.mimic"