Commit a5cee529 authored by Paul Slaughter's avatar Paul Slaughter

Merge branch 'nfriend-fix-guest-user-releases' into 'master'

Fix the Releases page for Guest Users

Closes #34862

See merge request gitlab-org/gitlab!28447
parents cf94bb52 53a679f7
...@@ -103,7 +103,7 @@ export default { ...@@ -103,7 +103,7 @@ export default {
<div v-else-if="shouldRenderSuccessState" class="js-success-state"> <div v-else-if="shouldRenderSuccessState" class="js-success-state">
<release-block <release-block
v-for="(release, index) in releases" v-for="(release, index) in releases"
:key="release.tagName" :key="index"
:release="release" :release="release"
:class="{ 'linked-card': releases.length > 1 && index !== releases.length - 1 }" :class="{ 'linked-card': releases.length > 1 && index !== releases.length - 1 }"
/> />
......
...@@ -37,7 +37,11 @@ export default { ...@@ -37,7 +37,11 @@ export default {
}; };
}, },
computed: { computed: {
id() { htmlId() {
if (!this.release.tagName) {
return null;
}
return slugify(this.release.tagName); return slugify(this.release.tagName);
}, },
assets() { assets() {
...@@ -72,7 +76,7 @@ export default { ...@@ -72,7 +76,7 @@ export default {
this.renderGFM(); this.renderGFM();
const hash = getLocationHash(); const hash = getLocationHash();
if (hash && slugify(hash) === this.id) { if (hash && slugify(hash) === this.htmlId) {
this.isHighlighted = true; this.isHighlighted = true;
setTimeout(() => { setTimeout(() => {
this.isHighlighted = false; this.isHighlighted = false;
...@@ -89,7 +93,7 @@ export default { ...@@ -89,7 +93,7 @@ export default {
}; };
</script> </script>
<template> <template>
<div :id="id" :class="{ 'bg-line-target-blue': isHighlighted }" class="card release-block"> <div :id="htmlId" :class="{ 'bg-line-target-blue': isHighlighted }" class="card release-block">
<release-block-header :release="release" /> <release-block-header :release="release" />
<div class="card-body"> <div class="card-body">
<div v-if="shouldRenderMilestoneInfo"> <div v-if="shouldRenderMilestoneInfo">
......
---
title: Fix Releases page for Guest users of private projects
merge_request: 28447
author:
type: fixed
...@@ -3,14 +3,19 @@ ...@@ -3,14 +3,19 @@
require 'spec_helper' require 'spec_helper'
describe 'User views releases', :js do describe 'User views releases', :js do
let!(:project) { create(:project, :repository) } let_it_be(:project) { create(:project, :repository, :private) }
let!(:release) { create(:release, project: project ) } let_it_be(:release) { create(:release, project: project, name: 'The first release' ) }
let!(:user) { create(:user) } let_it_be(:maintainer) { create(:user) }
let_it_be(:guest) { create(:user) }
before do before do
project.add_maintainer(user) project.add_maintainer(maintainer)
project.add_guest(guest)
end
gitlab_sign_in(user) context('when the user is a maintainer') do
before do
gitlab_sign_in(maintainer)
end end
it 'sees the release' do it 'sees the release' do
...@@ -82,4 +87,25 @@ describe 'User views releases', :js do ...@@ -82,4 +87,25 @@ describe 'User views releases', :js do
expect(page).to have_content(release.tag) expect(page).to have_content(release.tag)
end end
end end
end
context('when the user is a guest') do
before do
gitlab_sign_in(guest)
end
it 'renders release info except for Git-related data' do
visit project_releases_path(project)
within('.release-block') do
expect(page).to have_content(release.description)
# The following properties (sometimes) include Git info,
# so they are not rendered for Guest users
expect(page).not_to have_content(release.name)
expect(page).not_to have_content(release.tag)
expect(page).not_to have_content(release.commit.short_id)
end
end
end
end end
...@@ -165,6 +165,14 @@ describe('Release block', () => { ...@@ -165,6 +165,14 @@ describe('Release block', () => {
}); });
}); });
it('does not set the ID if tagName is missing', () => {
release.tagName = undefined;
return factory(release).then(() => {
expect(wrapper.attributes().id).toBeUndefined();
});
});
describe('evidence block', () => { describe('evidence block', () => {
it('renders the evidence block when the evidence is available and the feature flag is true', () => it('renders the evidence block when the evidence is available and the feature flag is true', () =>
factory(release, { releaseEvidenceCollection: true }).then(() => factory(release, { releaseEvidenceCollection: true }).then(() =>
......
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