diff options
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/githubrepo_spec.rb | 50 | 
1 files changed, 35 insertions, 15 deletions
| 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 | 
