tests.
end
end
- def manage_repositories
+ def repositories
repo_links = Link.
filter([['head_uuid', 'is_a', 'arvados#repository'],
['tail_uuid', '=', current_user.uuid],
['link_class', '=', 'permission'],
])
- owned_repositories = Repository.where(owner_uuid: current_user.uuid)
+ owned_repositories = Repository.where(owner_uuid: @object.uuid)
@my_repositories = (Repository.where(uuid: repo_links.collect(&:head_uuid)) |
owned_repositories).
owned_repositories.each do |repo|
@repo_writable[repo.uuid] = 'can_manage'
end
-
- respond_to do |f|
- f.html { render template: 'users/manage_repositories' }
- end
end
- def manage_virtual_machines
+ def virtual_machines
@my_vm_logins = {}
- Link.where(tail_uuid: current_user.uuid,
+ Link.where(tail_uuid: @object.uuid,
link_class: 'permission',
name: 'can_login').
each do |perm_link|
end
end
@my_virtual_machines = VirtualMachine.where(uuid: @my_vm_logins.keys)
-
- respond_to do |f|
- f.html { render template: 'users/manage_virtual_machines' }
- end
end
- def manage_ssh_keys
- @my_ssh_keys = AuthorizedKey.where(key_type: 'SSH', owner_uuid: current_user.uuid)
-
- @page = params["page"]
- respond_to do |f|
- f.html { render template: 'users/manage_ssh_keys' }
- end
+ def ssh_keys
+ @my_ssh_keys = AuthorizedKey.where(key_type: 'SSH', owner_uuid: @object.uuid)
end
def manage_account
- # repositories current user can read / write
- repo_links = Link.
- filter([['head_uuid', 'is_a', 'arvados#repository'],
- ['tail_uuid', '=', current_user.uuid],
- ['link_class', '=', 'permission'],
- ])
-
- owned_repositories = Repository.where(owner_uuid: current_user.uuid)
-
- @my_repositories = (Repository.where(uuid: repo_links.collect(&:head_uuid)) |
- owned_repositories).
- uniq { |repo| repo.uuid }
-
-
- @repo_writable = {}
- repo_links.each do |link|
- if link.name.in? ['can_write', 'can_manage']
- @repo_writable[link.head_uuid] = link.name
- end
- end
-
- owned_repositories.each do |repo|
- @repo_writable[repo.uuid] = 'can_manage'
- end
-
- # virtual machines the current user can login into
- @my_vm_logins = {}
- Link.where(tail_uuid: current_user.uuid,
- link_class: 'permission',
- name: 'can_login').
- each do |perm_link|
- if perm_link.properties.andand[:username]
- @my_vm_logins[perm_link.head_uuid] ||= []
- @my_vm_logins[perm_link.head_uuid] << perm_link.properties[:username]
- end
- end
- @my_virtual_machines = VirtualMachine.where(uuid: @my_vm_logins.keys)
-
- # current user's ssh keys
- @my_ssh_keys = AuthorizedKey.where(key_type: 'SSH', owner_uuid: current_user.uuid)
-
- respond_to do |f|
- f.html { render template: 'users/manage_account' }
- end
+ repositories
+ virtual_machines
+ ssh_keys
end
def add_ssh_key_popup
<%= current_user.email %>
</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> My home project </a></li>
+ <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>
- <li role="menuitem"><a href="/manage_virtual_machines" role="menuitem"><i class="fa fa-lg fa-terminal fa-fw"></i> My virtual machines</a></li>
- <li role="menuitem"><a href="/manage_repositories" role="menuitem"><i class="fa fa-lg fa-code-fork fa-fw"></i> My repositories</a></li>
- <li role="menuitem"><a href="/manage_current_token" role="menuitem"><i class="fa fa-lg fa-ticket fa-fw"></i> My current token</a></li>
- <li role="menuitem"><a href="/manage_ssh_keys" role="menuitem"><i class="fa fa-lg fa-key fa-fw"></i> My SSH keys</a></li>
+ <li role="menuitem">
+ <%= link_to virtual_machines_user_path(current_user), role: 'menu-item' do %>
+ <i class="fa fa-lg fa-code-fork fa-fw"></i> Virtual machines
+ <% end %>
+ </li>
+ <li role="menuitem">
+ <%= link_to repositories_user_path(current_user), role: 'menu-item' do %>
+ <i class="fa fa-lg fa-code-fork fa-fw"></i> Repositories
+ <% end %>
+ </li>
+ <li role="menuitem"><a href="/current_token" role="menuitem"><i class="fa fa-lg fa-ticket fa-fw"></i> Current token</a></li>
+ <li role="menuitem">
+ <%= link_to ssh_keys_user_path(current_user), role: 'menu-item' do %>
+ <i class="fa fa-lg fa-key fa-fw"></i> SSH keys
+ <% end %>
+ </li>
- <li role="menuitem"><a href="/manage_account" role="menuitem"><i class="fa fa-lg fa-key fa-fw"></i> Manage account</a></li>
+ <li role="menuitem">
+ <%= link_to manage_account_user_path(current_user), role: 'menu-item' do %>
+ <i class="fa fa-lg fa-key fa-fw"></i> Manage account
+ <% end %>
+ </li>
<% if Rails.configuration.user_profile_form_fields %>
<li role="menuitem"><a href="/users/<%=current_user.uuid%>/profile" role="menuitem"><i class="fa fa-lg fa-user fa-fw"></i> Manage profile</a></li>
<%= image_tag "dax.png", class: "dax" %>
<div>
Hi, I noticed that you have not yet set up an SSH public key for use with Arvados.
- <%= link_to "Click here to set up an SSH public key for use with Arvados.",
- "/manage_account", style: "font-weight: bold" %>
+ <%= link_to ssh_keys_user_path(current_user) do %>
+ <b>Click here to set up an SSH public key for use with Arvados.</b>
+ <%end%>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
- <a data-parent="#arv-adv-accordion" href="/manage_current_token">
+ <a data-parent="#arv-adv-accordion" href="/current_token">
Current Token
</a>
</h4>
unset ARVADOS_API_HOST_INSECURE
<% end %>
</pre>
-<p>Arvados <a href="/manage_virtual_machines"> virtual machines</a> do this for you automatically. This setup is needed only when you use the API remotely (e.g., from your own workstation).</p>
+<p>Arvados<%= link_to virtual_machines_user_path(current_user) do%> virtual machines<%end%> do this for you automatically. This setup is needed only when you use the API remotely (e.g., from your own workstation).</p>
</div>
</div>
<div class="col-sm-6">
<div class="panel-group" id="arv-adv-accordion">
<div class="panel panel-default">
- <%= render partial: "manage_virtual_machines" %>
+ <%= render partial: "virtual_machines" %>
</div>
<div class="panel panel-default">
- <%= render partial: "manage_repositories" %>
+ <%= render partial: "repositories" %>
</div>
</div>
</div>
<div class="col-sm-6">
<div class="panel-group" id="arv-adv-accordion">
<div class="panel panel-default">
- <%= render partial: "manage_ssh_keys" %>
+ <%= render partial: "ssh_keys" %>
</div>
<div class="panel panel-default">
- <%= render partial: "manage_current_token" %>
+ <%= render partial: "current_token" %>
</div>
</div>
<div id="add-ssh-key-modal-window" class="modal fade" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"></div>
'data-target' => '#add-repository-modal'} %>
</div>
<h4 class="panel-title">
- <a data-parent="#arv-adv-accordion" href="/manage_repositories">
+ <%= link_to repositories_user_path(current_user) do%>
Repositories
- </a>
+ <%end%>
</h4>
</div>
</div>
</div>
<p>When you are using an Arvados virtual machine, you should clone the https:// URLs. This will authenticate automatically using your API token.</p>
- <p>In order to clone git repositories using SSH, <a href="/manage_ssh_keys"> add an SSH key to your account</a> and clone the git@ URLs.</p>
+ <p>In order to clone git repositories using SSH, <%= link_to ssh_keys_user_path(current_user) do%> add an SSH key to your account<%end%> and clone the git@ URLs.</p>
'data-target' => '#add-ssh-key-modal-window'} %>
</div>
<h4 class="panel-title">
- <a data-parent="#arv-adv-accordion" href="/manage_ssh_keys">
+ <%= link_to ssh_keys_user_path(current_user) do %>
SSH Keys
- </a>
+ <%end%>
</h4>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
- <a data-parent="#arv-adv-accordion" href="/manage_virtual_machines">
+ <%= link_to virtual_machines_user_path(current_user) do %>
Virtual Machines
- </a>
+ <% end %>
+
</h4>
</div>
<% end %>
</div>
</div>
- <p>In order to access virtual machines using SSH, <a href="/manage_ssh_keys"> add an SSH key to your account</a> and add a section like this to your SSH configuration file ( <i>~/.ssh/config</i>):</p>
+ <p>In order to access virtual machines using SSH, <%= link_to ssh_keys_user_path(current_user) do%> add an SSH key to your account<%end%> and add a section like this to your SSH configuration file ( <i>~/.ssh/config</i>):</p>
<pre>Host *.arvados
TCPKeepAlive yes
ServerAliveInterval 60
--- /dev/null
+<%= render :partial => 'current_token' %>
+++ /dev/null
-<%= render :partial => 'manage_current_token' %>
+++ /dev/null
-<%= render :partial => 'manage_repositories' %>
-<%= render partial: "add_repository_modal" %>
+++ /dev/null
-<%= render :partial => 'manage_virtual_machines' %>
--- /dev/null
+<%= render :partial => 'repositories' %>
+<%= render partial: "add_repository_modal" %>
-<%= render :partial => 'manage_ssh_keys' %>
+<%= render :partial => 'ssh_keys' %>
<div id="add-ssh-key-modal-window" class="modal fade" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"></div>
--- /dev/null
+<%= render :partial => 'virtual_machines' %>
get 'setup_popup', :on => :member
get 'profile', :on => :member
post 'request_shell_access', :on => :member
+ get 'manage_account', :on => :member
+ get 'virtual_machines', :on => :member
+ get 'repositories', :on => :member
+ get 'ssh_keys', :on => :member
end
- get '/manage_virtual_machines' => 'users#manage_virtual_machines'
- get '/manage_repositories' => 'users#manage_repositories'
- get '/manage_current_token' => 'users#manage_current_token'
- get '/manage_ssh_keys' => 'users#manage_ssh_keys'
- get '/manage_account' => 'users#manage_account'
+ get '/current_token' => 'users#current_token'
get "/add_ssh_key_popup" => 'users#add_ssh_key_popup', :as => :add_ssh_key_popup
get "/add_ssh_key" => 'users#add_ssh_key', :as => :add_ssh_key
resources :logs
end
test "show repositories with read, write, or manage permission" do
- get :manage_account, {}, session_for(:active)
+ get :repositories, {id: api_fixture("users")['active']['uuid']}, session_for(:active)
assert_response :success
repos = assigns(:my_repositories)
assert repos
end
test "show repositories lists linked as well as owned repositories" do
- get :manage_account, {}, session_for(:active)
+ get :repositories, {id: api_fixture("users")['active']['uuid']}, session_for(:active)
assert_response :success
repos = assigns(:my_repositories)
assert repos
assert page.has_no_link?('Not active'), 'Found link - Not active'
assert page.has_no_link?('Sign agreements'), 'Found link - Sign agreements'
- assert_selector "a[href=\"/projects/#{user['uuid']}\"]", text: 'My home project'
+ assert_selector "a[href=\"/projects/#{user['uuid']}\"]", text: 'Home project'
assert page.has_link?('Manage account'), 'No link - Manage account'
+ assert page.has_link?('Virtual machines'), 'No link - Virtual machines'
+ assert page.has_link?('Repositories'), 'No link - Repositories'
+ assert page.has_link?('Current token'), 'No link - Current token'
+ assert page.has_link?('SSH keys'), 'No link - SSH keys'
if profile_config
assert page.has_link?('Manage profile'), 'No link - Manage profile'
assert page.has_no_link?('Manage profile'), 'Found link - Manage profile'
end
else
- assert_no_selector 'a', text: 'My home project'
+ assert_no_selector 'a', text: 'Home project'
assert page.has_no_link?('Manage account'), 'Found link - Manage account'
+ assert page.has_no_link?('Virtual machines'), 'Found link - Virtual machines'
+ assert page.has_no_link?('Repositories'), 'Found link - Repositories'
+ assert page.has_no_link?('Current token'), 'Found link - Current token'
+ assert page.has_no_link?('SSH keys'), 'Found link - SSH keys'
assert page.has_no_link?('Manage profile'), 'Found link - Manage profile'
end
assert page.has_link?('Log out'), 'No link - Log out'
within('.navbar-fixed-top') do
page.find("#notifications-menu").click
within('.dropdown-menu') do
- assert_selector 'a', text: 'My virtual machines'
- assert_selector 'a', text: 'My repositories'
- assert_selector 'a', text: 'My current token'
- assert_selector 'a', text: 'My SSH keys'
- find('a', text: 'My SSH keys').click
+ assert_selector 'a', text: 'Virtual machines'
+ assert_selector 'a', text: 'Repositories'
+ assert_selector 'a', text: 'Current token'
+ assert_selector 'a', text: 'SSH keys'
+ find('a', text: 'SSH keys').click
end
end
- # now in My SSH Keys page
+ # now in SSH Keys page
assert page.has_text?('Add new SSH key'), 'No text - Add SSH key'
add_and_verify_ssh_key
else # inactive user
end
test "verify repositories for active user" do
- visit page_with_token('active', '/manage_account')
+ visit page_with_token('active')
+ within('.navbar-fixed-top') do
+ page.find("#notifications-menu").click
+ within('.dropdown-menu') do
+ assert_selector 'a', text: 'Repositories'
+ find('a', text: 'Repositories').click
+ end
+ end
repos = [[api_fixture('repositories')['foo'], true, true],
[api_fixture('repositories')['repository3'], false, false],
test "request shell access" do
ActionMailer::Base.deliveries = []
- visit page_with_token('spectator', '/manage_account')
+ visit page_with_token('spectator')
+ within('.navbar-fixed-top') do
+ page.find("#notifications-menu").click
+ within('.dropdown-menu') do
+ assert_selector 'a', text: 'Virtual machines'
+ find('a', text: 'Virtual machines').click
+ end
+ end
assert_text 'You do not have access to any virtual machines'
click_link 'Send request for shell access'
within('.navbar-fixed-top') do
page.find("#notifications-menu").click
within('.dropdown-menu') do
- find('a', text: 'My virtual machines').click
+ find('a', text: 'Virtual machines').click
end
end
assert_text 'You do not have access to any virtual machines.'
end
test "create new repository" do
- visit page_with_token("active_trustedclient", "/manage_account")
+ visit page_with_token("active_trustedclient")
+ within('.navbar-fixed-top') do
+ page.find("#notifications-menu").click
+ within('.dropdown-menu') do
+ assert_selector 'a', text: 'Repositories'
+ find('a', text: 'Repositories').click
+ end
+ end
click_on "Add new repository"
within ".modal-dialog" do
fill_in "Name", with: "workbenchtest"
end
[
- ['My virtual machines', nil, 'Host name'],
- ['My repositories', 'Add new repository', 'It may take a minute or two before you can clone your new repository.'],
- ['My current token', nil, 'HISTIGNORE=$HISTIGNORE'],
- ['My SSH keys', 'Add new SSH key', 'Click here to learn about SSH keys in Arvados.'],
+ ['Virtual machines', nil, 'Host name'],
+ ['Repositories', 'Add new repository', 'It may take a minute or two before you can clone your new repository.'],
+ ['Current token', nil, 'HISTIGNORE=$HISTIGNORE'],
+ ['SSH keys', 'Add new SSH key', 'Click here to learn about SSH keys in Arvados.'],
].each do |page_name, button_name, look_for|
test "test notification menu for page #{page_name}" do
visit page_with_token('admin')
end
[
- ['My virtual machines', 'You do not have access to any virtual machines.'],
- ['My repositories', 'You do not seem to have access to any repositories.'],
- ['My current token', 'HISTIGNORE=$HISTIGNORE'],
- ['My SSH keys', 'You have not yet set up an SSH public key for use with Arvados.'],
+ ['Virtual machines', 'You do not have access to any virtual machines.'],
+ ['Repositories', 'You do not seem to have access to any repositories.'],
+ ['Current token', 'HISTIGNORE=$HISTIGNORE'],
+ ['SSH keys', 'You have not yet set up an SSH public key for use with Arvados.'],
].each do |page_name, look_for|
test "test notification menu for page #{page_name} when page is empty" do
visit page_with_token('user1_with_load')
assert page.has_no_link?('Not active'), 'Found link - Not active'
assert page.has_no_link?('Sign agreements'), 'Found link - Sign agreements'
- assert page.has_link?('My virtual machines'), 'No link - My Virtual Machines'
- assert page.has_link?('My repositories'), 'No link - My Repositories'
- assert page.has_link?('My current token'), 'No link - My Current Token'
- assert page.has_link?('My SSH keys'), 'No link - My SSH Keys'
+ assert page.has_link?('Virtual machines'), 'No link - Virtual machines'
+ assert page.has_link?('Repositories'), 'No link - Repositories'
+ assert page.has_link?('Current token'), 'No link - Current token'
+ assert page.has_link?('SSH keys'), 'No link - SSH Keys'
if profile_config
assert page.has_link?('Manage profile'), 'No link - Manage profile'