diff options
Diffstat (limited to 'qa/qa/vendor/jira/jira_api.rb')
-rw-r--r-- | qa/qa/vendor/jira/jira_api.rb | 48 |
1 files changed, 41 insertions, 7 deletions
diff --git a/qa/qa/vendor/jira/jira_api.rb b/qa/qa/vendor/jira/jira_api.rb index 64af824418d..15039ac244e 100644 --- a/qa/qa/vendor/jira/jira_api.rb +++ b/qa/qa/vendor/jira/jira_api.rb @@ -7,6 +7,9 @@ module QA include Scenario::Actable include Support::API + DEFAULT_ISSUE_SUMMARY = 'REST ye merry gentlemen.' + DEFAULT_ISSUE_DESCRIPTION = 'Creating of an issue using project keys and issue type names using the REST API' + def base_url host = QA::Runtime::Env.jira_hostname || 'localhost' @@ -18,27 +21,58 @@ module QA end def fetch_issue(issue_key) - response = get("#{api_url}/issue/#{issue_key}", user: Runtime::Env.jira_admin_username, password: Runtime::Env.jira_admin_password) + response = get("#{api_url}/issue/#{issue_key}", + user: Runtime::Env.jira_admin_username, + password: Runtime::Env.jira_admin_password) parse_body(response) end - def create_issue(jira_project_key) + def create_project(project_key = "GL#{SecureRandom.hex(4)}".upcase) + payload = { + key: project_key, + name: "Project #{project_key}", + description: "New Project #{project_key}", + lead: Runtime::Env.jira_admin_username, + projectTypeKey: 'software' + } + response = post( + "#{api_url}/project", + payload.to_json, + headers: { 'Content-Type' => 'application/json' }, + user: Runtime::Env.jira_admin_username, + password: Runtime::Env.jira_admin_password) + + returned_project_key = parse_body(response)[:key] + + QA::Runtime::Logger.debug("Created JIRA project with key: '#{project_key}'") + + returned_project_key + end + + def create_issue( + jira_project_key, + issue_type: 'Bug', + summary: DEFAULT_ISSUE_SUMMARY, + description: DEFAULT_ISSUE_DESCRIPTION + ) payload = { fields: { project: { key: jira_project_key }, - summary: 'REST ye merry gentlemen.', - description: 'Creating of an issue using project keys and issue type names using the REST API', + summary: summary, + description: description, issuetype: { - name: 'Bug' + name: issue_type } } } - response = post("#{api_url}/issue", - payload.to_json, headers: { 'Content-Type': 'application/json' }, + response = post( + "#{api_url}/issue", + payload.to_json, + headers: { 'Content-Type': 'application/json' }, user: Runtime::Env.jira_admin_username, password: Runtime::Env.jira_admin_password) |