From 93f9c1465039fa3df9ccfe2c9a1e7eabfc3efd25 Mon Sep 17 00:00:00 2001 From: Samantha Ming <sming@gitlab.com> Date: Mon, 5 Jul 2021 17:24:30 -0700 Subject: [PATCH] Update to use correct push code permissions Issue: https://gitlab.com/gitlab-org/gitlab/-/issues/333776 --- .../components/blob_content_viewer.vue | 6 ++-- .../queries/blob_info.query.graphql | 4 ++- .../components/blob_content_viewer_spec.js | 28 ++++++++++++++----- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/app/assets/javascripts/repository/components/blob_content_viewer.vue b/app/assets/javascripts/repository/components/blob_content_viewer.vue index ba5024588a84e..462cf77a2783d 100644 --- a/app/assets/javascripts/repository/components/blob_content_viewer.vue +++ b/app/assets/javascripts/repository/components/blob_content_viewer.vue @@ -65,6 +65,9 @@ export default { isLoadingLegacyViewer: false, activeViewerType: SIMPLE_BLOB_VIEWER, project: { + userPermissions: { + pushCode: false, + }, repository: { blobs: { nodes: [ @@ -86,7 +89,6 @@ export default { canLock: false, isLocked: false, lockLink: '', - canModifyBlob: true, forkPath: '', simpleViewer: {}, richViewer: null, @@ -168,7 +170,7 @@ export default { :path="path" :name="blobInfo.name" :replace-path="blobInfo.replacePath" - :can-push-code="blobInfo.canModifyBlob" + :can-push-code="project.userPermissions.pushCode" /> </template> </blob-header> diff --git a/app/assets/javascripts/repository/queries/blob_info.query.graphql b/app/assets/javascripts/repository/queries/blob_info.query.graphql index bfd9447d2601e..1889f2269f593 100644 --- a/app/assets/javascripts/repository/queries/blob_info.query.graphql +++ b/app/assets/javascripts/repository/queries/blob_info.query.graphql @@ -1,5 +1,8 @@ query getBlobInfo($projectPath: ID!, $filePath: String!) { project(fullPath: $projectPath) { + userPermissions { + pushCode + } repository { blobs(paths: [$filePath]) { nodes { @@ -15,7 +18,6 @@ query getBlobInfo($projectPath: ID!, $filePath: String!) { storedExternally rawPath replacePath - canModifyBlob simpleViewer { fileType tooLarge diff --git a/spec/frontend/repository/components/blob_content_viewer_spec.js b/spec/frontend/repository/components/blob_content_viewer_spec.js index 575a53ffd2b3c..1c224a1430ebb 100644 --- a/spec/frontend/repository/components/blob_content_viewer_spec.js +++ b/spec/frontend/repository/components/blob_content_viewer_spec.js @@ -37,7 +37,6 @@ const simpleMockData = { canLock: true, isLocked: false, lockLink: 'some_file.js/lock', - canModifyBlob: true, forkPath: 'some_file.js/fork', simpleViewer: { fileType: 'text', @@ -56,16 +55,26 @@ const richMockData = { renderError: null, }, }; +const userPermissionsMockData = { + userPermissions: { + pushCode: true, + }, +}; const localVue = createLocalVue(); const mockAxios = new MockAdapter(axios); -const createComponentWithApollo = (mockData) => { +const createComponentWithApollo = (mockData, mockPermissionData = true) => { localVue.use(VueApollo); - const mockResolver = jest - .fn() - .mockResolvedValue({ data: { project: { repository: { blobs: { nodes: [mockData] } } } } }); + const mockResolver = jest.fn().mockResolvedValue({ + data: { + project: { + userPermissions: { pushCode: mockPermissionData }, + repository: { blobs: { nodes: [mockData] } }, + }, + }, + }); const fakeApollo = createMockApollo([[blobInfoQuery, mockResolver]]); @@ -276,13 +285,16 @@ describe('Blob content viewer component', () => { }); describe('BlobButtonGroup', () => { - const { name, path } = simpleMockData; + const { name, path, replacePath } = simpleMockData; + const { + userPermissions: { pushCode }, + } = userPermissionsMockData; it('renders component', async () => { window.gon.current_user_id = 1; fullFactory({ - mockData: { blobInfo: simpleMockData }, + mockData: { blobInfo: simpleMockData, project: userPermissionsMockData }, stubs: { BlobContent: true, BlobButtonGroup: true, @@ -294,6 +306,8 @@ describe('Blob content viewer component', () => { expect(findBlobButtonGroup().props()).toMatchObject({ name, path, + replacePath, + canPushCode: pushCode, }); }); -- GitLab