diff options
author | Ash McKenzie <amckenzie@gitlab.com> | 2018-08-17 13:52:28 +1000 |
---|---|---|
committer | Ash McKenzie <amckenzie@gitlab.com> | 2018-08-17 14:18:54 +1000 |
commit | bb7c8a7f45126e0e4c383ae96eb3109327c016ae (patch) | |
tree | 85f0192d3cc52e9655c2f5a59ea32a87ecb7a00e | |
parent | b440f4f3ce2e8e0186963bac57711926c7604d02 (diff) | |
download | gitlab-shell-bb7c8a7f45126e0e4c383ae96eb3109327c016ae.tar.gz |
GitlabAccessStatus needs HTTP response status code
-rw-r--r-- | lib/gitlab_access_status.rb | 6 | ||||
-rw-r--r-- | lib/gitlab_net.rb | 4 | ||||
-rw-r--r-- | spec/gitlab_access_spec.rb | 2 | ||||
-rw-r--r-- | spec/gitlab_shell_spec.rb | 3 |
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, |