summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorElvin Efendi <elvin.efendiev@shopify.com>2015-12-09 22:53:16 -0500
committerElvin Efendi <elvin.efendiev@shopify.com>2015-12-13 18:54:10 -0500
commitfa3b93c5046f23ebbb2e82ac4944357683f8c5d8 (patch)
tree20d82b890b6d78a92ab2c321c54db2ca79a0da7a /spec
parenta561109ce1495747df1e019575105e0caf2dcdb5 (diff)
let user configure which auth method to use
Diffstat (limited to 'spec')
-rw-r--r--spec/githubrepo_spec.rb50
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