def logs
@logs = @object.
- stderr_log_query(Rails.configuration.RunningJobLogRecordsToFetch).
+ stderr_log_query(Rails.configuration.Workbench.RunningJobLogRecordsToFetch).
map { |e| e.serializable_hash.merge({ 'prepend' => true }) }
respond_to do |format|
format.json { render json: @logs }
respond_to do |format|
if current_user.andand.is_admin
setup_params = {}
- setup_params[:send_notification_email] = "#{Rails.configuration.Users.SendUserSetupNotificationEmail}"
+ setup_params[:send_notification_email] = "#{Rails.configuration.Mail.SendUserSetupNotificationEmail}"
if params['user_uuid'] && params['user_uuid'].size>0
setup_params[:uuid] = params['user_uuid']
end
end
def arvados_login_url(params={})
- if Rails.configuration.respond_to? :arvados_login_base
- uri = Rails.configuration.Services.Controller.ExternalURL.to_s + "/login"
+ uri = URI.parse(Rails.configuration.Services.Controller.ExternalURL.to_s)
+ if Rails.configuration.testing_override_login_url
+ uri = URI(Rails.configuration.testing_override_login_url)
end
- if params.size > 0
- uri += '?' << params.collect { |k,v|
- CGI.escape(k.to_s) + '=' + CGI.escape(v.to_s)
- }.join('&')
- end
- uri
+ uri.path = "/login"
+ uri.query = URI.encode_www_form(params)
+ uri.to_s
end
def arvados_logout_url(params={})
end
def arvados_v1_base
- Rails.configuration.Services.Controller.ExternalURL.to_s + "/arvados/v1"
+ # workaround Ruby 2.3 bug, can't duplicate URI objects
+ # https://github.com/httprb/http/issues/388
+ u = URI.parse(Rails.configuration.Services.Controller.ExternalURL.to_s)
+ u.path = "/arvados/v1"
+ u.to_s
end
def discovery
load_log();
function load_log() {
+ //console.log("fetching "+logcollection_url+" with "+ajax_opts);
$.ajax(logcollection_url, ajax_opts).done(done).fail(fail);
}
function done(data, status, jqxhr) {
<meta name="author" content="">
<% if current_user %>
<% content_for :js do %>
- window.defaultSession = <%=raw({baseURL: Rails.configuration.Services.Controller.ExternalURL, token: Thread.current[:arvados_api_token], user: current_user}.to_json)%>
+ window.defaultSession = <%=raw({baseURL: Rails.configuration.Services.Controller.ExternalURL.to_s, token: Thread.current[:arvados_api_token], user: current_user}.to_json)%>
<% end %>
<% end %>
<% if current_user and $arvados_api_client.discovery[:websocketUrl] %>
</li>
<% if current_user.is_active %>
<li role="menuitem"><a href="/projects/<%=current_user.uuid%>" role="menuitem"><i class="fa fa-lg fa-home fa-fw"></i> Home project </a></li>
- <% if Rails.configuration.Services.Composer.ExternalURL %>
+ <% if Rails.configuration.Services.Composer.ExternalURL != URI("") %>
<li role="menuitem">
- <form action="<%= Rails.configuration.Services.Composer.ExternalURL %>" method="GET">
+ <form action="<%= Rails.configuration.Services.Composer.ExternalURL.to_s %>" method="GET">
<input type="hidden" name="api_token" value="<%= Thread.current[:arvados_api_token] %>" />
<button role="menuitem" type="submit">
<i class="fa fa-lg fa-share-alt fa-fw"></i> Workflow Composer
secret_key_base: false
default_openid_prefix: https://www.google.com/accounts/o8/id
send_user_setup_notification_email: true
+ testing_override_login_url: false
# Scratch directory used by the remote repository browsing
# feature. If it doesn't exist, it (and any missing parents) will be
# /etc/arvados/config.yml, you will be able to delete application.yml.
require 'config_loader'
+require 'config_validators'
begin
# If secret_token.rb exists here, we need to load it first.
ConfigLoader.copy_into_config $arvados_config, config
ConfigLoader.copy_into_config $remaining_config, config
secrets.secret_key_base = $arvados_config["Workbench"]["SecretKeyBase"]
+ ConfigValidators.validate_wb2_url_config()
end
require 'uri'
module ConfigValidators
- def validate_wb2_url_config
- if Rails.configuration.workbench2_url
- begin
- if !URI.parse(Rails.configuration.workbench2_url).is_a?(URI::HTTP)
- Rails.logger.warn("workbench2_url config is not an HTTP URL: #{Rails.configuration.workbench2_url}")
- Rails.configuration.workbench2_url = false
- elsif /.*[\/]{2,}$/.match(Rails.configuration.workbench2_url)
- Rails.logger.warn("workbench2_url config shouldn't have multiple trailing slashes: #{Rails.configuration.workbench2_url}")
- Rails.configuration.workbench2_url = false
- else
- return true
- end
- rescue URI::InvalidURIError
- Rails.logger.warn("workbench2_url config invalid URL: #{Rails.configuration.workbench2_url}")
- Rails.configuration.workbench2_url = false
- end
+ def self.validate_wb2_url_config
+ if Rails.configuration.Services.Workbench2.ExternalURL != URI("")
+ if !Rails.configuration.Services.Workbench2.ExternalURL.is_a?(URI::HTTP)
+ Rails.logger.warn("workbench2_url config is not an HTTP URL: #{Rails.configuration.Services.Workbench2.ExternalURL}")
+ Rails.configuration.Services.Workbench2.ExternalURL = URI("")
+ elsif /.*[\/]{2,}$/.match(Rails.configuration.Services.Workbench2.ExternalURL.to_s)
+ Rails.logger.warn("workbench2_url config shouldn't have multiple trailing slashes: #{Rails.configuration.Services.Workbench2.ExternalURL}")
+ Rails.configuration.Services.Workbench2.ExternalURL = URI("")
+ else
+ return true
+ end
end
return false
end
end
-
end
[
- [false, false],
+ ["", false],
['http://wb2.example.org//', false],
['ftp://wb2.example.org', false],
['wb2.example.org', false],
].each do |wb2_url_config, wb2_menu_appear|
test "workbench2_url=#{wb2_url_config} should#{wb2_menu_appear ? '' : ' not'} show WB2 menu" do
Rails.configuration.Services.Workbench2.ExternalURL = URI(wb2_url_config)
- assert_equal wb2_menu_appear, ConfigValidators::validate_wb2_url_config()
+ assert_equal wb2_menu_appear, ConfigValidators.validate_wb2_url_config()
visit page_with_token('active')
within('.navbar-fixed-top') do
end
test "test arvados_public_data_doc_url config unset" do
- Rails.configuration.Workbench.ArvadosPublicDataDocURL = false
+ Rails.configuration.Workbench.ArvadosPublicDataDocURL = ""
visit page_with_token('active')
within '.navbar-fixed-top' do
need_javascript
end
+ teardown do
+ Rails.configuration.testing_override_login_url = false
+ end
+
def start_sso_stub token
port = available_port('sso_stub')
test "Add another login to this account" do
visit page_with_token('active_trustedclient')
- stub = start_sso_stub(api_fixture('api_client_authorizations')['project_viewer_trustedclient']['api_token'])
- Rails.configuration.Services.Controller.ExternalURL = URI(stub)
+ Rails.configuration.testing_override_login_url = start_sso_stub(api_fixture('api_client_authorizations')['project_viewer_trustedclient']['api_token'])
find("#notifications-menu").click
assert_text "active-user@arvados.local"
test "Use this login to access another account" do
visit page_with_token('project_viewer_trustedclient')
- stub = start_sso_stub(api_fixture('api_client_authorizations')['active_trustedclient']['api_token'])
- Rails.configuration.Services.Controller.ExternalURL = URI(stub)
+ Rails.configuration.testing_override_login_url = start_sso_stub(api_fixture('api_client_authorizations')['active_trustedclient']['api_token'])
find("#notifications-menu").click
assert_text "project-viewer@arvados.local"
test "Link login of inactive user to this account" do
visit page_with_token('active_trustedclient')
- stub = start_sso_stub(api_fixture('api_client_authorizations')['inactive_uninvited_trustedclient']['api_token'])
- Rails.configuration.Services.Controller.ExternalURL = URI(stub)
+ Rails.configuration.testing_override_login_url = start_sso_stub(api_fixture('api_client_authorizations')['inactive_uninvited_trustedclient']['api_token'])
find("#notifications-menu").click
assert_text "active-user@arvados.local"
test "Cannot link to inactive user" do
visit page_with_token('active_trustedclient')
- stub = start_sso_stub(api_fixture('api_client_authorizations')['inactive_uninvited_trustedclient']['api_token'])
- Rails.configuration.Services.Controller.ExternalURL = URI(stub)
+ Rails.configuration.testing_override_login_url = start_sso_stub(api_fixture('api_client_authorizations')['inactive_uninvited_trustedclient']['api_token'])
find("#notifications-menu").click
assert_text "active-user@arvados.local"
test "Inactive user can link to active account" do
visit page_with_token('inactive_uninvited_trustedclient')
- stub = start_sso_stub(api_fixture('api_client_authorizations')['active_trustedclient']['api_token'])
- Rails.configuration.Services.Controller.ExternalURL = URI(stub)
+ Rails.configuration.testing_override_login_url = start_sso_stub(api_fixture('api_client_authorizations')['active_trustedclient']['api_token'])
find("#notifications-menu").click
assert_text "inactive-uninvited-user@arvados.local"
test "Admin cannot link to non-admin" do
visit page_with_token('admin_trustedclient')
- stub = start_sso_stub(api_fixture('api_client_authorizations')['active_trustedclient']['api_token'])
- Rails.configuration.Services.Controller.ExternalURL = URI(stub)
+ Rails.configuration.testing_override_login_url = start_sso_stub(api_fixture('api_client_authorizations')['active_trustedclient']['api_token'])
find("#notifications-menu").click
assert_text "admin@arvados.local"
if !user
assert_text('Please log in')
elsif user['is_active']
- if profile_config && !has_profile
+ if !profile_config.empty? && !has_profile
assert_text('Save profile')
add_profile user
else
assert_selector('a', text: 'Current token')
assert_selector('a', text: 'SSH keys')
- if profile_config
+ if !profile_config.empty?
assert_selector('a', text: 'Manage profile')
else
assert_no_selector('a', text: 'Manage profile')
[true, false].each do |profile_required|
test "visit #{token} home page when profile is #{'not ' if !profile_required}configured" do
if !profile_required
- Rails.configuration.Workbench.UserProfileFormFields = false
+ Rails.configuration.Workbench.UserProfileFormFields = []
else
# Our test config enabled profile by default. So, no need to update config
end
# Restore configuration settings changed during tests
ConfigLoader.copy_into_config $arvados_config, Rails.configuration
ConfigLoader.copy_into_config $remaining_config, Rails.configuration
- Rails.configuration.Services.Controller.ExternalURL = "https://#{ENV['ARVADOS_API_HOST']}"
+ Rails.configuration.Services.Controller.ExternalURL = URI("https://#{ENV['ARVADOS_API_HOST']}")
Rails.configuration.TLS.Insecure = true
end
end