Commit 1783a3d5 authored by Lin Jen-Shin's avatar Lin Jen-Shin

Run through all kinds of ssh keys for deploy key

parent 211b2f39
...@@ -2,9 +2,12 @@ module QA ...@@ -2,9 +2,12 @@ module QA
module Runtime module Runtime
module Key module Key
class Base class Base
attr_reader :private_key, :public_key, :fingerprint attr_reader :name, :bits, :private_key, :public_key, :fingerprint
def initialize(name, bits) def initialize(name, bits)
@name = name
@bits = bits
Dir.mktmpdir do |dir| Dir.mktmpdir do |dir|
path = "#{dir}/id_#{name}" path = "#{dir}/id_#{name}"
......
...@@ -3,7 +3,6 @@ require 'digest/sha1' ...@@ -3,7 +3,6 @@ require 'digest/sha1'
module QA module QA
feature 'cloning code using a deploy key', :core, :docker do feature 'cloning code using a deploy key', :core, :docker do
let(:runner_name) { "qa-runner-#{Time.now.to_i}" } let(:runner_name) { "qa-runner-#{Time.now.to_i}" }
let(:key) { Runtime::Key::RSA.new }
given(:project) do given(:project) do
Factory::Resource::Project.fabricate! do |resource| Factory::Resource::Project.fabricate! do |resource|
...@@ -15,66 +14,79 @@ module QA ...@@ -15,66 +14,79 @@ module QA
Service::Runner.new(runner_name).remove! Service::Runner.new(runner_name).remove!
end end
scenario 'user sets up a deploy key to clone code using pipelines' do keys = [
Runtime::Browser.visit(:gitlab, Page::Main::Login) Runtime::Key::RSA.new(2048),
Page::Main::Login.act { sign_in_using_credentials } Runtime::Key::RSA.new(4096),
Runtime::Key::RSA.new(8192),
Runtime::Key::DSA.new,
Runtime::Key::ECDSA.new(256),
Runtime::Key::ECDSA.new(384),
Runtime::Key::ECDSA.new(521),
Runtime::Key::ED25519.new
]
Factory::Resource::Runner.fabricate! do |resource| keys.each do |key|
resource.project = project scenario "user sets up a deploy key with #{key.name}(#{key.bits}) to clone code using pipelines" do
resource.name = runner_name Runtime::Browser.visit(:gitlab, Page::Main::Login)
resource.tags = %w[qa docker] Page::Main::Login.act { sign_in_using_credentials }
resource.image = 'gitlab/gitlab-runner:ubuntu'
end
Factory::Resource::DeployKey.fabricate! do |resource| Factory::Resource::Runner.fabricate! do |resource|
resource.project = project resource.project = project
resource.title = 'deploy key title' resource.name = runner_name
resource.key = key.public_key resource.tags = %w[qa docker]
end resource.image = 'gitlab/gitlab-runner:ubuntu'
end
Factory::Resource::SecretVariable.fabricate! do |resource| Factory::Resource::DeployKey.fabricate! do |resource|
resource.project = project resource.project = project
resource.key = 'DEPLOY_KEY' resource.title = 'deploy key title'
resource.value = key.private_key resource.key = key.public_key
end end
project.visit! Factory::Resource::SecretVariable.fabricate! do |resource|
resource.project = project
resource.key = 'DEPLOY_KEY'
resource.value = key.private_key
end
repository_uri = Page::Project::Show.act do project.visit!
choose_repository_clone_ssh
repository_location_uri
end
gitlab_ci = <<~YAML repository_uri = Page::Project::Show.act do
cat-config: choose_repository_clone_ssh
script: repository_location_uri
- mkdir -p ~/.ssh end
- ssh-keyscan -p #{repository_uri.port} #{repository_uri.host} >> ~/.ssh/known_hosts
- eval $(ssh-agent -s)
- echo "$DEPLOY_KEY" | ssh-add -
- git clone #{repository_uri.git_uri}
- sha1sum #{project.name}/.gitlab-ci.yml
tags:
- qa
- docker
YAML
Factory::Repository::Push.fabricate! do |resource| gitlab_ci = <<~YAML
resource.project = project cat-config:
resource.file_name = '.gitlab-ci.yml' script:
resource.commit_message = 'Add .gitlab-ci.yml' - mkdir -p ~/.ssh
resource.file_content = gitlab_ci - ssh-keyscan -p #{repository_uri.port} #{repository_uri.host} >> ~/.ssh/known_hosts
end - eval $(ssh-agent -s)
- echo "$DEPLOY_KEY" | ssh-add -
- git clone #{repository_uri.git_uri}
- sha1sum #{project.name}/.gitlab-ci.yml
tags:
- qa
- docker
YAML
Factory::Repository::Push.fabricate! do |resource|
resource.project = project
resource.file_name = '.gitlab-ci.yml'
resource.commit_message = 'Add .gitlab-ci.yml'
resource.file_content = gitlab_ci
end
sha1sum = Digest::SHA1.hexdigest(gitlab_ci) sha1sum = Digest::SHA1.hexdigest(gitlab_ci)
Page::Project::Show.act { wait_for_push } Page::Project::Show.act { wait_for_push }
Page::Menu::Side.act { click_ci_cd_pipelines } Page::Menu::Side.act { click_ci_cd_pipelines }
Page::Project::Pipeline::Index.act { go_to_latest_pipeline } Page::Project::Pipeline::Index.act { go_to_latest_pipeline }
Page::Project::Pipeline::Show.act { go_to_first_job } Page::Project::Pipeline::Show.act { go_to_first_job }
Page::Project::Job::Show.perform do |job| Page::Project::Job::Show.perform do |job|
expect(job.output).to include(sha1sum) expect(job.output).to include(sha1sum)
end
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment