Commit c29d2c6a authored by Douwe Maan's avatar Douwe Maan

Merge branch 'api-configure-jira' into 'master'

Validate username/pw for Jiraservice, require them in the API

Closes #36621

See merge request gitlab-org/gitlab-ce!15025
parents f913f7a1 525f043c
...@@ -3,6 +3,8 @@ class JiraService < IssueTrackerService ...@@ -3,6 +3,8 @@ class JiraService < IssueTrackerService
validates :url, url: true, presence: true, if: :activated? validates :url, url: true, presence: true, if: :activated?
validates :api_url, url: true, allow_blank: true validates :api_url, url: true, allow_blank: true
validates :username, presence: true, if: :activated?
validates :password, presence: true, if: :activated?
prop_accessor :username, :password, :url, :api_url, :jira_issue_transition_id, :title, :description prop_accessor :username, :password, :url, :api_url, :jira_issue_transition_id, :title, :description
......
---
title: Validate username/pw for Jiraservice, require them in the API
merge_request: 15025
author: Robert Schilling
type: fixed
...@@ -478,8 +478,8 @@ PUT /projects/:id/services/jira ...@@ -478,8 +478,8 @@ PUT /projects/:id/services/jira
| --------- | ---- | -------- | ----------- | | --------- | ---- | -------- | ----------- |
| `url` | string | yes | The URL to the JIRA project which is being linked to this GitLab project, e.g., `https://jira.example.com`. | | `url` | string | yes | The URL to the JIRA project which is being linked to this GitLab project, e.g., `https://jira.example.com`. |
| `project_key` | string | yes | The short identifier for your JIRA project, all uppercase, e.g., `PROJ`. | | `project_key` | string | yes | The short identifier for your JIRA project, all uppercase, e.g., `PROJ`. |
| `username` | string | no | The username of the user created to be used with GitLab/JIRA. | | `username` | string | yes | The username of the user created to be used with GitLab/JIRA. |
| `password` | string | no | The password of the user created to be used with GitLab/JIRA. | | `password` | string | yes | The password of the user created to be used with GitLab/JIRA. |
| `jira_issue_transition_id` | integer | no | The ID of a transition that moves issues to a closed state. You can find this number under the JIRA workflow administration (**Administration > Issues > Workflows**) by selecting **View** under **Operations** of the desired workflow of your project. The ID of each state can be found inside the parenthesis of each transition name under the **Transitions (id)** column ([see screenshot][trans]). By default, this ID is set to `2`. | | `jira_issue_transition_id` | integer | no | The ID of a transition that moves issues to a closed state. You can find this number under the JIRA workflow administration (**Administration > Issues > Workflows**) by selecting **View** under **Operations** of the desired workflow of your project. The ID of each state can be found inside the parenthesis of each transition name under the **Transitions (id)** column ([see screenshot][trans]). By default, this ID is set to `2`. |
### Delete JIRA service ### Delete JIRA service
......
...@@ -313,13 +313,13 @@ module API ...@@ -313,13 +313,13 @@ module API
desc: 'The base URL to the JIRA instance API. Web URL value will be used if not set. E.g., https://jira-api.example.com' desc: 'The base URL to the JIRA instance API. Web URL value will be used if not set. E.g., https://jira-api.example.com'
}, },
{ {
required: false, required: true,
name: :username, name: :username,
type: String, type: String,
desc: 'The username of the user created to be used with GitLab/JIRA' desc: 'The username of the user created to be used with GitLab/JIRA'
}, },
{ {
required: false, required: true,
name: :password, name: :password,
type: String, type: String,
desc: 'The password of the user created to be used with GitLab/JIRA' desc: 'The password of the user created to be used with GitLab/JIRA'
......
...@@ -38,6 +38,8 @@ FactoryGirl.define do ...@@ -38,6 +38,8 @@ FactoryGirl.define do
active true active true
properties( properties(
url: 'https://jira.example.com', url: 'https://jira.example.com',
username: 'jira_user',
password: 'my-secret-password',
project_key: 'jira-key' project_key: 'jira-key'
) )
end end
......
...@@ -24,6 +24,8 @@ describe JiraService do ...@@ -24,6 +24,8 @@ describe JiraService do
end end
it { is_expected.not_to validate_presence_of(:url) } it { is_expected.not_to validate_presence_of(:url) }
it { is_expected.not_to validate_presence_of(:username) }
it { is_expected.not_to validate_presence_of(:password) }
end end
context 'validating urls' do context 'validating urls' do
...@@ -54,6 +56,18 @@ describe JiraService do ...@@ -54,6 +56,18 @@ describe JiraService do
expect(service).not_to be_valid expect(service).not_to be_valid
end end
it 'is not valid when username is missing' do
service.username = nil
expect(service).not_to be_valid
end
it 'is not valid when password is missing' do
service.password = nil
expect(service).not_to be_valid
end
it 'is valid when api url is a valid url' do it 'is valid when api url is a valid url' do
service.api_url = 'http://jira.test.com/api' service.api_url = 'http://jira.test.com/api'
......
...@@ -6,6 +6,8 @@ module JiraServiceHelper ...@@ -6,6 +6,8 @@ module JiraServiceHelper
properties = { properties = {
title: "JIRA tracker", title: "JIRA tracker",
url: JIRA_URL, url: JIRA_URL,
username: 'jira-user',
password: 'my-secret-password',
project_key: "JIRA", project_key: "JIRA",
jira_issue_transition_id: '1' jira_issue_transition_id: '1'
} }
......
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