summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAsh McKenzie <amckenzie@gitlab.com>2018-08-17 13:52:28 +1000
committerAsh McKenzie <amckenzie@gitlab.com>2018-08-17 14:18:54 +1000
commitbb7c8a7f45126e0e4c383ae96eb3109327c016ae (patch)
tree85f0192d3cc52e9655c2f5a59ea32a87ecb7a00e
parentb440f4f3ce2e8e0186963bac57711926c7604d02 (diff)
downloadgitlab-shell-bb7c8a7f45126e0e4c383ae96eb3109327c016ae.tar.gz
GitlabAccessStatus needs HTTP response status code
-rw-r--r--lib/gitlab_access_status.rb6
-rw-r--r--lib/gitlab_net.rb4
-rw-r--r--spec/gitlab_access_spec.rb2
-rw-r--r--spec/gitlab_shell_spec.rb3
4 files changed, 11 insertions, 4 deletions
diff --git a/lib/gitlab_access_status.rb b/lib/gitlab_access_status.rb
index 7099a2d..9c66ca5 100644
--- a/lib/gitlab_access_status.rb
+++ b/lib/gitlab_access_status.rb
@@ -3,10 +3,11 @@ require 'json'
class GitAccessStatus
attr_reader :message, :gl_repository, :gl_id, :gl_username, :repository_path, :gitaly, :git_protocol, :git_config_options
- def initialize(status, message, gl_repository: nil, gl_id: nil,
+ def initialize(status, status_code, message, gl_repository: nil, gl_id: nil,
gl_username: nil, repository_path: nil, gitaly: nil,
git_protocol: nil, git_config_options: nil)
@status = status
+ @status_code = status_code
@message = message
@gl_repository = gl_repository
@gl_id = gl_id
@@ -17,9 +18,10 @@ class GitAccessStatus
@git_protocol = git_protocol
end
- def self.create_from_json(json)
+ def self.create_from_json(json, status_code)
values = JSON.parse(json)
new(values["status"],
+ status_code,
values["message"],
gl_repository: values["gl_repository"],
gl_id: values["gl_id"],
diff --git a/lib/gitlab_net.rb b/lib/gitlab_net.rb
index 0ebc35e..eb4284d 100644
--- a/lib/gitlab_net.rb
+++ b/lib/gitlab_net.rb
@@ -34,9 +34,9 @@ class GitlabNet # rubocop:disable Metrics/ClassLength
resp = post(url, params)
if resp.code == '200'
- GitAccessStatus.create_from_json(resp.body)
+ GitAccessStatus.create_from_json(resp.body, resp.code)
else
- GitAccessStatus.new(false, 'API is not accessible')
+ GitAccessStatus.new(false, resp.code, 'API is not accessible')
end
end
diff --git a/spec/gitlab_access_spec.rb b/spec/gitlab_access_spec.rb
index ffaac8a..bd6dab3 100644
--- a/spec/gitlab_access_spec.rb
+++ b/spec/gitlab_access_spec.rb
@@ -8,6 +8,7 @@ describe GitlabAccess do
let(:api) do
double(GitlabNet).tap do |api|
allow(api).to receive(:check_access).and_return(GitAccessStatus.new(true,
+ HTTPCodes::HTTP_SUCCESS,
'ok',
gl_repository: 'project-1',
gl_id: 'user-123',
@@ -46,6 +47,7 @@ describe GitlabAccess do
before do
allow(api).to receive(:check_access).and_return(GitAccessStatus.new(
false,
+ HTTPCodes::HTTP_UNAUTHORIZED,
'denied',
gl_repository: nil,
gl_id: nil,
diff --git a/spec/gitlab_shell_spec.rb b/spec/gitlab_shell_spec.rb
index 8b08f35..570e9f8 100644
--- a/spec/gitlab_shell_spec.rb
+++ b/spec/gitlab_shell_spec.rb
@@ -24,6 +24,7 @@ describe GitlabShell do
let(:gitaly_check_access) { GitAccessStatus.new(
true,
+ HTTPCodes::HTTP_SUCCESS,
'ok',
gl_repository: gl_repository,
gl_id: gl_id,
@@ -40,6 +41,7 @@ describe GitlabShell do
allow(api).to receive(:discover).and_return({ 'name' => 'John Doe', 'username' => 'testuser' })
allow(api).to receive(:check_access).and_return(GitAccessStatus.new(
true,
+ HTTPCodes::HTTP_SUCCESS,
'ok',
gl_repository: gl_repository,
gl_id: gl_id,
@@ -436,6 +438,7 @@ describe GitlabShell do
it "should disallow access and log the attempt if check_access returns false status" do
allow(api).to receive(:check_access).and_return(GitAccessStatus.new(
false,
+ HTTPCodes::HTTP_UNAUTHORIZED,
'denied',
gl_repository: nil,
gl_id: nil,