Read about our upcoming Code of Conduct on this issue

Commit 6089ab3d authored by Shinya Maeda's avatar Shinya Maeda
Browse files

Fix deployable nil exception on job controller

When deployable is nil, we gracefully take care of the case.
parent f4660ae812bf
......@@ -23,7 +23,7 @@ class DeploymentEntity < Grape::Entity
expose :last?
expose :deployed_by, as: :user, using: UserEntity
expose :deployable do |deployment, opts|
expose :deployable, if: -> (deployment) { deployment.deployable.present? } do |deployment, opts|
deployment.deployable.yield_self do |deployable|
if include_details?
JobEntity.represent(deployable, opts)
......
---
title: Fix users cannot access job detail page when deployable does not exist
merge_request: 32247
author:
type: fixed
......@@ -609,6 +609,14 @@
expect(find('.js-environment-link')['href']).to match("environments/#{environment.id}")
expect(find('.js-job-deployment-link')['href']).to include(second_deployment.deployable.project.path, second_deployment.deployable_id.to_s)
end
context 'when deployment does not have a deployable' do
let!(:second_deployment) { create(:deployment, :success, environment: environment, deployable: nil) }
it 'has an empty href' do
expect(find('.js-job-deployment-link')['href']).to be_empty
end
end
end
context 'job failed to deploy' do
......
......@@ -36,6 +36,15 @@
expect(subject).to include(:deployed_at)
end
context 'when deployable is nil' do
let(:entity) { described_class.new(deployment, request: request, deployment_details: false) }
let(:deployment) { create(:deployment, deployable: nil, project: project) }
it 'does not expose deployable entry' do
expect(subject).not_to include(:deployable)
end
end
context 'when the pipeline has another manual action' do
let(:other_build) { create(:ci_build, :manual, name: 'another deploy', pipeline: pipeline) }
let!(:other_deployment) { create(:deployment, deployable: other_build) }
......
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