Skip to content

Commit

Permalink
Merge pull request #889 from libgit2/cmn/remote-test-ssh
Browse files Browse the repository at this point in the history
Use the local ssh for `check_connection` and stop hiding online `skip`s
  • Loading branch information
carlosmn committed Sep 1, 2021
2 parents 063b32d + 61bb3f5 commit 72b49c7
Show file tree
Hide file tree
Showing 6 changed files with 212 additions and 196 deletions.
93 changes: 49 additions & 44 deletions test/online/clone_test.rb
@@ -1,66 +1,71 @@
require 'test_helper'

class OnlineCloneTest < Rugged::OnlineTestCase
if git_creds?
def test_clone_over_git
Dir.mktmpdir do |dir|
repo = Rugged::Repository.clone_at(ENV['GITTEST_REMOTE_GIT_URL'], dir)
def test_clone_over_git
skip unless git_creds?
Dir.mktmpdir do |dir|
repo = Rugged::Repository.clone_at(ENV['GITTEST_REMOTE_GIT_URL'], dir)

assert_instance_of Rugged::Repository, repo
end
assert_instance_of Rugged::Repository, repo
end
end

if Rugged.features.include?(:ssh) && ssh_creds?
def test_clone_over_ssh_with_credentials
Dir.mktmpdir do |dir|
repo = Rugged::Repository.clone_at(ENV['GITTEST_REMOTE_SSH_URL'], dir, {
credentials: ssh_key_credential
})
def test_clone_over_ssh_with_credentials
skip unless Rugged.features.include?(:ssh) && ssh_creds?

assert_instance_of Rugged::Repository, repo
end
Dir.mktmpdir do |dir|
repo = Rugged::Repository.clone_at(ENV['GITTEST_REMOTE_SSH_URL'], dir, {
credentials: ssh_key_credential
})

assert_instance_of Rugged::Repository, repo
end
end

def test_clone_over_ssh_with_credentials_from_agent
Dir.mktmpdir do |dir|
repo = Rugged::Repository.clone_at(ENV['GITTEST_REMOTE_SSH_URL'], dir, {
credentials: ssh_key_credential_from_agent
})
def test_clone_over_ssh_with_credentials_from_agent
skip unless Rugged.features.include?(:ssh) && ssh_creds?

assert_instance_of Rugged::Repository, repo
end
Dir.mktmpdir do |dir|
repo = Rugged::Repository.clone_at(ENV['GITTEST_REMOTE_SSH_URL'], dir, {
credentials: ssh_key_credential_from_agent
})

assert_instance_of Rugged::Repository, repo
end
end

def test_clone_over_ssh_with_credentials_callback
Dir.mktmpdir do |dir|
repo = Rugged::Repository.clone_at(ENV['GITTEST_REMOTE_SSH_URL'], dir, {
credentials: lambda { |url, username, allowed_types|
return ssh_key_credential
}
})
def test_clone_over_ssh_with_credentials_callback
skip unless Rugged.features.include?(:ssh) && ssh_creds?

assert_instance_of Rugged::Repository, repo
end
Dir.mktmpdir do |dir|
repo = Rugged::Repository.clone_at(ENV['GITTEST_REMOTE_SSH_URL'], dir, {
credentials: lambda { |url, username, allowed_types|
return ssh_key_credential
}
})

assert_instance_of Rugged::Repository, repo
end
end

def test_clone_callback_args_with_username
Dir.mktmpdir do |dir|
url, username, allowed_types = nil, nil, nil
def test_clone_callback_args_with_username
skip unless Rugged.features.include?(:ssh) && ssh_creds?

assert_raises Rugged::SshError do
Rugged::Repository.clone_at("git@github.com:libgit2/TestGitRepository", dir, {
credentials: lambda { |*args|
url, username, allowed_types = *args
return nil
}
})
end
Dir.mktmpdir do |dir|
url, username, allowed_types = nil, nil, nil

assert_equal "git@github.com:libgit2/TestGitRepository", url
assert_equal "git", username
assert_equal [:ssh_key].sort, allowed_types.sort
assert_raises Rugged::SshError do
Rugged::Repository.clone_at("git@github.com:libgit2/TestGitRepository", dir, {
credentials: lambda { |*args|
url, username, allowed_types = *args
return nil
}
})
end

assert_equal "git@github.com:libgit2/TestGitRepository", url
assert_equal "git", username
assert_equal [:ssh_key].sort, allowed_types.sort
end
end
end
149 changes: 79 additions & 70 deletions test/online/fetch_test.rb
Expand Up @@ -5,100 +5,109 @@ def setup
@repo = FixtureRepo.empty
end

if git_creds?
def test_fetch_over_git
@repo.remotes.create("origin", ENV['GITTEST_REMOTE_GIT_URL'])
def test_fetch_over_git
skip unless git_creds?
@repo.remotes.create("origin", ENV['GITTEST_REMOTE_GIT_URL'])

