@Test
  public void testFindPetsByTags() throws Exception {
    Pet pet = createRandomPet();
    pet.setName("monster");
    pet.setStatus(Pet.StatusEnum.AVAILABLE);

    List<Tag> tags = new ArrayList<Tag>();
    Tag tag1 = new Tag();
    tag1.setName("friendly");
    tags.add(tag1);
    pet.setTags(tags);

    api.updatePet(pet);

    List<Pet> pets = api.findPetsByTags(Arrays.asList(new String[] {"friendly"}));
    assertNotNull(pets);

    boolean found = false;
    for (Pet fetched : pets) {
      if (fetched.getId().equals(pet.getId())) {
        found = true;
        break;
      }
    }
    assertTrue(found);
  }
  @Test
  public void testCreateAndGetPet() throws Exception {
    Pet pet = createRandomPet();
    api.addPet(pet);

    Pet fetched = api.getPetById(pet.getId());
    assertNotNull(fetched);
    assertEquals(pet.getId(), fetched.getId());
    assertNotNull(fetched.getCategory());
    assertEquals(fetched.getCategory().getName(), pet.getCategory().getName());
  }
  @Test
  public void testUploadFile() throws Exception {
    Pet pet = createRandomPet();
    api.addPet(pet);

    File file = new File("hello.txt");
    BufferedWriter writer = new BufferedWriter(new FileWriter(file));
    writer.write("Hello world!");
    writer.close();

    api.uploadFile(pet.getId(), "a test file", new File(file.getAbsolutePath()));
  }
  @Test
  public void testUpdatePetWithForm() throws Exception {
    Pet pet = createRandomPet();
    pet.setName("frank");
    api.addPet(pet);

    Pet fetched = api.getPetById(pet.getId());

    api.updatePetWithForm(fetched.getId(), "furt", null);
    Pet updated = api.getPetById(fetched.getId());

    assertEquals(updated.getName(), "furt");
  }
  @Test
  public void testUpdatePet() throws Exception {
    Pet pet = createRandomPet();
    pet.setName("programmer");

    api.updatePet(pet);

    Pet fetched = api.getPetById(pet.getId());
    assertNotNull(fetched);
    assertEquals(pet.getId(), fetched.getId());
    assertNotNull(fetched.getCategory());
    assertEquals(fetched.getCategory().getName(), pet.getCategory().getName());
  }
  @Test
  public void testDeletePet() throws Exception {
    Pet pet = createRandomPet();
    api.addPet(pet);

    Pet fetched = api.getPetById(pet.getId());
    api.deletePet(fetched.getId(), null);

    try {
      fetched = api.getPetById(fetched.getId());
      fail("expected an error");
    } catch (ApiException e) {
      assertEquals(404, e.getCode());
    }
  }
 @Before
 public void setup() {
   api = new PetApi();
   // setup authentication
   ApiKeyAuth apiKeyAuth = (ApiKeyAuth) api.getApiClient().getAuthentication("api_key");
   apiKeyAuth.setApiKey("special-key");
 }
  @Test
  public void testFindPetsByStatus() throws Exception {
    Pet pet = createRandomPet();
    pet.setName("programmer");
    pet.setStatus(Pet.StatusEnum.AVAILABLE);

    api.updatePet(pet);

    List<Pet> pets = api.findPetsByStatus(Arrays.asList(new String[] {"available"}));
    assertNotNull(pets);

    boolean found = false;
    for (Pet fetched : pets) {
      if (fetched.getId().equals(pet.getId())) {
        found = true;
        break;
      }
    }

    assertTrue(found);
  }
  @Test
  public void testApiClient() {
    // the default api client is used
    assertEquals(Configuration.getDefaultApiClient(), api.getApiClient());
    assertNotNull(api.getApiClient());
    assertEquals("http://petstore.swagger.io/v2", api.getApiClient().getBasePath());
    assertFalse(api.getApiClient().isDebugging());

    ApiClient oldClient = api.getApiClient();

    ApiClient newClient = new ApiClient();
    newClient.setBasePath("http://example.com");
    newClient.setDebugging(true);

    // set api client via constructor
    api = new PetApi(newClient);
    assertNotNull(api.getApiClient());
    assertEquals("http://example.com", api.getApiClient().getBasePath());
    assertTrue(api.getApiClient().isDebugging());

    // set api client via setter method
    api.setApiClient(oldClient);
    assertNotNull(api.getApiClient());
    assertEquals("http://petstore.swagger.io/v2", api.getApiClient().getBasePath());
    assertFalse(api.getApiClient().isDebugging());
  }