From fa3b93c5046f23ebbb2e82ac4944357683f8c5d8 Mon Sep 17 00:00:00 2001 From: Elvin Efendi Date: Wed, 9 Dec 2015 22:53:16 -0500 Subject: let user configure which auth method to use --- spec/githubrepo_spec.rb | 50 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 15 deletions(-) (limited to 'spec/githubrepo_spec.rb') diff --git a/spec/githubrepo_spec.rb b/spec/githubrepo_spec.rb index 07296f3..a3b4953 100644 --- a/spec/githubrepo_spec.rb +++ b/spec/githubrepo_spec.rb @@ -4,30 +4,50 @@ require 'oxidized/hook/githubrepo' describe Oxidized::Node do before(:each) do - asetus = Asetus.new - asetus.cfg.output.git.repo = 'foo.git' - asetus.cfg.hooks.github_repo_hook.remote_repo = 'https://github.com/blah/blah.git' - asetus.cfg.hooks.github_repo_hook.username = 'username' - asetus.cfg.hooks.github_repo_hook.password = 'password' - GithubRepo.any_instance.stubs(:cfg).returns(asetus.cfg.hooks.github_repo_hook) - Oxidized.stubs(:asetus).returns(asetus) - repo = mock() + Oxidized.asetus = Asetus.new + Oxidized.config.output.git.repo = 'foo.git' + + @credentials = mock() + remote = mock() - remote.expects(:url).returns('github.com/foo.git') - remote.expects(:push).returns(true) - repo.expects(:remotes).returns({'origin' => remote}) - repo.expects(:path).returns('foo.git') + remote.expects(:url).returns('https://github.com/username/foo.git') + remote.expects(:push).with(['refs/heads/master'], credentials: @credentials).returns(true) + repo_head = mock() - repo_head.expects(:name).twice.returns('origin/master') + repo_head.expects(:name).twice.returns('refs/heads/master') + + repo = mock() + repo.expects(:path).returns('foo.git') + repo.expects(:remotes).returns({'origin' => remote}) repo.expects(:head).twice.returns(repo_head) - repo.expects(:fetch).returns(true) + repo.expects(:fetch).with('origin', ['refs/heads/master'], credentials: @credentials).returns(true) repo.expects(:branches).returns({}) + Rugged::Repository.expects(:new).with('foo.git').returns(repo) end describe "#run_hook" do - it "will push to the remote repository" do + it "will push to the remote repository using https" do + Oxidized.config.hooks.github_repo_hook.remote_repo = 'https://github.com/username/foo.git' + Oxidized.config.hooks.github_repo_hook.username = 'username' + Oxidized.config.hooks.github_repo_hook.password = 'password' + + Rugged::Credentials::UserPassword.expects(:new).with(username: 'username', password: 'password').returns(@credentials) + + gr = GithubRepo.new + gr.cfg = Oxidized.config.hooks.github_repo_hook + + gr.run_hook(nil).must_equal true + end + + it "will push to the remote repository using ssh" do + Oxidized.config.hooks.github_repo_hook.remote_repo = 'git@github.com:username/foo.git' + + Rugged::Credentials::SshKeyFromAgent.expects(:new).with(username: 'git').returns(@credentials) + gr = GithubRepo.new + gr.cfg = Oxidized.config.hooks.github_repo_hook + gr.run_hook(nil).must_equal true end end -- cgit v1.2.1