@repo.fetch("origin")
end
@repo.fetch("origin")
end

if Rugged.features.include?(:https)
def test_fetch_over_https
@repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")
def test_fetch_over_https
skip unless Rugged.features.include?(:https)

@repo.fetch("origin")
@repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")

assert_equal [
"refs/remotes/origin/first-merge",
"refs/remotes/origin/master",
"refs/remotes/origin/no-parent",
"refs/tags/annotated_tag",
"refs/tags/blob",
"refs/tags/commit_tree"
], @repo.refs.map(&:name).sort
end
@repo.fetch("origin")

assert_equal [
"refs/remotes/origin/first-merge",
"refs/remotes/origin/master",
"refs/remotes/origin/no-parent",
"refs/tags/annotated_tag",
"refs/tags/blob",
"refs/tags/commit_tree"
], @repo.refs.map(&:name).sort
end

def test_fetch_over_https_with_certificate_callback
@repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")
def test_fetch_over_https_with_certificate_callback
skip unless Rugged.features.include?(:https)

@repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")

args = {}
@repo.fetch(
"origin",
certificate_check: lambda { |valid, host|
args[:valid] = valid
args[:host] = host
true
}
)

assert_equal({ valid: true, host: "github.com" }, args)
end

args = {}
def test_fetch_over_https_with_certificate_callback_fail
skip unless Rugged.features.include?(:https)

@repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")

exception = assert_raises Rugged::HTTPError do
@repo.fetch(
"origin",
certificate_check: lambda { |valid, host|
args[:valid] = valid
args[:host] = host
true
}
certificate_check: lambda { |valid, host| false }
)

assert_equal({ valid: true, host: "github.com" }, args)
end

def test_fetch_over_https_with_certificate_callback_fail
@repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")
assert_equal "user rejected certificate for github.com", exception.message
end

def test_fetch_over_https_with_certificate_callback_exception
skip unless Rugged.features.include?(:https)

exception = assert_raises Rugged::HTTPError do
@repo.fetch(
"origin",
certificate_check: lambda { |valid, host| false }
)
end
@repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")

assert_equal "user rejected certificate for github.com", exception.message
exception = assert_raises RuntimeError do
@repo.fetch(
"origin",
certificate_check: lambda { |valid, host|
raise "Exception from callback"
}
)
end

def test_fetch_over_https_with_certificate_callback_exception
@repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")
assert_equal "Exception from callback", exception.message
end

exception = assert_raises RuntimeError do
@repo.fetch(
"origin",
certificate_check: lambda { |valid, host|
raise "Exception from callback"
}
)
end
def test_fetch_over_ssh_with_credentials
skip unless Rugged.features.include?(:ssh) && ssh_creds?

assert_equal "Exception from callback", exception.message
end
@repo.remotes.create("origin", ENV['GITTEST_REMOTE_SSH_URL'])

@repo.fetch("origin", {
credentials: ssh_key_credential
})
end

if Rugged.features.include?(:ssh) && ssh_creds?
def test_fetch_over_ssh_with_credentials
@repo.remotes.create("origin", ENV['GITTEST_REMOTE_SSH_URL'])
def test_fetch_over_ssh_with_credentials_from_agent
skip unless Rugged.features.include?(:ssh) && ssh_creds?

@repo.fetch("origin", {
credentials: ssh_key_credential
})
end
@repo.remotes.create("origin", ENV['GITTEST_REMOTE_SSH_URL'])

def test_fetch_over_ssh_with_credentials_from_agent
@repo.remotes.create("origin", ENV['GITTEST_REMOTE_SSH_URL'])
@repo.fetch("origin", {
credentials: ssh_key_credential_from_agent
})
end

@repo.fetch("origin", {
credentials: ssh_key_credential_from_agent
})
end
def test_fetch_over_ssh_with_credentials_callback
skip unless Rugged.features.include?(:ssh) && ssh_creds?

def test_fetch_over_ssh_with_credentials_callback
@repo.remotes.create("origin", ENV['GITTEST_REMOTE_SSH_URL'])
@repo.remotes.create("origin", ENV['GITTEST_REMOTE_SSH_URL'])

@repo.fetch("origin",
credentials: lambda { |url, username, allowed_types|
return ssh_key_credential
}
)
end
@repo.fetch("origin",
credentials: lambda { |url, username, allowed_types|
return ssh_key_credential
}
)
end
end
64 changes: 32 additions & 32 deletions test/online/ls_test.rb
Expand Up @@ -5,43 +5,43 @@ def setup
@repo = FixtureRepo.from_libgit2("push_src")
end

if Rugged.features.include?(:https)
def test_ls_over_https
remote = @repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")

