Commit 75687c79 authored by GitLab Bot's avatar GitLab Bot

Add latest changes from gitlab-org/gitlab@master

parent 0c3f1214
......@@ -7,6 +7,7 @@ module ErrorTracking
SENTRY_API_ERROR_TYPE_MISSING_KEYS = 'missing_keys_in_sentry_response'
SENTRY_API_ERROR_TYPE_NON_20X_RESPONSE = 'non_20x_response_from_sentry'
SENTRY_API_ERROR_INVALID_SIZE = 'invalid_size_of_sentry_response'
API_URL_PATH_REGEXP = %r{
\A
......@@ -116,6 +117,8 @@ module ErrorTracking
{ error: e.message, error_type: SENTRY_API_ERROR_TYPE_NON_20X_RESPONSE }
rescue Sentry::Client::MissingKeysError => e
{ error: e.message, error_type: SENTRY_API_ERROR_TYPE_MISSING_KEYS }
rescue Sentry::Client::ResponseInvalidSizeError => e
{ error: e.message, error_type: SENTRY_API_ERROR_INVALID_SIZE }
end
# http://HOST/api/0/projects/ORG/PROJECT
......
---
title: Make User IDs work per scope in Feature Flags
merge_request: 19399
author:
type: added
......@@ -21,7 +21,7 @@ Parameters:
| Attribute | Type | Required | Description |
|:----------|:--------|:---------|:----------------------------------------------------------------------------------------------------------------------------------------|
| `filter` | string | yes | A [filter](#available-filters) expression. |
| `filter` | string | no | A [filter](#available-filters) expression. |
| `group_path` | string | yes | Full path to the group. |
| `startIndex` | integer | no | The 1-based index indicating where to start returning results from. A value of less than one will be interpreted as 1. |
| `count` | integer | no | Desired maximum number of query results. |
......
......@@ -1124,7 +1124,7 @@ Parameters:
## Block user
Blocks the specified user. Available only for admin.
Blocks the specified user. Available only for admin.
```
POST /users/:id/block
......@@ -1139,7 +1139,7 @@ Will return `201 OK` on success, `404 User Not Found` is user cannot be found or
## Unblock user
Unblocks the specified user. Available only for admin.
Unblocks the specified user. Available only for admin.
```
POST /users/:id/unblock
......
......@@ -112,8 +112,8 @@ To list users matching a specific criteria, click on one of the following tabs o
- **2FA Enabled**
- **2FA Disabled**
- **External**
- **Blocked**
- **Deactivated**
- **[Blocked](../profile/account/blocking_unblocking_users.md)**
- **[Deactivated](../profile/account/activating_deactivating_users.md)**
- **Without projects**
For each user, their username, email address, are listed, also the date their account was
......
......@@ -352,10 +352,7 @@ bottom of the screen with two buttons:
Clicking **Submit review** will publish all comments. Any quick actions
submitted are performed at this time.
Alternatively, to finish the entire review from a pending comment:
- Click the **Finish review** button on the comment.
- Use the `/submit_review` [quick action](../project/quick_actions.md) in the text of the comment.
Alternatively, every pending comment has a button to finish the entire review.
![Review submission](img/review_preview.png)
......
---
type: howto
---
# Activating and deactivating users
## Deactivating a user
> [Introduced](https://gitlab.com/gitlab-org/gitlab-ce/issues/63921) in GitLab 12.4.
In order to temporarily prevent access by a GitLab user that has no recent activity, administrators can choose to deactivate the user.
Deactivating a user is functionally identical to [blocking a user](blocking_unblocking_users.md), with the following differences:
- It does not prohibit the user from logging back in via the UI.
- Once a deactivated user logs back into the GitLab UI, their account is set to active.
A deactivated user:
- Cannot access Git repositories or the API.
- Will not receive any notifications from GitLab.
- Will not be able to use [slash commands](../../../integration/slash_commands.md).
Personal projects, group and user history of the deactivated user will be left intact.
A user can be deactivated from the Admin area. To do this:
1. Navigate to **Admin Area > Overview > Users**.
1. Select a user.
1. Under the **Account** tab, click **Deactivate user**.
Please note that for the deactivation option to be visible to an admin, the user:
- Must be currently active.
- Should not have any activity in the last 180 days.
Users can also be deactivated using the [GitLab API](../../../api/users.html#deactivate-user).
NOTE: **Note:**
A deactivated user does not consume a [seat](../../../subscriptions/index.md#managing-subscriptions).
## Activating a user
> [Introduced](https://gitlab.com/gitlab-org/gitlab-ce/issues/63921) in GitLab 12.4.
A deactivated user can be activated from the Admin area.
To do this:
1. Navigate to **Admin Area > Overview > Users**.
1. Click on the **Deactivated** tab.
1. Select a user.
1. Under the **Account** tab, click **Activate user**.
Users can also be activated using the [GitLab API](../../../api/users.html#activate-user).
NOTE: **Note:**
Activating a user will change the user's state to active and it consumes a [seat](../../../subscriptions/index.md#managing-subscriptions).
TIP: **Tip:**
A deactivated user can also activate their account by themselves by simply logging back via the UI.
---
type: howto
---
# Blocking and unblocking users
## Blocking a user
Inorder to completely prevent access of a user to the GitLab instance, admin can choose to block the user.
Users can be blocked [via an abuse report](../../admin_area/abuse_reports.md#blocking-users),
or directly from the Admin area. To do this:
1. Navigate to **Admin Area > Overview > Users**.
1. Select a user.
1. Under the **Account** tab, click **Block user**.
A blocked user:
- Will not be able to login.
- Cannot access Git repositories or the API.
- Will not receive any notifications from GitLab.
- Will not be able to use [slash commands](../../../integration/slash_commands.md).
Personal projects, group and user history of the blocked user will be left intact.
Users can also be blocked using the [GitLab API](../../../api/users.html#block-user).
NOTE: **Note:**
A blocked user does not consume a [seat](../../../subscriptions/index.md#managing-subscriptions).
## Unblocking a user
A blocked user can be unblocked from the Admin area. To do this:
1. Navigate to **Admin Area > Overview > Users**.
1. Click on the **Blocked** tab.
1. Select a user.
1. Under the **Account** tab, click **Unblock user**.
Users can also be unblocked using the [GitLab API](../../../api/users.html#unblock-user).
NOTE: **Note:**
Unblocking a user will change the user's state to active and it consumes a [seat](../../../subscriptions/index.md#managing-subscriptions).
......@@ -32,63 +32,6 @@ As an administrator, you can delete a user account by:
- **Delete user and contributions** to delete the user and
their associated records.
### Blocking a user
In addition to blocking a user
[via an abuse report](../../admin_area/abuse_reports.md#blocking-users),
a user can be blocked directly from the Admin area. To do this:
1. Navigate to **Admin Area > Overview > Users**.
1. Selecting a user.
1. Under the **Account** tab, click **Block user**.
### Deactivating a user
> [Introduced](https://gitlab.com/gitlab-org/gitlab-ce/issues/63921) in GitLab 12.4.
A user can be deactivated from the Admin area. Deactivating a user is functionally identical to blocking a user, with the following differences:
- It does not prohibit the user from logging back in via the UI.
- Once a deactivated user logs back into the GitLab UI, their account is set to active.
A deactivated user:
- Cannot access Git repositories or the API.
- Will not receive any notifications from GitLab.
- Will not be able to use [slash commands](../../../integration/slash_commands.md).
Personal projects, group and user history of the deactivated user will be left intact.
NOTE: **Note:**
A deactivated user does not consume a [seat](../../../subscriptions/index.md#managing-subscriptions).
To do this:
1. Navigate to **Admin Area > Overview > Users**.
1. Select a user.
1. Under the **Account** tab, click **Deactivate user**.
Please note that for the deactivation option to be visible to an admin, the user:
- Must be currently active.
- Should not have any activity in the last 180 days.
### Activating a user
> [Introduced](https://gitlab.com/gitlab-org/gitlab-ce/issues/63921) in GitLab 12.4.
A deactivated user can be activated from the Admin area. Activating a user sets their account to active state.
To do this:
1. Navigate to **Admin Area > Overview > Users**.
1. Click on the **Deactivated** tab.
1. Select a user.
1. Under the **Account** tab, click **Activate user**.
TIP: **Tip:**
A deactivated user can also activate their account by themselves by simply logging back via the UI.
## Associated Records
> - Introduced for issues in
......
......@@ -68,8 +68,7 @@ The following quick actions are applicable to descriptions, discussions and thre
| `/remove_zoom` | ✓ | | | Remove Zoom meeting from this issue. ([Introduced in GitLab 12.4](https://gitlab.com/gitlab-org/gitlab/merge_requests/16609)) |
| `/target_branch <local branch name>` | | ✓ | | Set target branch |
| `/wip` | | ✓ | | Toggle the Work In Progress status |
| `/approve` | | ✓ | | Approve the merge request **(STARTER)** |
| `/submit_review` | | ✓ | | Submit a pending review. ([Introduced in GitLab 12.5](https://gitlab.com/gitlab-org/gitlab/issues/8041)) **(PREMIUM)** |
| `/approve` | | ✓ | | Approve the merge request |
| `/merge` | | ✓ | | Merge (when pipeline succeeds) |
| `/child_epic <epic>` | | | ✓ | Add child epic to `<epic>`. The `<epic>` value should be in the format of `&epic`, `group&epic`, or a URL to an epic. ([Introduced in GitLab 12.0](https://gitlab.com/gitlab-org/gitlab/issues/7330)) **(ULTIMATE)** |
| `/remove_child_epic <epic>` | | | ✓ | Remove child epic from `<epic>`. The `<epic>` value should be in the format of `&epic`, `group&epic`, or a URL to an epic. ([Introduced in GitLab 12.0](https://gitlab.com/gitlab-org/gitlab/issues/7330)) **(ULTIMATE)** |
......
......@@ -25,6 +25,10 @@ module Gitlab
!too_big? && !too_deep?
end
def self.human_default_max_size
ActiveSupport::NumberHelper.number_to_human_size(DEFAULT_MAX_SIZE)
end
private
def evaluate
......
......@@ -4,6 +4,7 @@ module Sentry
class Client
Error = Class.new(StandardError)
MissingKeysError = Class.new(StandardError)
ResponseInvalidSizeError = Class.new(StandardError)
attr_accessor :url, :token
......@@ -27,6 +28,8 @@ module Sentry
def list_issues(issue_status:, limit:)
issues = get_issues(issue_status: issue_status, limit: limit)
validate_size(issues)
handle_mapping_exceptions do
map_to_errors(issues)
end
......@@ -42,6 +45,16 @@ module Sentry
private
def validate_size(issues)
return if Gitlab::Utils::DeepSize.new(issues).valid?
raise Client::ResponseInvalidSizeError, "Sentry API response is too big. Limit is #{Gitlab::Utils::DeepSize.human_default_max_size}."
end
def valid_size?(issues)
Gitlab::Utils::DeepSize.new(issues).valid?
end
def handle_mapping_exceptions(&block)
yield
rescue KeyError => e
......@@ -108,7 +121,7 @@ module Sentry
raise_error "Sentry response status code: #{response.code}"
end
response
response.parsed_response
end
def raise_error(message)
......
......@@ -7264,6 +7264,9 @@ msgstr ""
msgid "FeatureFlags|Inactive flag for %{scope}"
msgstr ""
msgid "FeatureFlags|Include additional user IDs"
msgstr ""
msgid "FeatureFlags|Install a %{docs_link_anchored_start}compatible client library%{docs_link_anchored_end} and specify the API URL, application name, and instance ID during the configuration setup. %{docs_link_start}More Information%{docs_link_end}"
msgstr ""
......@@ -13621,7 +13624,7 @@ msgstr ""
msgid "Promotions|Learn more"
msgstr ""
msgid "Promotions|See the other features in the %{subscription_link_start}bronze plan%{subscriptions_link_end}"
msgid "Promotions|See the other features in the %{subscription_link_start}bronze plan%{subscription_link_end}"
msgstr ""
msgid "Promotions|This feature is locked."
......@@ -16280,9 +16283,6 @@ msgstr ""
msgid "Subkeys"
msgstr ""
msgid "Submit a review"
msgstr ""
msgid "Submit as spam"
msgstr ""
......@@ -16298,12 +16298,6 @@ msgstr ""
msgid "Submit search"
msgstr ""
msgid "Submit the current review."
msgstr ""
msgid "Submitted the current review."
msgstr ""
msgid "Subscribe"
msgstr ""
......
......@@ -4,6 +4,7 @@ require 'spec_helper'
describe 'Metrics rendering', :js, :use_clean_rails_memory_store_caching, :sidekiq_might_not_need_inline do
include PrometheusHelpers
include GrafanaApiHelpers
let(:user) { create(:user) }
let(:project) { create(:prometheus_project) }
......@@ -14,11 +15,7 @@ describe 'Metrics rendering', :js, :use_clean_rails_memory_store_caching, :sidek
before do
configure_host
import_common_metrics
stub_any_prometheus_request_with_response
project.add_developer(user)
sign_in(user)
end
......@@ -26,31 +23,58 @@ describe 'Metrics rendering', :js, :use_clean_rails_memory_store_caching, :sidek
restore_host
end
it 'shows embedded metrics' do
visit project_issue_path(project, issue)
context 'internal metrics embeds' do
before do
import_common_metrics
stub_any_prometheus_request_with_response
end
it 'shows embedded metrics' do
visit project_issue_path(project, issue)
expect(page).to have_css('div.prometheus-graph')
expect(page).to have_text('Memory Usage (Total)')
expect(page).to have_text('Core Usage (Total)')
end
context 'when dashboard params are in included the url' do
let(:metrics_url) { metrics_project_environment_url(project, environment, **chart_params) }
expect(page).to have_css('div.prometheus-graph')
expect(page).to have_text('Memory Usage (Total)')
expect(page).to have_text('Core Usage (Total)')
let(:chart_params) do
{
group: 'System metrics (Kubernetes)',
title: 'Memory Usage (Pod average)',
y_label: 'Memory Used per Pod (MB)'
}
end
it 'shows embedded metrics for the specific chart' do
visit project_issue_path(project, issue)
expect(page).to have_css('div.prometheus-graph')
expect(page).to have_text(chart_params[:title])
expect(page).to have_text(chart_params[:y_label])
end
end
end
context 'when dashboard params are in included the url' do
let(:metrics_url) { metrics_project_environment_url(project, environment, **chart_params) }
context 'grafana metrics embeds' do
let(:grafana_integration) { create(:grafana_integration, project: project) }
let(:grafana_base_url) { grafana_integration.grafana_url }
let(:metrics_url) { valid_grafana_dashboard_link(grafana_base_url) }
let(:chart_params) do
{
group: 'System metrics (Kubernetes)',
title: 'Memory Usage (Pod average)',
y_label: 'Memory Used per Pod (MB)'
}
before do
stub_dashboard_request(grafana_base_url)
stub_datasource_request(grafana_base_url)
stub_all_grafana_proxy_requests(grafana_base_url)
end
it 'shows embedded metrics for the specifiec chart' do
it 'shows embedded metrics' do
visit project_issue_path(project, issue)
expect(page).to have_css('div.prometheus-graph')
expect(page).to have_text(chart_params[:title])
expect(page).to have_text(chart_params[:y_label])
expect(page).to have_text('Expired / Evicted')
expect(page).to have_text('expired - test-attribute-value')
end
end
......
......@@ -424,7 +424,7 @@
"format": "time_series",
"interval": "1m",
"intervalFactor": 2,
"legendFormat": "expired",
"legendFormat": "expired - {{ test_attribute }}",
"metric": "",
"refId": "A",
"step": 240,
......
{
"status": "success",
"data": {
"resultType": "matrix",
"result": [
{
"metric": {
"test_attribute": "test-attribute-value"
},
"values": [
[1570768177, "54"],
[1570768237, "54"],
[1570768297, "54"],
[1570768357, "54"],
[1570768417, "54"],
[1570768477, "54"],
[1570768537, "54"],
[1570768597, "54"],
[1570768657, "54"],
[1570768717, "54"],
[1570768777, "54"],
[1570768837, "54"],
[1570768897, "54"],
[1570768957, "54"],
[1570769017, "54"],
[1570769077, "54"],
[1570769377, "54"],
[1570769437, "54"],
[1570769497, "54"],
[1570769557, "54"],
[1570769617, "54"],
[1570769677, "54"],
[1570769737, "54"],
[1570769797, "54"],
[1570769857, "54"],
[1570769917, "54"],
[1570769977, "54"],
[1570770037, "54"],
[1570770097, "54"],
[1570770157, "54"],
[1570770217, "54"],
[1570770277, "54"],
[1570770337, "54"],
[1570770397, "54"],
[1570770457, "54"],
[1570770517, "54"],
[1570770577, "54"],
[1570770637, "54"],
[1570770697, "54"],
[1570770757, "54"],
[1570770817, "54"],
[1570770877, "54"],
[1570770937, "54"],
[1570770997, "54"],
[1570771057, "54"],
[1570771117, "54"],
[1570771177, "54"],
[1570771237, "54"],
[1570771297, "54"],
[1570771357, "54"],
[1570771417, "54"],
[1570771477, "54"],
[1570771537, "54"],
[1570771597, "54"],
[1570771657, "54"],
[1570771717, "54"],
[1570771777, "54"],
[1570771837, "54"],
[1570771897, "54"],
[1570771957, "54"],
[1570772017, "54"],
[1570772077, "54"],
[1570772137, "54"],
[1570772197, "54"],
[1570772257, "54"],
[1570772317, "54"],
[1570772377, "54"],
[1570772437, "54"],
[1570772497, "54"],
[1570772557, "54"],
[1570772617, "54"],
[1570772677, "54"],
[1570772737, "54"],
[1570772797, "54"],
[1570772857, "54"],
[1570772917, "54"],
[1570772977, "54"],
[1570773037, "54"],
[1570773097, "54"],
[1570773157, "54"],
[1570773217, "54"],
[1570773277, "54"],
[1570773337, "54"],
[1570773397, "54"],
[1570773457, "54"],
[1570773517, "54"],
[1570773577, "54"],
[1570773637, "54"],
[1570773697, "54"],
[1570773757, "54"],
[1570773817, "54"],
[1570773877, "54"],
[1570773937, "54"],
[1570773997, "54"],
[1570774057, "54"],
[1570774117, "54"],
[1570774177, "54"],
[1570774237, "54"],
[1570774297, "54"],
[1570774357, "54"],
[1570774417, "54"],
[1570774477, "54"],
[1570774537, "54"],
[1570774597, "54"],
[1570774657, "54"],
[1570774717, "54"],
[1570774777, "54"],
[1570774837, "54"],
[1570774897, "54"],
[1570774957, "54"],
[1570775017, "54"],
[1570775077, "54"],
[1570775137, "54"],
[1570776937, "54"],
[1570776997, "54"],
[1570777057, "54"],
[1570777117, "54"],
[1570777177, "54"],
[1570777237, "54"],
[1570777297, "54"],
[1570777357, "54"],
[1570777417, "54"],
[1570777477, "54"],
[1570777537, "54"],
[1570777597, "54"],
[1570777657, "54"],
[1570777717, "54"],
[1570778017, "54"],
[1570778077, "54"],
[1570778137, "54"],
[1570778197, "54"],
[1570778257, "54"],
[1570778317, "54"],
[1570778377, "54"],
[1570778437, "54"],
[1570778497, "54"],
[1570778557, "54"],
[1570778617, "54"],
[1570778677, "54"],
[1570778737, "54"],
[1570778797, "54"],
[1570778857, "54"],
[1570778917, "54"],
[1570778977, "54"],
[1570779037, "54"],
[1570779097, "54"],
[1570779157, "54"],
[1570779217, "54"],
[1570779277, "54"],
[1570779337, "54"],
[1570779397, "54"],
[1570779457, "54"],
[1570779517, "54"],
[1570779577, "54"],
[1570779637, "54"],
[1570779697, "54"],
[1570779757, "54"],
[1570779817, "54"],
[1570779877, "54"],
[1570779937, "54"],
[1570779997, "54"],
[1570780057, "54"],
[1570780117, "54"],
[1570780177, "54"],
[1570780237, "54"],
[1570780297, "54"],
[1570780357, "54"],
[1570780417, "54"],
[1570780477, "54"],
[1570780537, "54"],
[1570780597, "54"],
[1570780657, "54"],
[1570780717, "54"],
[1570780777, "54"],
[1570780837, "54"],
[1570780897, "54"],
[1570780957, "54"],
[1570781017, "54"],
[1570781077, "54"],
[1570781137, "54"],
[1570781197, "54"],
[1570781257, "54"],
[1570781317, "54"],
[1570781377, "54"],
[1570781437, "54"],
[1570781497, "54"],
[1570781557, "54"],
[1570781617, "54"],
[1570781677, "54"],
[1570781737, "54"],
[1570781797, "54"],
[1570781857, "54"],
[1570781917, "54"],
[1570781977, "54"],
[1570782037, "54"],
[1570782097, "54"],
[1570782157, "54"],
[1570782217, "54"],
[1570782277, "54"],
[1570782337, "54"],
[1570782397, "54"],
[1570782457, "54"],
[1570782517, "54"],
[1570782577, "54"],
[1570782637, "54"],
[1570782697, "54"],
[1570782757, "54"],
[1570782817, "54"],
[1570782877, "54"],
[1570782937, "54"],
[1570782997, "54"],
[1570783057, "54"],
[1570783117, "54"],
[1570783177, "54"],
[1570783237, "54"],
[1570783297, "54"],
[1570783357, "54"],
[1570783417, "54"],
[1570783477, "54"],
[1570783537, "54"],
[1570783597, "54"],
[1570783657, "54"],
[1570783717, "54"],
[1570783777, "54"],
[1570783837, "54"],
[1570783897, "54"],
[1570783957, "54"],
[1570784017, "54"],
[1570784077, "54"],
[1570784137, "54"],
[1570784197, "54"],
[1570784257, "54"],
[1570784317, "54"],
[1570784377, "54"],
[1570784437, "54"],
[1570784497, "54"],
[1570784557, "54"],
[1570784617, "54"],
[1570784677, "54"],
[1570784737, "54"],
[1570784797, "54"],
[1570784857, "54"],
[1570784917, "54"],
[1570784977, "54"],
[1570785037, "54"],
[1570785097, "54"],
[1570785157, "54"],
[1570785217, "54"],
[1570785277, "54"],
[1570785337, "54"],
[1570785397, "54"],
[1570785457, "54"],
[1570785517, "54"],
[1570785577, "54"],
[1570785637, "54"],
[1570785697, "54"],
[1570785757, "54"],
[1570785817, "54"],
[1570785877, "54"],
[1570785937, "54"],
[1570785997, "54"],
[1570786057, "54"],
[1570786117, "54"],
[1570786177, "54"],
[1570786237, "54"],
[1570786297, "54"],
[1570786357, "54"],
[1570786417, "54"],
[1570786477, "54"],
[1570786537, "54"],
[1570786597, "54"],
[1570786657, "54"],
[1570786717, "54"],
[1570786777, "54"],
[1570786837, "54"],
[1570786897, "54"],
[1570786957, "53"],
[1570787017, "54"],
[1570787077, "54"],
[1570787137, "54"],
[1570787197, "54"],
[1570787257, "54"],
[1570787317, "54"],
[1570787377, "54"],
[1570787437, "54"],
[1570787497, "54"],
[1570787557, "54"],
[1570787617, "54"],
[1570787677, "54"],
[1570787737, "54"],
[1570787797, "54"],
[1570787857, "54"],
[1570787917, "54"],
[1570787977, "54"],
[1570788037, "54"],
[1570788097, "54"],
[1570788157, "54"],
[1570788217, "54"],
[1570788277, "54"],
[1570788337, "54"],
[1570788397, "54"],
[1570788457, "54"],
[1570788517, "54"],
[1570788577, "54"],
[1570788637, "54"],
[1570788697, "54"],
[1570788757, "54"],
[1570788817, "54"],
[1570788877, "54"],
[1570788937, "54"],
[1570788997, "54"],
[1570789057, "54"],
[1570789117, "54"],
[1570789177, "54"],
[1570789237, "54"],
[1570789297, "54"],
[1570789357, "54"],
[1570789417, "54"],
[1570789477, "54"],
[1570789537, "54"],
[1570789597, "54"],
[1570789657, "54"],
[1570789717, "54"],
[1570789777, "54"],
[1570789837, "54"],
[1570789897, "54"],
[1570789957, "54"],
[1570790017, "54"],
[1570790077, "54"],
[1570790137, "54"],
[1570790197, "54"],
[1570790257, "54"],
[1570790317, "54"],
[1570790377, "54"],
[1570790437, "54"],
[1570790497, "54"],
[1570790557, "54"],
[1570790617, "54"],
[1570790677, "54"],
[1570790737, "54"],
[1570790797, "54"],
[1570790857, "54"],
[1570790917, "54"],
[1570790977, "54"],
[1570791037, "54"],
[1570791097, "54"],
[1570791157, "54"],
[1570791217, "54"],
[1570791277, "54"],
[1570791337, "54"],
[1570791397, "54"],
[1570791457, "54"],
[1570791517, "54"],
[1570791577, "54"],
[1570791637, "54"],
[1570791697, "54"],
[1570791757, "54"],
[1570791817, "54"],
[1570791877, "54"],
[1570791937, "54"],
[1570791997, "54"],
[1570792057, "54"],
[1570792117, "54"],
[1570792177, "54"],
[1570792237, "54"],
[1570792297, "54"],
[1570792357, "54"],
[1570792417, "54"],
[1570792477, "54"],
[1570792537, "54"],
[1570792597, "54"],
[1570792657, "54"],
[1570792717, "54"],
[1570792777, "54"],
[1570792837, "54"],
[1570792897, "54"],
[1570792957, "54"],
[1570793017, "54"],
[1570793077, "54"],
[1570793137, "54"],
[1570793197, "54"],
[1570793257, "54"],
[1570793317, "54"],
[1570793377, "54"],
[1570793437, "54"],
[1570793497, "54"],
[1570793557, "54"],
[1570793617, "54"],
[1570793677, "54"],
[1570793737, "54"],
[1570793797, "54"],
[1570793857, "54"],
[1570793917, "54"],
[1570793977, "54"],
[1570794037, "54"],
[1570794097, "54"],
[1570794157, "54"],
[1570794217, "54"],
[1570794277, "54"],
[1570794337, "54"],
[1570794397, "54"],
[1570794457, "54"],
[1570794517, "54"],
[1570794577, "54"],
[1570794637, "54"],
[1570794697, "54"],
[1570794757, "54"],
[1570794817, "54"],
[1570794877, "54"],
[1570794937, "54"],
[1570794997, "54"],
[1570795057, "54"],
[1570795117, "54"],
[1570795177, "54"],
[1570795237, "54"],
[1570795297, "54"],
[1570795357, "54"],
[1570795417, "54"],
[1570795477, "54"],
[1570795537, "54"],
[1570795597, "54"],
[1570795657, "54"],
[1570795717, "54"],
[1570795777, "54"],
[1570795837, "54"],
[1570795897, "54"],
[1570795957, "54"],
[1570796017, "54"],
[1570796077, "54"],
[1570796137, "54"],
[1570796197, "54"],
[1570796257, "54"],
[1570796317, "54"],
[1570796377, "54"],
[1570796437, "55"],
[1570796497, "54"],
[1570796557, "54"],
[1570796617, "54"],
[1570796677, "54"],
[1570796737, "54"],
[1570796797, "54"],
[1570796857, "54"],
[1570796917, "54"],
[1570796977, "54"]
]
}
]
}
}
......@@ -42,4 +42,10 @@ describe Gitlab::Utils::DeepSize do
end
end
end
describe '.human_default_max_size' do
it 'returns 1 MB' do
expect(described_class.human_default_max_size).to eq('1 MB')
end
end
end
......@@ -192,6 +192,15 @@ describe Sentry::Client do
end
end
context 'sentry api response too large' do
it 'raises exception' do
deep_size = double('Gitlab::Utils::DeepSize', valid?: false)
allow(Gitlab::Utils::DeepSize).to receive(:new).with(sentry_api_response).and_return(deep_size)
expect { subject }.to raise_error(Sentry::Client::ResponseInvalidSizeError, 'Sentry API response is too big. Limit is 1 MB.')
end
end
it_behaves_like 'maps exceptions'
end
......
......@@ -208,6 +208,28 @@ describe ErrorTracking::ProjectErrorTrackingSetting do
expect(sentry_client).to have_received(:list_issues)
end
end
context 'when sentry client raises Sentry::Client::ResponseInvalidSizeError' do
let(:sentry_client) { spy(:sentry_client) }
let(:error_msg) {"Sentry API response is too big. Limit is #{Gitlab::Utils::DeepSize.human_default_max_size}."}
before do
synchronous_reactive_cache(subject)
allow(subject).to receive(:sentry_client).and_return(sentry_client)
allow(sentry_client).to receive(:list_issues).with(opts)
.and_raise(Sentry::Client::ResponseInvalidSizeError, error_msg)
end
it 'returns error' do
expect(result).to eq(
error: error_msg,
error_type: ErrorTracking::ProjectErrorTrackingSetting::SENTRY_API_ERROR_INVALID_SIZE
)
expect(subject).to have_received(:sentry_client)
expect(sentry_client).to have_received(:list_issues)
end
end
end
describe '#list_sentry_projects' do
......
......@@ -29,4 +29,13 @@ module GrafanaApiHelpers
headers: { 'Content-Type' => 'application/json' }
)
end
def stub_all_grafana_proxy_requests(base_url)
stub_request(:any, /#{base_url}\/api\/datasources\/proxy/)
.to_return(
status: 200,
body: fixture_file('grafana/proxy_response.json'),
headers: { 'Content-Type' => 'application/json' }
)
end
end
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