-
- # now in manage account page
- assert page.has_text?('Virtual Machines'), 'No text - Virtual Machines'
- assert page.has_text?('Repositories'), 'No text - Repositories'
- assert page.has_text?('SSH Keys'), 'No text - SSH Keys'
- assert page.has_text?('Current Token'), 'No text - Current Token'
-
- assert page.has_text?('The Arvados API token is a secret key that enables the Arvados SDKs to access Arvados'), 'No text - Arvados API token'
-
- click_link 'Add new SSH key'
-
- within '.modal-content' do
- assert page.has_text?('Public Key'), 'No text - Public Key'
- assert page.has_button?('Cancel'), 'No button - Cancel'
- assert page.has_button?('Submit'), 'No button - Submit'
-
- page.find_field('public_key').set 'first test with an incorrect ssh key value'
- click_button 'Submit'
- assert page.has_text?('Public key does not appear to be a valid ssh-rsa or dsa public key'), 'No text - Public key does not appear to be a valid'
-
- public_key_str = api_fixture('authorized_keys')['active']['public_key']
- page.find_field('public_key').set public_key_str
- page.find_field('name').set 'added_in_test'
- click_button 'Submit'
- assert page.has_text?('Public key already exists in the database, use a different key.'), 'No text - Public key already exists'
-
- new_key = SSHKey.generate
- page.find_field('public_key').set new_key.ssh_public_key
- page.find_field('name').set 'added_in_test'
- click_button 'Submit'
- end
-
- # key must be added. look for it in the refreshed page
- assert page.has_text?('added_in_test'), 'No text - added_in_test'
- end
- end
-
- # Check manage profile page and add missing profile to the user
- def add_profile user
- assert page.has_no_text?('My projects'), 'Found text - My projects'
- assert page.has_no_text?('Projects shared with me'), 'Found text - Projects shared with me'
-
- assert page.has_text?('Profile'), 'No text - Profile'
- assert page.has_text?('First name'), 'No text - First name'
- assert page.has_text?('Last name'), 'No text - Last name'
- assert page.has_text?('Identity URL'), 'No text - Identity URL'
- assert page.has_text?('Email'), 'No text - Email'
- assert page.has_text?(user['email']), 'No text - user email'
-
- # Using the default profile which has message and one required field
-
- # Save profile without filling in the required field. Expect to be back in this profile page again
- click_button "Save profile"
- assert page.has_text?('Profile'), 'No text - Profile'
- assert page.has_text?('First name'), 'No text - First name'
- assert page.has_text?('Last name'), 'No text - Last name'
- assert page.has_text?('Save profile'), 'No text - Save profile'
-
- # This time fill in required field and then save. Expect to go to requested page after that.
- profile_message = Rails.configuration.user_profile_form_message
- required_field_title = ''
- required_field_key = ''
- profile_config = Rails.configuration.user_profile_form_fields
- profile_config.andand.each do |entry|
- if entry['required']
- required_field_key = entry['key']
- required_field_title = entry['form_field_title']
- end
- end
-
- assert page.has_text?(profile_message[0,25]), 'No text - configured profile message'
- assert page.has_text?(required_field_title), 'No text - configured required field title'
- page.find_field('user[prefs][:profile][:'+required_field_key+']').set 'value to fill required field'
-
- click_button "Save profile"
- # profile saved and in profile page now with success
- assert page.has_text?('Thank you for filling in your profile'), 'No text - Thank you for filling'
- click_button 'Access Arvados Workbench'
-
- # profile saved and in home page now
- assert page.has_text?('My projects'), 'No text - My projects'
- assert page.has_text?('Projects shared with me'), 'No text - Projects shared with me'
- end
-
- # test the search box
- def verify_search_box user
- if user && user['is_active']
- # let's search for a valid uuid
- within('.navbar-fixed-top') do
- page.find_field('search').set user['uuid']
- page.find('.glyphicon-search').click
- end
-
- # we should now be in the user's page as a result of search
- assert page.has_text?(user['first_name']), 'No text - user first name'
-
- # let's search again for an invalid valid uuid
- within('.navbar-fixed-top') do
- search_for = String.new user['uuid']
- search_for[0]='1'
- page.find_field('search').set search_for
- page.find('.glyphicon-search').click
- end
-
- # we should see 'not found' error page
- assert page.has_text?('Not Found'), 'No text - Not Found'
- assert page.has_link?('Report problem'), 'No text - Report problem'
- click_link 'Report problem'
- within '.modal-content' do
- assert page.has_text?('Report a problem'), 'No text - Report a problem'
- assert page.has_no_text?('Version / debugging info'), 'No text - Version / debugging info'
- assert page.has_text?('Server version'), 'No text - Server version'
- assert page.has_text?('Server restarted at'), 'No text - Server restarted at'
- assert page.has_text?('Found a problem?'), 'No text - Found a problem'
- assert page.has_button?('Report issue'), 'No button - Report issue'
- assert page.has_button?('Cancel'), 'No button - Cancel'
-
- # enter a report text and click on report
- page.find_field('report_issue_text').set 'my test report text'
- click_button 'Report issue'
-
- # ajax success updated button texts and added footer message
- assert page.has_no_button?('Report issue'), 'Found button - Report issue'
- assert page.has_no_button?('Cancel'), 'Found button - Cancel'
- assert page.has_text?('Report sent'), 'No text - Report sent'
- assert page.has_button?('Close'), 'No text - Close'
- assert page.has_text?('Thanks for reporting this issue'), 'No text - Thanks for reporting this issue'
-
- click_button 'Close'
- end
-
- # let's search for the anonymously accessible project
- publicly_accessible_project = api_fixture('groups')['anonymously_accessible_project']
-
- within('.navbar-fixed-top') do
- # search again for the anonymously accessible project
- page.find_field('search').set publicly_accessible_project['name'][0,10]
- page.find('.glyphicon-search').click
- end
-
- within '.modal-content' do
- assert page.has_text?('All projects'), 'No text - All projects'
- assert page.has_text?('Search'), 'No text - Search'
- assert page.has_text?('Cancel'), 'No text - Cancel'
- assert_selector('div', text: publicly_accessible_project['name'])
- find(:xpath, '//div[./span[contains(.,publicly_accessible_project["uuid"])]]').click
-
- click_button 'Show'
- end
-
- # seeing "Unrestricted public data" now
- assert page.has_text?(publicly_accessible_project['name']), 'No text - publicly accessible project name'
- assert page.has_text?(publicly_accessible_project['description']), 'No text - publicly accessible project description'