assert_equal [
{ :local? => false, :oid => "49322bb17d3acc9146f98c97d078513228bbf3c0", :loid => nil, :name => "HEAD" },
{ :local? => false, :oid => "0966a434eb1a025db6b71485ab63a3bfbea520b6", :loid => nil, :name => "refs/heads/first-merge" },
{ :local? => false, :oid => "49322bb17d3acc9146f98c97d078513228bbf3c0", :loid => nil, :name => "refs/heads/master" },
{ :local? => false, :oid => "42e4e7c5e507e113ebbb7801b16b52cf867b7ce1", :loid => nil, :name => "refs/heads/no-parent" },
{ :local? => false, :oid => "d96c4e80345534eccee5ac7b07fc7603b56124cb", :loid => nil, :name => "refs/tags/annotated_tag" },
{ :local? => false, :oid => "c070ad8c08840c8116da865b2d65593a6bb9cd2a", :loid => nil, :name => "refs/tags/annotated_tag^{}" },
{ :local? => false, :oid => "55a1a760df4b86a02094a904dfa511deb5655905", :loid => nil, :name => "refs/tags/blob" },
{ :local? => false, :oid => "8f50ba15d49353813cc6e20298002c0d17b0a9ee", :loid => nil, :name => "refs/tags/commit_tree" },
{ :local? => false, :oid => "6e0c7bdb9b4ed93212491ee778ca1c65047cab4e", :loid => nil, :name => "refs/tags/nearly-dangling"}
], remote.ls.to_a
end
def test_ls_over_https
skip unless Rugged.features.include?(:https)

remote = @repo.remotes.create("origin", "https://github.com/libgit2/TestGitRepository.git")

assert_equal [
{ :local? => false, :oid => "49322bb17d3acc9146f98c97d078513228bbf3c0", :loid => nil, :name => "HEAD" },
{ :local? => false, :oid => "0966a434eb1a025db6b71485ab63a3bfbea520b6", :loid => nil, :name => "refs/heads/first-merge" },
{ :local? => false, :oid => "49322bb17d3acc9146f98c97d078513228bbf3c0", :loid => nil, :name => "refs/heads/master" },
{ :local? => false, :oid => "42e4e7c5e507e113ebbb7801b16b52cf867b7ce1", :loid => nil, :name => "refs/heads/no-parent" },
{ :local? => false, :oid => "d96c4e80345534eccee5ac7b07fc7603b56124cb", :loid => nil, :name => "refs/tags/annotated_tag" },
{ :local? => false, :oid => "c070ad8c08840c8116da865b2d65593a6bb9cd2a", :loid => nil, :name => "refs/tags/annotated_tag^{}" },
{ :local? => false, :oid => "55a1a760df4b86a02094a904dfa511deb5655905", :loid => nil, :name => "refs/tags/blob" },
{ :local? => false, :oid => "8f50ba15d49353813cc6e20298002c0d17b0a9ee", :loid => nil, :name => "refs/tags/commit_tree" },
{ :local? => false, :oid => "6e0c7bdb9b4ed93212491ee778ca1c65047cab4e", :loid => nil, :name => "refs/tags/nearly-dangling"}
], remote.ls.to_a
end

if git_creds?
def test_ls_over_git
remote = @repo.remotes.create("origin", ENV['GITTEST_REMOTE_GIT_URL'])
remote.push(["refs/heads/b1:refs/heads/b1"])
def test_ls_over_git
skip unless git_creds?

assert_equal [
{ :local? => false, :oid => "a78705c3b2725f931d3ee05348d83cc26700f247", :loid => nil, :name => "refs/heads/b1" }
], remote.ls.to_a
end
remote = @repo.remotes.create("origin", ENV['GITTEST_REMOTE_GIT_URL'])
remote.push(["refs/heads/b1:refs/heads/b1"])

assert_equal [
{ :local? => false, :oid => "a78705c3b2725f931d3ee05348d83cc26700f247", :loid => nil, :name => "refs/heads/b1" }
], remote.ls.to_a
end

if Rugged.features.include?(:ssh) && ssh_creds?
def test_ls_over_ssh_with_credentials
remote = @repo.remotes.create("origin", ENV['GITTEST_REMOTE_SSH_URL'])
remote.push(["refs/heads/b1:refs/heads/b1"], credentials: ssh_key_credential)
def test_ls_over_ssh_with_credentials
skip unless Rugged.features.include?(:ssh) && ssh_creds?

remote = @repo.remotes.create("origin", ENV['GITTEST_REMOTE_SSH_URL'])
remote.push(["refs/heads/b1:refs/heads/b1"], credentials: ssh_key_credential)

assert_equal [
{ :local? => false, :oid => "a78705c3b2725f931d3ee05348d83cc26700f247", :loid => nil, :name => "refs/heads/b1" }
], remote.ls(credentials: ssh_key_credential).to_a
end
assert_equal [
{ :local? => false, :oid => "a78705c3b2725f931d3ee05348d83cc26700f247", :loid => nil, :name => "refs/heads/b1" }
], remote.ls(credentials: ssh_key_credential).to_a
end
end

0 comments on commit 72b49c7

Please sign in to comment.