diff options
Diffstat (limited to 'qa/qa')
-rw-r--r-- | qa/qa/factory/resource/deploy_key.rb | 31 | ||||
-rw-r--r-- | qa/qa/factory/resource/sandbox.rb | 2 | ||||
-rw-r--r-- | qa/qa/factory/settings/hashed_storage.rb | 6 | ||||
-rw-r--r-- | qa/qa/page/menu/admin.rb (renamed from qa/qa/page/admin/menu.rb) | 4 | ||||
-rw-r--r-- | qa/qa/page/menu/main.rb (renamed from qa/qa/page/main/menu.rb) | 4 | ||||
-rw-r--r-- | qa/qa/page/menu/side.rb | 29 | ||||
-rw-r--r-- | qa/qa/page/project/settings/common.rb | 17 | ||||
-rw-r--r-- | qa/qa/page/project/settings/deploy_keys.rb | 27 | ||||
-rw-r--r-- | qa/qa/page/project/settings/repository.rb | 17 | ||||
-rw-r--r-- | qa/qa/runtime/user.rb | 11 | ||||
-rw-r--r-- | qa/qa/specs/features/login/standard_spec.rb | 2 | ||||
-rw-r--r-- | qa/qa/specs/features/mattermost/group_create_spec.rb | 2 | ||||
-rw-r--r-- | qa/qa/specs/features/project/add_deploy_key_spec.rb | 22 |
13 files changed, 164 insertions, 10 deletions
diff --git a/qa/qa/factory/resource/deploy_key.rb b/qa/qa/factory/resource/deploy_key.rb new file mode 100644 index 00000000000..7c58e70bcc4 --- /dev/null +++ b/qa/qa/factory/resource/deploy_key.rb @@ -0,0 +1,31 @@ +module QA + module Factory + module Resource + class DeployKey < Factory::Base + attr_accessor :title, :key + + dependency Factory::Resource::Project, as: :project do |project| + project.name = 'project-to-deploy' + project.description = 'project for adding deploy key test' + end + + def fabricate! + project.visit! + + Page::Menu::Side.act do + click_repository_setting + end + + Page::Project::Settings::Repository.perform do |setting| + setting.expand_deploy_keys do |page| + page.fill_key_title(title) + page.fill_key_value(key) + + page.add_key + end + end + end + end + end + end +end diff --git a/qa/qa/factory/resource/sandbox.rb b/qa/qa/factory/resource/sandbox.rb index 558da1c973b..ad376988e82 100644 --- a/qa/qa/factory/resource/sandbox.rb +++ b/qa/qa/factory/resource/sandbox.rb @@ -11,7 +11,7 @@ module QA end def fabricate! - Page::Main::Menu.act { go_to_groups } + Page::Menu::Main.act { go_to_groups } Page::Dashboard::Groups.perform do |page| if page.has_group?(@name) diff --git a/qa/qa/factory/settings/hashed_storage.rb b/qa/qa/factory/settings/hashed_storage.rb index eb3b28f2613..13ce2435fe4 100644 --- a/qa/qa/factory/settings/hashed_storage.rb +++ b/qa/qa/factory/settings/hashed_storage.rb @@ -6,15 +6,15 @@ module QA raise ArgumentError unless traits.include?(:enabled) Page::Main::Login.act { sign_in_using_credentials } - Page::Main::Menu.act { go_to_admin_area } - Page::Admin::Menu.act { go_to_settings } + Page::Menu::Main.act { go_to_admin_area } + Page::Menu::Admin.act { go_to_settings } Page::Admin::Settings.act do enable_hashed_storage save_settings end - QA::Page::Main::Menu.act { sign_out } + QA::Page::Menu::Main.act { sign_out } end end end diff --git a/qa/qa/page/admin/menu.rb b/qa/qa/page/menu/admin.rb index dd289ffe269..07fe40fda3a 100644 --- a/qa/qa/page/admin/menu.rb +++ b/qa/qa/page/menu/admin.rb @@ -1,7 +1,7 @@ module QA module Page - module Admin - class Menu < Page::Base + module Menu + class Admin < Page::Base def go_to_license click_link 'License' end diff --git a/qa/qa/page/main/menu.rb b/qa/qa/page/menu/main.rb index bc9c4ec1215..b94c2c6c23d 100644 --- a/qa/qa/page/main/menu.rb +++ b/qa/qa/page/menu/main.rb @@ -1,7 +1,7 @@ module QA module Page - module Main - class Menu < Page::Base + module Menu + class Main < Page::Base def go_to_groups within_top_menu { click_link 'Groups' } end diff --git a/qa/qa/page/menu/side.rb b/qa/qa/page/menu/side.rb new file mode 100644 index 00000000000..6c25aba4bac --- /dev/null +++ b/qa/qa/page/menu/side.rb @@ -0,0 +1,29 @@ +module QA + module Page + module Menu + class Side < Page::Base + def click_repository_setting + hover_setting do + click_link('Repository') + end + end + + private + + def hover_setting + within_sidebar do + find('.nav-item-name', text: 'Settings').hover + + yield + end + end + + def within_sidebar + page.within('.sidebar-top-level-items') do + yield + end + end + end + end + end +end diff --git a/qa/qa/page/project/settings/common.rb b/qa/qa/page/project/settings/common.rb new file mode 100644 index 00000000000..5d1d5120929 --- /dev/null +++ b/qa/qa/page/project/settings/common.rb @@ -0,0 +1,17 @@ +module QA + module Page + module Project + module Settings + module Common + def expand(selector) + page.within('#content-body') do + find(selector).click + + yield + end + end + end + end + end + end +end diff --git a/qa/qa/page/project/settings/deploy_keys.rb b/qa/qa/page/project/settings/deploy_keys.rb new file mode 100644 index 00000000000..4028b8cccc5 --- /dev/null +++ b/qa/qa/page/project/settings/deploy_keys.rb @@ -0,0 +1,27 @@ +module QA + module Page + module Project + module Settings + class DeployKeys < Page::Base + def fill_key_title(title) + fill_in 'deploy_key_title', with: title + end + + def fill_key_value(key) + fill_in 'deploy_key_key', with: key + end + + def add_key + click_on 'Add key' + end + + def has_key_title?(title) + page.within('.deploy-keys') do + page.find('.title', text: title) + end + end + end + end + end + end +end diff --git a/qa/qa/page/project/settings/repository.rb b/qa/qa/page/project/settings/repository.rb new file mode 100644 index 00000000000..034b0d09c1c --- /dev/null +++ b/qa/qa/page/project/settings/repository.rb @@ -0,0 +1,17 @@ +module QA + module Page + module Project + module Settings + class Repository < Page::Base + include Common + + def expand_deploy_keys(&block) + expand('.qa-expand-deploy-keys') do + DeployKeys.perform(&block) + end + end + end + end + end + end +end diff --git a/qa/qa/runtime/user.rb b/qa/qa/runtime/user.rb index 60027c89ab1..7bd50023561 100644 --- a/qa/qa/runtime/user.rb +++ b/qa/qa/runtime/user.rb @@ -10,6 +10,17 @@ module QA def password ENV['GITLAB_PASSWORD'] || '5iveL!fe' end + + def ssh_key + <<~KEY.tr("\n", '') + ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDFf6RYK3qu/RKF/3ndJmL5xgMLp3O9 + 6x8lTay+QGZ0+9FnnAXMdUqBq/ZU6d/gyMB4IaW3nHzM1w049++yAB6UPCzMB8Uo27K5 + /jyZCtj7Vm9PFNjF/8am1kp46c/SeYicQgQaSBdzIW3UDEa1Ef68qroOlvpi9PYZ/tA7 + M0YP0K5PXX+E36zaIRnJVMPT3f2k+GnrxtjafZrwFdpOP/Fol5BQLBgcsyiU+LM1SuaC + rzd8c9vyaTA1CxrkxaZh+buAi0PmdDtaDrHd42gqZkXCKavyvgM5o2CkQ5LJHCgzpXy0 + 5qNFzmThBSkb+XtoxbyagBiGbVZtSVow6Xa7qewz= dummy@gitlab.com + KEY + end end end end diff --git a/qa/qa/specs/features/login/standard_spec.rb b/qa/qa/specs/features/login/standard_spec.rb index 9eaa2b772e6..141ffa3cfb7 100644 --- a/qa/qa/specs/features/login/standard_spec.rb +++ b/qa/qa/specs/features/login/standard_spec.rb @@ -7,7 +7,7 @@ module QA # TODO, since `Signed in successfully` message was removed # this is the only way to tell if user is signed in correctly. # - Page::Main::Menu.perform do |menu| + Page::Menu::Main.perform do |menu| expect(menu).to have_personal_area end end diff --git a/qa/qa/specs/features/mattermost/group_create_spec.rb b/qa/qa/specs/features/mattermost/group_create_spec.rb index b3dbe44bf6e..2e27a285223 100644 --- a/qa/qa/specs/features/mattermost/group_create_spec.rb +++ b/qa/qa/specs/features/mattermost/group_create_spec.rb @@ -3,7 +3,7 @@ module QA scenario 'creating a group with a mattermost team' do Runtime::Browser.visit(:gitlab, Page::Main::Login) Page::Main::Login.act { sign_in_using_credentials } - Page::Main::Menu.act { go_to_groups } + Page::Menu::Main.act { go_to_groups } Page::Dashboard::Groups.perform do |page| page.go_to_new_group diff --git a/qa/qa/specs/features/project/add_deploy_key_spec.rb b/qa/qa/specs/features/project/add_deploy_key_spec.rb new file mode 100644 index 00000000000..43a85213501 --- /dev/null +++ b/qa/qa/specs/features/project/add_deploy_key_spec.rb @@ -0,0 +1,22 @@ +module QA + feature 'deploy keys support', :core do + given(:deploy_key_title) { 'deploy key title' } + given(:deploy_key_value) { Runtime::User.ssh_key } + + scenario 'user adds a deploy key' do + Runtime::Browser.visit(:gitlab, Page::Main::Login) + Page::Main::Login.act { sign_in_using_credentials } + + Factory::Resource::DeployKey.fabricate! do |deploy_key| + deploy_key.title = deploy_key_title + deploy_key.key = deploy_key_value + end + + Page::Project::Settings::Repository.perform do |setting| + setting.expand_deploy_keys do |page| + expect(page).to have_key_title(deploy_key_title) + end + end + end + end +end |