Commit a7ce4b52 authored by Douwe Maan's avatar Douwe Maan

Add tests.

parent 9a863145
...@@ -16,7 +16,7 @@ class GitlabPostReceive ...@@ -16,7 +16,7 @@ class GitlabPostReceive
# get value from it # get value from it
ENV['GL_ID'] = nil ENV['GL_ID'] = nil
success = update_redis result = update_redis
begin begin
broadcast_message = GitlabNet.new.broadcast_message broadcast_message = GitlabNet.new.broadcast_message
...@@ -29,7 +29,7 @@ class GitlabPostReceive ...@@ -29,7 +29,7 @@ class GitlabPostReceive
nil nil
end end
success result
end end
protected protected
......
...@@ -4,18 +4,87 @@ require 'gitlab_post_receive' ...@@ -4,18 +4,87 @@ require 'gitlab_post_receive'
describe GitlabPostReceive do describe GitlabPostReceive do
let(:repository_path) { "/home/git/repositories" } let(:repository_path) { "/home/git/repositories" }
let(:repo_name) { 'dzaporozhets/gitlab-ci' } let(:repo_name) { 'dzaporozhets/gitlab-ci' }
let(:actor) { 'key-123' }
let(:changes) { 'wow' }
let(:repo_path) { File.join(repository_path, repo_name) + ".git" } let(:repo_path) { File.join(repository_path, repo_name) + ".git" }
let(:gitlab_post_receive) { GitlabPostReceive.new(repo_path, 'key-123', 'wow') } let(:gitlab_post_receive) { GitlabPostReceive.new(repo_path, actor, changes) }
let(:message) { "test " * 10 + "message " * 10 }
before do before do
GitlabConfig.any_instance.stub(repos_path: repository_path) GitlabConfig.any_instance.stub(repos_path: repository_path)
Kernel.stub(system: true) GitlabNet.any_instance.stub(broadcast_message: { "message" => message })
GitlabNet.any_instance.stub(broadcast_message: { "message" => "test " * 10 + "message " * 10 })
end end
describe :initialize do describe "#exec" do
it { gitlab_post_receive.repo_path.should == repo_path }
it { gitlab_post_receive.changes.should == 'wow' } before do
it { gitlab_post_receive.exec } GitlabConfig.any_instance.stub(redis_command: %w(env -i redis-cli))
allow(gitlab_post_receive).to receive(:system).and_return(true)
end
it "resets the GL_ID environment variable" do
ENV["GL_ID"] = actor
gitlab_post_receive.exec
expect(ENV["GL_ID"]).to be_nil
end
it "prints the broadcast message" do
expect(gitlab_post_receive).to receive(:puts).ordered
expect(gitlab_post_receive).to receive(:puts).with(
"========================================================================"
).ordered
expect(gitlab_post_receive).to receive(:puts).ordered
expect(gitlab_post_receive).to receive(:puts).with(
" test test test test test test test test test test message message"
).ordered
expect(gitlab_post_receive).to receive(:puts).with(
" message message message message message message message message"
).ordered
expect(gitlab_post_receive).to receive(:puts).ordered
expect(gitlab_post_receive).to receive(:puts).with(
"========================================================================"
).ordered
gitlab_post_receive.exec
end
it "pushes a Sidekiq job onto the queue" do
expect(gitlab_post_receive).to receive(:system).with(
*[
*%w(env -i redis-cli rpush resque:gitlab:queue:post_receive),
%Q/{"class":"PostReceive","args":["#{repo_path}","#{actor}","#{changes}"]}/,
{ err: "/dev/null", out: "/dev/null" }
]
).and_return(true)
gitlab_post_receive.exec
end
context "when the redis command succeeds" do
before do
allow(gitlab_post_receive).to receive(:system).and_return(true)
end
it "returns true" do
expect(gitlab_post_receive.exec).to eq(true)
end
end
context "when the redis command fails" do
before do
allow(gitlab_post_receive).to receive(:system).and_return(false)
allow($?).to receive(:exitstatus).and_return(nil)
end
it "returns false" do
expect(gitlab_post_receive.exec).to eq(false)
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