From 40541393153af5e36f212a39febbbb446db871ca Mon Sep 17 00:00:00 2001 From: Ramya Authappan Date: Mon, 22 Jul 2019 05:20:11 +0000 Subject: Merge branch 'sl-qa-staging-65-fix-check-mentions-for-xss-spec' into 'master' Updates check_mentions_for_xss_spec to use admin token for creating the user Closes gitlab-org/quality/staging#65 See merge request gitlab-org/gitlab-ce!30943 (cherry picked from commit 53547792dd7ca9e516ec756e2c0262381641d9c7) 033c1c0c Create user as admin --- .../browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/qa/qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb b/qa/qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb index afddbff75bd..1bcd80f27af 100644 --- a/qa/qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb +++ b/qa/qa/specs/features/browser_ui/2_plan/issue/check_mentions_for_xss_spec.rb @@ -4,14 +4,24 @@ module QA context 'Plan' do describe 'check xss occurence in @mentions in issues' do before do - Runtime::Browser.visit(:gitlab, Page::Main::Login) - Page::Main::Login.perform(&:sign_in_using_credentials) + QA::Runtime::Env.personal_access_token = QA::Runtime::Env.admin_personal_access_token + + unless QA::Runtime::Env.personal_access_token + Runtime::Browser.visit(:gitlab, Page::Main::Login) + Page::Main::Login.perform(&:sign_in_using_admin_credentials) + end user = Resource::User.fabricate_via_api! do |user| user.name = "eve Date: Mon, 22 Jul 2019 12:01:43 +0000 Subject: Merge branch 'tr-embed-metrics-frontend' into 'master' Embed metrics charts in issues See merge request gitlab-org/gitlab-ce!29691 (cherry picked from commit 886a6957ec0d981426219f42d75e0af145a9f7cf) 80feba93 Add ability to embed metrics b5cdde0c Integrate latest backend changes and feature flag 330b0414 Fix jest test c260ad82 Migrate TODOs to issues 3a822d99 Seet appropriate default 57c2eb79 Put gfm rendering behind a feature flag cfeda009 Rename link variable 81ff8d43 Move feature spec into new MR 9d08a5dd Add devensive check on `gon` features object ca5e00cf Add w-100 style 6e63457b Condense border into shorthand 8de8b6cf Move sidebarAnimationDuration into constants c9936bf9 Remove extraneous default export 010bb0e3 Reword conditional logic f4ea4c81 Simplify filter logic a2f1b4c2 Move styling from css to utility class da9788df Tidy up component initialization c69a119b Avoid duplication of `embedded` param supplied by backend be4b7a11 Remove unnecessary mount d203980b Apply suggestion to app/assets/javascripts/monitoring/components/charts/area.vue 62ebc6e3 Use object notation 26075703 Add missing class d9464420 Make sidebarAnimationDuration match actual sidebar animation length 83014858 Remove nextTick and compute groupData object directly 259f700b Rename variable for accuracy f34890cc Use composite key for dashboard metric groups 92ef33a0 Fix unit test to accommodate for removal of mount call e2f10bba Remove changelog entry as feature is behind feature flag c6d8b271 Use graph title as key for embeds --- .../javascripts/behaviors/markdown/render_gfm.js | 4 + .../behaviors/markdown/render_metrics.js | 24 ++++++ .../monitoring/components/charts/area.vue | 96 +++++++++++---------- .../monitoring/components/dashboard.vue | 7 +- .../javascripts/monitoring/components/embed.vue | 97 ++++++++++++++++++++++ app/assets/javascripts/monitoring/constants.js | 2 + .../javascripts/monitoring/stores/actions.js | 12 ++- .../monitoring/stores/mutation_types.js | 1 + .../javascripts/monitoring/stores/mutations.js | 3 + app/assets/javascripts/monitoring/stores/state.js | 1 + app/assets/stylesheets/pages/prometheus.scss | 5 ++ .../behaviors/markdown/render_metrics_spec.js | 37 +++++++++ spec/frontend/monitoring/embed/embed_spec.js | 78 +++++++++++++++++ spec/frontend/monitoring/embed/mock_data.js | 87 +++++++++++++++++++ spec/frontend/test_setup.js | 6 ++ 15 files changed, 410 insertions(+), 50 deletions(-) create mode 100644 app/assets/javascripts/behaviors/markdown/render_metrics.js create mode 100644 app/assets/javascripts/monitoring/components/embed.vue create mode 100644 spec/frontend/behaviors/markdown/render_metrics_spec.js create mode 100644 spec/frontend/monitoring/embed/embed_spec.js create mode 100644 spec/frontend/monitoring/embed/mock_data.js diff --git a/app/assets/javascripts/behaviors/markdown/render_gfm.js b/app/assets/javascripts/behaviors/markdown/render_gfm.js index bfb073fdcdc..789a057caf8 100644 --- a/app/assets/javascripts/behaviors/markdown/render_gfm.js +++ b/app/assets/javascripts/behaviors/markdown/render_gfm.js @@ -2,6 +2,7 @@ import $ from 'jquery'; import syntaxHighlight from '~/syntax_highlight'; import renderMath from './render_math'; import renderMermaid from './render_mermaid'; +import renderMetrics from './render_metrics'; import highlightCurrentUser from './highlight_current_user'; import initUserPopovers from '../../user_popovers'; import initMRPopovers from '../../mr_popover'; @@ -17,6 +18,9 @@ $.fn.renderGFM = function renderGFM() { highlightCurrentUser(this.find('.gfm-project_member').get()); initUserPopovers(this.find('.gfm-project_member').get()); initMRPopovers(this.find('.gfm-merge_request').get()); + if (gon.features && gon.features.gfmEmbeddedMetrics) { + renderMetrics(this.find('.js-render-metrics').get()); + } return this; }; diff --git a/app/assets/javascripts/behaviors/markdown/render_metrics.js b/app/assets/javascripts/behaviors/markdown/render_metrics.js new file mode 100644 index 00000000000..252b98610b6 --- /dev/null +++ b/app/assets/javascripts/behaviors/markdown/render_metrics.js @@ -0,0 +1,24 @@ +import Vue from 'vue'; +import Metrics from '~/monitoring/components/embed.vue'; +import { createStore } from '~/monitoring/stores'; + +// TODO: Handle copy-pasting - https://gitlab.com/gitlab-org/gitlab-ce/issues/64369. +export default function renderMetrics(elements) { + if (!elements.length) { + return; + } + + elements.forEach(element => { + const { dashboardUrl } = element.dataset; + const MetricsComponent = Vue.extend(Metrics); + + // eslint-disable-next-line no-new + new MetricsComponent({ + el: element, + store: createStore(), + propsData: { + dashboardUrl, + }, + }); + }); +} diff --git a/app/assets/javascripts/monitoring/components/charts/area.vue b/app/assets/javascripts/monitoring/components/charts/area.vue index 454ff4f284e..edf9423c74c 100644 --- a/app/assets/javascripts/monitoring/components/charts/area.vue +++ b/app/assets/javascripts/monitoring/components/charts/area.vue @@ -37,7 +37,13 @@ export default { }, projectPath: { type: String, - required: true, + required: false, + default: () => '', + }, + showBorder: { + type: Boolean, + required: false, + default: () => false, }, thresholds: { type: Array, @@ -234,52 +240,54 @@ export default {