diff --git a/spec/requests/git_http_spec.rb b/spec/requests/git_http_spec.rb
index 1e3f3f3e6175ed328e518acf559a9b191076c64e..3a6a9b7a70debbd48ca7d40ab25ada409a5a456e 100644
--- a/spec/requests/git_http_spec.rb
+++ b/spec/requests/git_http_spec.rb
@@ -52,12 +52,25 @@ describe 'Git HTTP requests', lib: true do
       let(:env) { {} }
 
       context "when the project is public" do
-        it "responds with status 200" do
+        before do
           project.update_attribute(:visibility_level, Project::PUBLIC)
+        end
+        
+        it "responds with status 200" do
           download(path, env) do |response|
             expect(response.status).to eq(200)
           end
         end
+        
+        context 'but git-upload-pack is disabled' do
+          it "responds with status 404" do
+            allow(Gitlab.config.gitlab_shell).to receive(:upload_pack).and_return(false)
+
+            download(path, env) do |response|
+              expect(response.status).to eq(404)
+            end
+          end
+        end
       end
 
       context "when the project is private" do