As we reevaluate how to best support and maintain Staging Ref in the future, we encourage development teams using this environment to highlight their use cases in the following issue: https://gitlab.com/gitlab-com/gl-infra/software-delivery/framework/software-delivery-framework-issue-tracker/-/issues/36.

Skip to content
Snippets Groups Projects
Commit a7ce4b52 authored by Douwe Maan's avatar Douwe Maan
Browse files

Add tests.

parent 9a863145
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -16,7 +16,7 @@ class GitlabPostReceive
# get value from it
ENV['GL_ID'] = nil
success = update_redis
result = update_redis
begin
broadcast_message = GitlabNet.new.broadcast_message
Loading
Loading
@@ -29,7 +29,7 @@ class GitlabPostReceive
nil
end
success
result
end
protected
Loading
Loading
Loading
Loading
@@ -4,18 +4,87 @@ require 'gitlab_post_receive'
describe GitlabPostReceive do
let(:repository_path) { "/home/git/repositories" }
let(:repo_name) { 'dzaporozhets/gitlab-ci' }
let(:actor) { 'key-123' }
let(:changes) { 'wow' }
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
GitlabConfig.any_instance.stub(repos_path: repository_path)
Kernel.stub(system: true)
GitlabNet.any_instance.stub(broadcast_message: { "message" => "test " * 10 + "message " * 10 })
GitlabNet.any_instance.stub(broadcast_message: { "message" => message })
end
describe :initialize do
it { gitlab_post_receive.repo_path.should == repo_path }
it { gitlab_post_receive.changes.should == 'wow' }
it { gitlab_post_receive.exec }
describe "#exec" do
before do
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment