Forgot to add the BZ Number in the commit message, its BZ 639888 Thanks
Martyn ----- Original Message ----- From: [email protected] To: [email protected] Cc: "martyntaylor" <[email protected]> Sent: Thursday, October 14, 2010 12:41:24 PM GMT +00:00 GMT Britain, Ireland, Portugal Subject: [PATCH aggregator] Fixed Test links on Provider Pages From: martyntaylor <[email protected]> --- src/app/controllers/cloud_accounts_controller.rb | 45 +++++++++++++------- src/app/controllers/provider_controller.rb | 34 +++++++++++---- src/app/views/provider/_form.haml | 5 +- src/app/views/provider/accounts.haml | 14 ++---- src/features/provider.feature | 49 +++++++++++++++++++++- src/features/support/custom.rb | 3 - 6 files changed, 111 insertions(+), 39 deletions(-) diff --git a/src/app/controllers/cloud_accounts_controller.rb b/src/app/controllers/cloud_accounts_controller.rb index f1c55b6..9d75347 100644 --- a/src/app/controllers/cloud_accounts_controller.rb +++ b/src/app/controllers/cloud_accounts_controller.rb @@ -31,30 +31,36 @@ class CloudAccountsController < ApplicationController def create @provider = Provider.find(params[:cloud_account][:provider_id]) require_privilege(Privilege::ACCOUNT_MODIFY,@provider) - if not params[:cloud_account][:x509_cert_priv_file].nil? + if params[:cloud_account] && !params[:cloud_account][:x509_cert_priv_file].blank? params[:cloud_account][:x509_cert_priv] = params[:cloud_account][:x509_cert_priv_file].read end params[:cloud_account].delete :x509_cert_priv_file - if not params[:cloud_account][:x509_cert_pub_file].nil? + if params[:cloud_account] && !params[:cloud_account][:x509_cert_pub_file].blank? params[:cloud_account][:x509_cert_pub] = params[:cloud_account][:x509_cert_pub_file].read end params[:cloud_account].delete :x509_cert_pub_file @cloud_account = CloudAccount.new(params[:cloud_account]) - unless @cloud_account.valid_credentials? - flash[:notice] = "The entered credential information is incorrect" - redirect_to :controller => "provider", :action => "accounts", :id => @provider + + if params[:test_account] + test_account(@cloud_account) + redirect_to :controller => "provider", :action => "accounts", :id => @provider, :cloud_account => params[:cloud_account] else - quota = Quota.new - quota.maximum_running_instances = quota_from_string(params[:quota][:maximum_running_instances]) - quota.save! - @cloud_account.quota_id = quota.id - @cloud_account.zones << Zone.default - @cloud_account.save! - if request.post? && @cloud_account.save && @cloud_account.populate_realms - flash[:notice] = "Provider account added." + unless @cloud_account.valid_credentials? + flash[:notice] = "The entered credential information is incorrect" + redirect_to :controller => "provider", :action => "accounts", :id => @provider + else + quota = Quota.new + quota.maximum_running_instances = quota_from_string(params[:quota][:maximum_running_instances]) + quota.save! + @cloud_account.quota_id = quota.id + @cloud_account.zones << Zone.default + @cloud_account.save! + if request.post? && @cloud_account.save && @cloud_account.populate_realms + flash[:notice] = "Provider account added." + end + redirect_to :controller => "provider", :action => "accounts", :id => @provider + kick_condor end - redirect_to :controller => "provider", :action => "accounts", :id => @provider - kick_condor end end @@ -126,6 +132,15 @@ class CloudAccountsController < ApplicationController redirect_to :controller => 'provider', :action => 'accounts', :id => provider.id end + def test_account(account) + if account.valid_credentials? + flash[:notice] = "Test Connection Success: Valid Account Details" + else + flash[:notice] = "Test Connection Failed: Invalid Account Details" + end + rescue + flash[:notice] = "Test Connection Failed: Could not connect to provider" + end private def quota_from_string(quota_raw) diff --git a/src/app/controllers/provider_controller.rb b/src/app/controllers/provider_controller.rb index 7e7f3e5..189c5cb 100644 --- a/src/app/controllers/provider_controller.rb +++ b/src/app/controllers/provider_controller.rb @@ -54,15 +54,21 @@ class ProviderController < ApplicationController require_privilege(Privilege::PROVIDER_MODIFY) @providers = Provider.list_for_user(@current_user, Privilege::PROVIDER_MODIFY) @provider = Provider.new(params[:provider]) - @provider.set_cloud_type! - if @provider.save && @provider.populate_hardware_profiles + + if params[:test_connection] + test_connection(@provider) + redirect_to :action => "new", :provider => {:name => @provider.name, :url => @provider.url} + else + @provider.set_cloud_type! + if @provider.save && @provider.populate_hardware_profiles flash[:notice] = "Provider added." redirect_to :action => "show", :id => @provider - else - flash[:notice] = "Cannot add the provider." - render :action => "new" + else + flash[:notice] = "Cannot add the provider." + render :action => "new" + end + kick_condor end - kick_condor end def update @@ -71,8 +77,8 @@ class ProviderController < ApplicationController @provider.name = params[:provider][:name] if @provider.save - flash[:notice] = "Provider updated." - redirect_to :action => "show", :id => @provider + flash[:notice] = "Provider updated." + redirect_to :action => "show", :id => @provider else render :action => "edit" end @@ -104,6 +110,10 @@ class ProviderController < ApplicationController def accounts @provider = Provider.find(:first, :conditions => {:id => params[:id]}) require_privilege(Privilege::ACCOUNT_VIEW, @provider) + if params[:cloud_account] + @cloud_account = CloudAccount.new(params[:cloud_account]) + @quota = Quota.new(params[:quota]) + end end def realms @@ -119,6 +129,14 @@ class ProviderController < ApplicationController def list end + def test_connection(provider) + if @provider.connect + flash[:notice] = "Successfuly Connected to Provider" + else + flash[:notice] = "Failed to Connect to Provider" + end + end + protected def load_providers @providers = Provider.list_for_user(@current_user, Privilege::PROVIDER_VIEW) diff --git a/src/app/views/provider/_form.haml b/src/app/views/provider/_form.haml index d0d1464..6f03d7d 100644 --- a/src/app/views/provider/_form.haml +++ b/src/app/views/provider/_form.haml @@ -28,9 +28,10 @@ - if controller.action_name == 'edit': = f.hidden_field :id, :value => @provider.id .clear.prefix_4.grid_5.suffix_4.alpha.omega - %span + - if !Provider.exists?(@provider) + %span ( - %a{ :href => ''}<> + %button.linkbutton.nospace{ :type => 'submit', :value => t('.test_connection'), :name => 'test_connection', :id => 'test_connection' }<> = t('.test_connection') ) - unless readonly diff --git a/src/app/views/provider/accounts.haml b/src/app/views/provider/accounts.haml index d2b979e..509e727 100644 --- a/src/app/views/provider/accounts.haml +++ b/src/app/views/provider/accounts.haml @@ -61,11 +61,6 @@ .grid_3.omega %a.button{ :href => remove_path, :name => "remove_acc_#{acct.id}", :class => "tiny #{'disabled' unless remove_path}" } = t(:remove) - %span - ( - %a{ :href => '' }<> - = t('.test_account') - ) %fieldset.clearfix.gap = submit_tag t(:reset), :name => 'reset_form', :class => "dialogbutton" unless @provider.cloud_accounts.empty? = submit_tag t(:save), :name => 'update_cloud_accounts', :class => "dialogbutton" unless @provider.cloud_accounts.empty? @@ -117,11 +112,10 @@ = file_field :cloud_account, :x509_cert_pub_file, :title => t('.account_public_cert') - remove_path = url_for :controller => 'cloud_accounts', :action => 'destroy' .grid_3.omega - %span - ( - %a{ :href => '' }<> - = t('.test_account') - ) + ( + %button.linkbutton.nospace{ :type => 'submit', :value => t('.test_account'), :name => 'test_account', :id => 'test_account' }<> + = t('.test_account') + ) %fieldset.clearfix .grid_13.alpha.omega = submit_tag t(:add), :class => "ra nomargin dialogbutton" diff --git a/src/features/provider.feature b/src/features/provider.feature index a544361..c332667 100644 --- a/src/features/provider.feature +++ b/src/features/provider.feature @@ -26,7 +26,6 @@ Feature: Manage Providers When I follow "testprovider" Then I should see "Provider Name" And I should see "Provider URL" - And I should see "Test Connection" Scenario: Create a new Provider Given I am on the providers page @@ -39,3 +38,51 @@ Feature: Manage Providers Then I should be on the show provider page And I should see "Provider added" And I should have a provider named "testprovider" + + Scenario: Test Provider Connection Successful + Given I am on the providers page + When I press "Add" + Then I should be on the new provider page + When I fill in "provider[name]" with "testprovider" + And I fill in "provider[url]" with "http://localhost:3001/api" + And I press "test_connection" + Then I should see "Successfuly Connected to Provider" + + Scenario: Test Provider Connection Failure + Given I am on the providers page + When I press "Add" + Then I should be on the new provider page + When I fill in "provider[name]" with "incorrect_provider" + And I fill in "provider[url]" with "http://incorrecthost:3001/api" + And I press "test_connection" + Then I should see "Failed to Connect to Provider" + + Scenario: Test Account Connection Success + Given I am on the homepage + And there are these providers: + | name | + | provider1 | + When I go to the providers page + And I follow "provider1" + And I follow "Provider Accounts" + And I fill in "cloud_account[label]" with "MockAccount" + And I fill in "cloud_account[username]" with "mockuser" + And I fill in "cloud_account[password]" with "mockpassword" + And I fill in "cloud_account[account_number]" with "12345678" + And I press "test_account" + Then I should see "Test Connection Success: Valid Account Details" + + Scenario: Test Account Connection Failure + Given I am on the homepage + And there are these providers: + | name | + | provider1 | + When I go to the providers page + And I follow "provider1" + And I follow "Provider Accounts" + And I fill in "cloud_account[label]" with "IncorrectAccount" + And I fill in "cloud_account[username]" with "incorrect_user" + And I fill in "cloud_account[password]" with "incorrect_password" + And I fill in "cloud_account[account_number]" with "12345678" + And I press "test_account" + Then I should see "Test Connection Failed: Invalid Account Details" \ No newline at end of file diff --git a/src/features/support/custom.rb b/src/features/support/custom.rb index 46c618e..6e4e1ef 100644 --- a/src/features/support/custom.rb +++ b/src/features/support/custom.rb @@ -28,9 +28,6 @@ Provider.class_eval do end CloudAccount.class_eval do - def valid_credentials? - true - end alias :generate_cloud_account_key_original :generate_cloud_account_key -- 1.7.2.3 _______________________________________________ deltacloud-devel mailing list [email protected] https://fedorahosted.org/mailman/listinfo/deltacloud-devel
