Package com.atlassian.jira.rest.client.api

Examples of com.atlassian.jira.rest.client.api.IssueRestClient


  @JiraBuildNumberDependent(BN_JIRA_5)
  @Test
  public void testCreateIssue() throws JSONException {
    // collect CreateIssueMetadata for project with key TST
    final IssueRestClient issueClient = client.getIssueClient();
    final Iterable<CimProject> metadataProjects = issueClient.getCreateIssueMetadata(
        new GetCreateIssueMetadataOptionsBuilder().withProjectKeys("TST").withExpandedIssueTypesFields().build()).claim();

    // select project and issue
    assertEquals(1, Iterables.size(metadataProjects));
    final CimProject project = metadataProjects.iterator().next();
    final CimIssueType issueType = findEntityByName(project.getIssueTypes(), "Bug");

    // grab the first component
    final Iterable<Object> allowedValuesForComponents = issueType.getField(IssueFieldId.COMPONENTS_FIELD).getAllowedValues();
    assertNotNull(allowedValuesForComponents);
    assertTrue(allowedValuesForComponents.iterator().hasNext());
    final BasicComponent component = (BasicComponent) allowedValuesForComponents.iterator().next();

    // grab the first priority
    final Iterable<Object> allowedValuesForPriority = issueType.getField(IssueFieldId.PRIORITY_FIELD).getAllowedValues();
    assertNotNull(allowedValuesForPriority);
    assertTrue(allowedValuesForPriority.iterator().hasNext());
    final BasicPriority priority = (BasicPriority) allowedValuesForPriority.iterator().next();

    // build issue input
    final String summary = "My new issue!";
    final String description = "Some description";
    final BasicUser assignee = IntegrationTestUtil.USER1;
    final List<String> affectedVersionsNames = Collections.emptyList();
    final DateTime dueDate = new DateTime(new Date().getTime());
    final ArrayList<String> fixVersionsNames = Lists.newArrayList("1.1");

    // prepare IssueInput
    final String multiUserCustomFieldId = "customfield_10031";
    final ImmutableList<BasicUser> multiUserCustomFieldValues = ImmutableList.of(IntegrationTestUtil.USER1, IntegrationTestUtil.USER2);
    final IssueInputBuilder issueInputBuilder = new IssueInputBuilder(project, issueType, summary)
        .setDescription(description)
        .setAssignee(assignee)
        .setAffectedVersionsNames(affectedVersionsNames)
        .setFixVersionsNames(fixVersionsNames)
        .setComponents(component)
        .setDueDate(dueDate)
        .setPriority(priority)
        .setFieldValue(multiUserCustomFieldId, multiUserCustomFieldValues);

    // create
    final BasicIssue basicCreatedIssue = issueClient.createIssue(issueInputBuilder.build()).claim();
    assertNotNull(basicCreatedIssue.getKey());

    // get issue and check if everything was set as we expected
    final Issue createdIssue = issueClient.getIssue(basicCreatedIssue.getKey()).claim();
    assertNotNull(createdIssue);

    assertEquals(basicCreatedIssue.getKey(), createdIssue.getKey());
    assertEquals(project.getKey(), createdIssue.getProject().getKey());
    assertEquals(issueType.getId(), createdIssue.getIssueType().getId());
View Full Code Here


  @JiraBuildNumberDependent(BN_JIRA_5)
  @Test
  public void testCreateSubtask() {
    // collect CreateIssueMetadata for project with key TST
    final IssueRestClient issueClient = client.getIssueClient();
    final Iterable<CimProject> metadataProjects = issueClient.getCreateIssueMetadata(
        new GetCreateIssueMetadataOptionsBuilder().withProjectKeys("TST").withExpandedIssueTypesFields().build()).claim();

    // select project and issue
    assertEquals(1, Iterables.size(metadataProjects));
    final CimProject project = metadataProjects.iterator().next();
    final CimIssueType issueType = findEntityByName(project.getIssueTypes(), "Sub-task");

    // grab the first component
    final Iterable<Object> allowedValuesForComponents = issueType.getField(IssueFieldId.COMPONENTS_FIELD).getAllowedValues();
    assertNotNull(allowedValuesForComponents);
    assertTrue(allowedValuesForComponents.iterator().hasNext());
    final BasicComponent component = (BasicComponent) allowedValuesForComponents.iterator().next();

    // grab the first priority
    final Iterable<Object> allowedValuesForPriority = issueType.getField(IssueFieldId.PRIORITY_FIELD).getAllowedValues();
    assertNotNull(allowedValuesForPriority);
    assertTrue(allowedValuesForPriority.iterator().hasNext());
    final BasicPriority priority = (BasicPriority) allowedValuesForPriority.iterator().next();

    // build issue input
    final String summary = "My first substask!";
    final String description = "Some description for substask";
    final BasicUser assignee = IntegrationTestUtil.USER1;
    final List<String> affectedVersionsNames = Collections.emptyList();
    final DateTime dueDate = new DateTime(new Date().getTime());
    final ArrayList<String> fixVersionsNames = Lists.newArrayList("1.1");

    // prepare IssueInput
    final IssueInputBuilder issueInputBuilder = new IssueInputBuilder(project, issueType, summary)
        .setDescription(description)
        .setAssignee(assignee)
        .setAffectedVersionsNames(affectedVersionsNames)
        .setFixVersionsNames(fixVersionsNames)
        .setComponents(component)
        .setDueDate(dueDate)
        .setPriority(priority)
        .setFieldValue("parent", ComplexIssueInputFieldValue.with("key", "TST-1"));

    // create
    final BasicIssue basicCreatedIssue = issueClient.createIssue(issueInputBuilder.build()).claim();
    assertNotNull(basicCreatedIssue.getKey());

    // get issue and check if everything was set as we expected
    final Issue createdIssue = issueClient.getIssue(basicCreatedIssue.getKey()).claim();
    assertNotNull(createdIssue);

    assertEquals(basicCreatedIssue.getKey(), createdIssue.getKey());
    assertEquals(project.getKey(), createdIssue.getProject().getKey());
    assertEquals(issueType.getId(), createdIssue.getIssueType().getId());
View Full Code Here

  @JiraBuildNumberDependent(value = BN_JIRA_6)
  @Test
  public void testCreateManySubtasksInGivenOrder() throws NoSuchFieldException, IllegalAccessException {
    // collect CreateIssueMetadata for project with key TST
    final IssueRestClient issueClient = client.getIssueClient();
    final Iterable<CimProject> metadataProjects = issueClient.getCreateIssueMetadata(
        new GetCreateIssueMetadataOptionsBuilder().withProjectKeys("TST").withExpandedIssueTypesFields().build()).claim();

    // select project and issue
    assertEquals(1, Iterables.size(metadataProjects));
    final CimProject project = metadataProjects.iterator().next();
    final CimIssueType issueType = findEntityByName(project.getIssueTypes(), "Sub-task");

    // grab the first component
    final Iterable<Object> allowedValuesForComponents = issueType.getField(IssueFieldId.COMPONENTS_FIELD).getAllowedValues();
    assertNotNull(allowedValuesForComponents);
    assertTrue(allowedValuesForComponents.iterator().hasNext());
    final BasicComponent component = (BasicComponent) allowedValuesForComponents.iterator().next();

    // grab the first priority
    final Iterable<Object> allowedValuesForPriority = issueType.getField(IssueFieldId.PRIORITY_FIELD).getAllowedValues();
    assertNotNull(allowedValuesForPriority);
    assertTrue(allowedValuesForPriority.iterator().hasNext());
    final BasicPriority priority = (BasicPriority) allowedValuesForPriority.iterator().next();

    // build issue input
    final String description = "Some description for substask";
    final BasicUser assignee = IntegrationTestUtil.USER1;
    final List<String> affectedVersionsNames = Collections.emptyList();
    final DateTime dueDate = new DateTime(new Date().getTime());
    final ArrayList<String> fixVersionsNames = Lists.newArrayList("1.1");

    final Set<String> summaries = ImmutableSet.of("Summary 1", "Summary 2", "Summary 3", "Summary 4", "Summary 5");

    // prepare IssueInput
    final List<IssueInput> issuesToCreate = Lists.newArrayList();
    for (final String summary : summaries) {

      final IssueInputBuilder issueInputBuilder =
          new IssueInputBuilder(project, issueType, summary)
              .setDescription(description)
              .setAssignee(assignee)
              .setAffectedVersionsNames(affectedVersionsNames)
              .setFixVersionsNames(fixVersionsNames)
              .setComponents(component)
              .setDueDate(dueDate)
              .setPriority(priority)
              .setFieldValue("parent", ComplexIssueInputFieldValue.with("key", "TST-1"));

      issuesToCreate.add(issueInputBuilder.build());
    }
    assertEquals(summaries.size(), issuesToCreate.size());

    // create
    final BulkOperationResult<BasicIssue> createdIssues = issueClient.createIssues(issuesToCreate).claim();
    assertEquals(summaries.size(), Iterables.size(createdIssues.getIssues()));
    assertEquals(0, Iterables.size(createdIssues.getErrors()));

    //check order
    final Set<String> createdSummariesOrder = ImmutableSet.copyOf(Iterables.transform(createdIssues
        .getIssues(), new Function<BasicIssue, String>() {
      @Override
      public String apply(final BasicIssue basicIssue) {
        return issueClient.getIssue(basicIssue.getKey()).claim().getSummary();
      }
    }));

    assertEquals(summaries, createdSummariesOrder);

    final Issue parentIssue = issueClient.getIssue("TST-1").claim();
    final Set<String> subtaskKeys = ImmutableSet.copyOf(Iterables.transform(parentIssue
        .getSubtasks(), new Function<Subtask, String>() {
      @Override
      public String apply(final Subtask subtask) {
        return subtask.getIssueKey();
      }
    }));

    for (final BasicIssue basicIssue : createdIssues.getIssues()) {

      // get issue and check if everything was set as we expected
      final Issue createdIssue = issueClient.getIssue(basicIssue.getKey()).claim();
      assertNotNull(createdIssue);

      assertEquals(basicIssue.getKey(), createdIssue.getKey());
      assertEquals(project.getKey(), createdIssue.getProject().getKey());
      assertEquals(issueType.getId(), createdIssue.getIssueType().getId());
View Full Code Here

  @JiraBuildNumberDependent(value = BN_JIRA_6)
  @Test
  public void testCreateManySubtasksInGivenOrderWithSomeFailing() throws NoSuchFieldException, IllegalAccessException {
    // collect CreateIssueMetadata for project with key TST
    final IssueRestClient issueClient = client.getIssueClient();
    final Iterable<CimProject> metadataProjects = issueClient.getCreateIssueMetadata(
        new GetCreateIssueMetadataOptionsBuilder().withProjectKeys("TST").withExpandedIssueTypesFields().build()).claim();

    // select project and issue
    assertEquals(1, Iterables.size(metadataProjects));
    final CimProject project = metadataProjects.iterator().next();
    final CimIssueType issueType = findEntityByName(project.getIssueTypes(), "Sub-task");

    // grab the first component
    final Iterable<Object> allowedValuesForComponents = issueType.getField(IssueFieldId.COMPONENTS_FIELD).getAllowedValues();
    assertNotNull(allowedValuesForComponents);
    assertTrue(allowedValuesForComponents.iterator().hasNext());
    final BasicComponent component = (BasicComponent) allowedValuesForComponents.iterator().next();

    // grab the first priority
    final Iterable<Object> allowedValuesForPriority = issueType.getField(IssueFieldId.PRIORITY_FIELD).getAllowedValues();
    assertNotNull(allowedValuesForPriority);
    assertTrue(allowedValuesForPriority.iterator().hasNext());
    final BasicPriority priority = (BasicPriority) allowedValuesForPriority.iterator().next();

    // build issue input
    final String description = "Some description for substask";
    final BasicUser assignee = IntegrationTestUtil.USER1;
    final List<String> affectedVersionsNames = Collections.emptyList();
    final DateTime dueDate = new DateTime(new Date().getTime());
    final ArrayList<String> fixVersionsNames = Lists.newArrayList("1.1");


    final Set<String> summaries = ImmutableSet.of("Summary 1","Summary 2","Summary 3","Summary 4","Summary 5");
    final Set<String> summariesWithError = ImmutableSet.of("Summary 1", "Summary 4");
    final Set<String> expectedSummariesOrder = Sets.difference(summaries, summariesWithError);

    final int issuecToCreateCount = summaries.size() - summariesWithError.size();
    final int issuesInErrorCount = summariesWithError.size();

    final List<IssueInput> issuesToCreate = Lists.newArrayList();
    // prepare IssueInput
    for (final String summary : summaries) {
      String currentProjectKey = project.getKey();
      //last issue to create will have a non existing project - to simulate creation error
      if (summariesWithError.contains(summary)) {
        currentProjectKey = "FAKE_KEY";
      }

      final IssueInputBuilder issueInputBuilder =
          new IssueInputBuilder(currentProjectKey, issueType.getId(), summary)
              .setDescription(description)
              .setAssignee(assignee)
              .setAffectedVersionsNames(affectedVersionsNames)
              .setFixVersionsNames(fixVersionsNames)
              .setComponents(component)
              .setDueDate(dueDate)
              .setPriority(priority)
              .setFieldValue("parent", ComplexIssueInputFieldValue.with("key", "TST-1"));

      issuesToCreate.add(issueInputBuilder.build());
    }
    assertEquals(summaries.size(), issuesToCreate.size());

    // create
    final BulkOperationResult<BasicIssue> createdIssues = issueClient.createIssues(issuesToCreate).claim();
    assertEquals(issuecToCreateCount, Iterables.size(createdIssues.getIssues()));
    assertEquals(issuesInErrorCount, Iterables.size(createdIssues.getErrors()));

    //check order
    final Set<String> createdSummariesOrder = ImmutableSet.copyOf(Iterables.transform(createdIssues
        .getIssues(), new Function<BasicIssue, String>() {
      @Override
      public String apply(final BasicIssue basicIssue) {
        return issueClient.getIssue(basicIssue.getKey()).claim().getSummary();
      }
    }));

    assertEquals(expectedSummariesOrder, createdSummariesOrder);

    final Issue parentIssue = issueClient.getIssue("TST-1").claim();
    final Set<String> subtaskKeys = ImmutableSet.copyOf(Iterables.transform(parentIssue
        .getSubtasks(), new Function<Subtask, String>() {
      @Override
      public String apply(Subtask subtask) {
        return subtask.getIssueKey();
      }
    }));

    for (final BasicIssue basicIssue : createdIssues.getIssues()) {

      // get issue and check if everything was set as we expected
      final Issue createdIssue = issueClient.getIssue(basicIssue.getKey()).claim();
      assertNotNull(createdIssue);

      assertEquals(basicIssue.getKey(), createdIssue.getKey());
      assertEquals(project.getKey(), createdIssue.getProject().getKey());
      assertEquals(issueType.getId(), createdIssue.getIssueType().getId());
View Full Code Here

  @JiraBuildNumberDependent(value = BN_JIRA_6)
  @Test
  public void testCreateManySubtasksInGivenOrderWithAllFailing() throws NoSuchFieldException, IllegalAccessException {
    // collect CreateIssueMetadata for project with key TST
    final IssueRestClient issueClient = client.getIssueClient();
    final Iterable<CimProject> metadataProjects = issueClient.getCreateIssueMetadata(
        new GetCreateIssueMetadataOptionsBuilder().withProjectKeys("TST").withExpandedIssueTypesFields().build()).claim();

    // select project and issue
    assertEquals(1, Iterables.size(metadataProjects));
    final CimProject project = metadataProjects.iterator().next();
    final CimIssueType issueType = findEntityByName(project.getIssueTypes(), "Sub-task");

    // grab the first component
    final Iterable<Object> allowedValuesForComponents = issueType.getField(IssueFieldId.COMPONENTS_FIELD).getAllowedValues();
    assertNotNull(allowedValuesForComponents);
    assertTrue(allowedValuesForComponents.iterator().hasNext());
    final BasicComponent component = (BasicComponent) allowedValuesForComponents.iterator().next();

    // grab the first priority
    final Iterable<Object> allowedValuesForPriority = issueType.getField(IssueFieldId.PRIORITY_FIELD).getAllowedValues();
    assertNotNull(allowedValuesForPriority);
    assertTrue(allowedValuesForPriority.iterator().hasNext());
    final BasicPriority priority = (BasicPriority) allowedValuesForPriority.iterator().next();

    // build issue input
    final String description = "Some description for substask";
    final BasicUser assignee = IntegrationTestUtil.USER1;
    final List<String> affectedVersionsNames = Collections.emptyList();
    final DateTime dueDate = new DateTime(new Date().getTime());
    final ArrayList<String> fixVersionsNames = Lists.newArrayList("1.1");

    final Set<String> summaries = ImmutableSet.of("Summary 1","Summary 2","Summary 3","Summary 4","Summary 5");
    final Set<String> summariesWithError = ImmutableSet.of("Summary 1","Summary 2","Summary 3","Summary 4","Summary 5");

    final int issuesInErrorCount = summariesWithError.size();

    final List<IssueInput> issuesToCreate = Lists.newArrayList();
    // prepare IssueInput
    for (final String summary : summaries) {
      String currentProjectKey = project.getKey();
      //last issue to create will have a non existing project - to simulate creation error
      if (summariesWithError.contains(summary)) {
        currentProjectKey = "FAKE_KEY";
      }

      final IssueInputBuilder issueInputBuilder =
          new IssueInputBuilder(currentProjectKey, issueType.getId(), summary)
              .setDescription(description)
              .setAssignee(assignee)
              .setAffectedVersionsNames(affectedVersionsNames)
              .setFixVersionsNames(fixVersionsNames)
              .setComponents(component)
              .setDueDate(dueDate)
              .setPriority(priority)
              .setFieldValue("parent", ComplexIssueInputFieldValue.with("key", "TST-1"));

      issuesToCreate.add(issueInputBuilder.build());
    }
    assertEquals(summaries.size(), issuesToCreate.size());

    // create
    try {
      issueClient.createIssues(issuesToCreate).claim();
    } catch (RestClientException ex) {
      assertEquals(issuesInErrorCount, ex.getErrorCollections().size());
      for (final ErrorCollection errorCollection : ex.getErrorCollections()) {
        assertTrue("Unexpected error messages", errorCollection.getErrorMessages().isEmpty());
        final String message = errorCollection.getErrors().get("project");
View Full Code Here

  @JiraBuildNumberDependent(BN_JIRA_5)
  @Test
  public void testCreateIssueWithOnlyRequiredFields() {
    // collect CreateIssueMetadata for project with key TST
    final IssueRestClient issueClient = client.getIssueClient();
    final Iterable<CimProject> metadataProjects = issueClient.getCreateIssueMetadata(
        new GetCreateIssueMetadataOptionsBuilder().withProjectKeys("TST").withExpandedIssueTypesFields().build()).claim();

    // select project and issue
    assertEquals(1, Iterables.size(metadataProjects));
    final CimProject project = metadataProjects.iterator().next();
    final CimIssueType issueType = findEntityByName(project.getIssueTypes(), "Bug");

    // build issue input
    final String summary = "My new issue!";

    // create
    final IssueInput issueInput = new IssueInputBuilder(project, issueType, summary).build();
    final BasicIssue basicCreatedIssue = issueClient.createIssue(issueInput).claim();
    assertNotNull(basicCreatedIssue.getKey());

    // get issue and check if everything was set as we expected
    final Issue createdIssue = issueClient.getIssue(basicCreatedIssue.getKey()).claim();
    assertNotNull(createdIssue);

    assertEquals(basicCreatedIssue.getKey(), createdIssue.getKey());
    assertEquals(project.getKey(), createdIssue.getProject().getKey());
    assertEquals(issueType.getId(), createdIssue.getIssueType().getId());
View Full Code Here

  }

  @JiraBuildNumberDependent(BN_JIRA_5)
  @Test
  public void testCreateIssueWithoutSummary() {
    final IssueRestClient issueClient = client.getIssueClient();

    thrown.expect(RestClientException.class);
    thrown.expectMessage("You must specify a summary of the issue.");

    final IssueInput issueInput = new IssueInputBuilder("TST", 1L).build();
    issueClient.createIssue(issueInput).claim();
  }
View Full Code Here

        .getUsers(), hasItem(IntegrationTestUtil.USER1));
  }

  @Test
  public void testRemoveWatcherUnauthorized() {
    final IssueRestClient issueClient = client.getIssueClient();
    final Issue issue1 = issueClient.getIssue("TST-1").claim();
    issueClient.watch(issue1.getWatchers().getSelf()).claim();

    setUser1();
    final IssueRestClient issueClient2 = client.getIssueClient();
    assertErrorCode(Response.Status.UNAUTHORIZED,
        "User 'wseliga' is not allowed to remove watchers from issue 'TST-1'", new Runnable() {
      @Override
      public void run() {
        issueClient2.removeWatcher(issue1.getWatchers().getSelf(), ADMIN_USERNAME).claim();
      }
    });
  }
View Full Code Here


  @Test
  public void testWatchAlreadyWatched() {
    setUser1();
    final IssueRestClient issueClient = client.getIssueClient();
    final Issue issue = issueClient.getIssue("TST-1").claim();
    Assert.assertThat(client.getIssueClient().getWatchers(issue.getWatchers().getSelf()).claim()
        .getUsers(), hasItem(IntegrationTestUtil.USER1));
    // JIRA allows to watch already watched issue by you - such action effectively has no effect
    issueClient.watch(issue.getWatchers().getSelf()).claim();
    Assert.assertThat(client.getIssueClient().getWatchers(issue.getWatchers().getSelf()).claim()
        .getUsers(), hasItem(IntegrationTestUtil.USER1));
  }
View Full Code Here

        .getUsers(), hasItem(IntegrationTestUtil.USER1));
  }

  @Test
  public void testAddWatcherUnauthorized() {
    final IssueRestClient issueClient = client.getIssueClient();
    final Issue issue1 = issueClient.getIssue("TST-1").claim();
    issueClient.addWatcher(issue1.getWatchers().getSelf(), USER1_USERNAME).claim();
    assertThat(client.getIssueClient().getWatchers(issue1.getWatchers().getSelf()).claim()
        .getUsers(), hasItem(IntegrationTestUtil.USER1));

    setUser1();
    assertTrue(client.getIssueClient().getIssue("TST-1").claim().getWatchers().isWatching());
View Full Code Here

TOP

Related Classes of com.atlassian.jira.rest.client.api.IssueRestClient

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.