Package de.bitzeche.video.transcoding.zencoder.test

Source Code of de.bitzeche.video.transcoding.zencoder.test.ZencoderClientTest$ApiVersionProvider

/**
* Copyright (C) 2013 Bitzeche GmbH <info@bitzeche.de>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*         http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package de.bitzeche.video.transcoding.zencoder.test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.SimpleHttpConnectionManager;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

import com.sun.jersey.client.apache.ApacheHttpClient;
import com.sun.jersey.client.apache.ApacheHttpClientHandler;
import com.sun.jersey.client.apache.config.DefaultApacheHttpClientConfig;

import de.bitzeche.video.transcoding.zencoder.IZencoderClient;
import de.bitzeche.video.transcoding.zencoder.ZencoderClient;
import de.bitzeche.video.transcoding.zencoder.enums.ZencoderAPIVersion;
import de.bitzeche.video.transcoding.zencoder.enums.ZencoderDenoiseFilter;
import de.bitzeche.video.transcoding.zencoder.enums.ZencoderRegion;
import de.bitzeche.video.transcoding.zencoder.enums.ZencoderS3AccessControlRight;
import de.bitzeche.video.transcoding.zencoder.job.ZencoderJob;
import de.bitzeche.video.transcoding.zencoder.job.ZencoderNotification;
import de.bitzeche.video.transcoding.zencoder.job.ZencoderOutput;
import de.bitzeche.video.transcoding.zencoder.job.ZencoderS3AccessControlItem;
import de.bitzeche.video.transcoding.zencoder.job.ZencoderThumbnail;
import de.bitzeche.video.transcoding.zencoder.job.ZencoderWatermark;
import de.bitzeche.video.transcoding.zencoder.response.ZencoderErrorResponseException;

public class ZencoderClientTest {

  private static String API_KEY = "6ff283d80d91b0b6221d6c19d47fc7a0";
  private static final ZencoderRegion ZENCODER_REGION = ZencoderRegion.EUROPE;
  private static final String TEST_VIDEO_URL = "http://ca.bitzeche.de/big_buck_bunny_720p_h264.mov";
  Map<ZencoderAPIVersion, Integer> jobMap = new HashMap<ZencoderAPIVersion, Integer>();

  public ZencoderClientTest() {
    if ("".equals(API_KEY)) {
      throw new IllegalArgumentException(
          "We need an API key to run these tests");
    }
  }

  public IZencoderClient createClient(ZencoderAPIVersion apiVersion) {
    ZencoderClient zencoderClient = new ZencoderClient(API_KEY, apiVersion);
    HttpClient client = new HttpClient(new SimpleHttpConnectionManager());
    ApacheHttpClientHandler apacheHttpClientHandler = new ApacheHttpClientHandler(
        client, new DefaultApacheHttpClientConfig());
    ApacheHttpClient httpClient = new ApacheHttpClient(
        apacheHttpClientHandler);
    zencoderClient.setHttpClient(httpClient);

    return zencoderClient;
  }

  @Test(dataProvider = "ApiVersionDS")
  public void constructor(ApiVersionProvider provider) {
    createClient(provider.getApiVersion());
  }

  @Test
  public void createJobAndCheckXML() {

    ZencoderWatermark watermark = new ZencoderWatermark("http://url/");
    ZencoderWatermark watermark2 = new ZencoderWatermark("http://url/");
    ZencoderNotification notif = new ZencoderNotification("test@test.de");
    ZencoderNotification notif2 = new ZencoderNotification("test2@test.de");
    ZencoderThumbnail thumb = new ZencoderThumbnail();
    thumb.setInterval(10);
    List<ZencoderS3AccessControlRight> rights = new ArrayList<ZencoderS3AccessControlRight>();
    rights.add(ZencoderS3AccessControlRight.FULL_CONTROL);
    rights.add(ZencoderS3AccessControlRight.READ);
    ZencoderS3AccessControlItem s3 = new ZencoderS3AccessControlItem(
        "test", rights);
    thumb.addAcl(s3);
    ZencoderOutput out = new ZencoderOutput("test", "se://test/");
    ZencoderOutput out2 = new ZencoderOutput("test2", "se://test2/");
    out.addAcl(s3);
    out.addNotification(notif);
    out.addNotification(notif2);
    out.addWatermark(watermark);
    out.addWatermark(watermark2);

    out2.setDeblock(true);
    out2.setAutolevel(true);
    out2.setDenoise(ZencoderDenoiseFilter.WEAK);
    ZencoderJob job = new ZencoderJob("http://test4/");
    job.addOutput(out);
    job.addOutput(out2);
    job.setPrivate(true);

    String doc = StringUtil.stripSpacesAndLineBreaksFrom(job);
    String expected = "<?xmlversion=\"1.0\"encoding=\"UTF-8\"?><api-request><input>http://test4/</input><download_connections>5</download_connections><test>0</test><private>1</private><outputstype=\"array\"><output><label>test</label><url>se://test/</url><speed>4</speed><public>0</public><video_codec>h264</video_codec><upscale>0</upscale><deinterlace>detect</deinterlace><skip_video>0</skip_video><deblock>0</deblock><autolevel>0</autolevel><audio_codec>aac</audio_codec><skip_audio>0</skip_audio><watermarkstype=\"array\"><watermark><url>http://url/</url><x>-10</x><y>-10</y></watermark><watermark><url>http://url/</url><x>-10</x><y>-10</y></watermark></watermarks><access-controls><access_control><grantee>test</grantee><permissions><permission>FULL_CONTROL</permission><permission>READ</permission></permissions></access_control></access-controls><notificationstype=\"array\"><notification><url>test@test.de</url></notification><notification><url>test2@test.de</url></notification></notifications></output><output><label>test2</label><url>se://test2/</url><speed>4</speed><public>0</public><video_codec>h264</video_codec><upscale>0</upscale><deinterlace>detect</deinterlace><skip_video>0</skip_video><denoise>weak</denoise><deblock>1</deblock><autolevel>1</autolevel><audio_codec>aac</audio_codec><skip_audio>0</skip_audio></output></outputs></api-request>";
    // System.out.println(doc);
    Assert.assertEquals(doc, expected);
  }

  @Test(dataProvider = "ApiVersionDS")
  public void createAndCancelJobTest(ApiVersionProvider provider)
      throws ZencoderErrorResponseException {

    ZencoderAPIVersion apiVersion = provider.getApiVersion();
    IZencoderClient client = createClient(apiVersion);
    ZencoderJob job = new ZencoderJob(TEST_VIDEO_URL);
    job.setZencoderRegion(ZENCODER_REGION);
    job.setTest(true);

    client.createJob(job);
    int jobId = job.getJobId();
    Assert.assertTrue(jobId >= 0);

    jobMap.put(apiVersion, jobId);

    boolean canceled = client.cancelJob(job);
    Assert.assertTrue(canceled);
  }

  @Test(dataProvider = "ApiVersionDS", expectedExceptions = ZencoderErrorResponseException.class)
  public void createJobAndProduceErrorWithMalformedVideoURL(
      ApiVersionProvider provider) throws ZencoderErrorResponseException {
    ZencoderAPIVersion apiVersion = provider.getApiVersion();
    IZencoderClient client = createClient(apiVersion);
    ZencoderJob job = new ZencoderJob("s" + TEST_VIDEO_URL);
    job.setZencoderRegion(ZENCODER_REGION);
    job.setTest(true);

    client.createJob(job);
  }

  @Test(dataProvider = "ApiVersionDS", dependsOnMethods = "createAndCancelJobTest")
  public void resubmitAndCancelJobTest(ApiVersionProvider provider) {

    ZencoderAPIVersion apiVersion = provider.getApiVersion();
    IZencoderClient client = createClient(apiVersion);
    ZencoderJob job = new ZencoderJob("");
    job.setJobId(jobMap.get(apiVersion));

    boolean resubmitted = client.resubmitJob(job);

    Assert.assertTrue(resubmitted);

    boolean canceled = client.cancelJob(job);
    Assert.assertTrue(canceled);
  }

  @Test(dataProvider = "ApiVersionDS", dependsOnMethods = "resubmitAndCancelJobTest")
  public void deleteTest(ApiVersionProvider provider) {
    ZencoderAPIVersion apiVersion = provider.getApiVersion();
    IZencoderClient client = createClient(apiVersion);
    ZencoderJob job = new ZencoderJob("");
    job.setJobId(jobMap.get(apiVersion));
    client.deleteJob(job);
  }

  abstract class ApiVersionProvider {
    public ZencoderAPIVersion getApiVersion() {
      return null;
    }
  }

  @DataProvider(name = "ApiVersionDS")
  public Object[][] getApiVersion() {
    return new Object[][] { new Object[] { new ApiVersionProvider() {
      @Override
      public ZencoderAPIVersion getApiVersion() {
        return ZencoderAPIVersion.API_V1;
      }
    } }, new Object[] { new ApiVersionProvider() {
      @Override
      public ZencoderAPIVersion getApiVersion() {
        return ZencoderAPIVersion.API_V2;
      }
    } }, new Object[] { new ApiVersionProvider() {
      @Override
      public ZencoderAPIVersion getApiVersion() {
        return ZencoderAPIVersion.API_DEV;
      }
    } } };
  }
}
TOP

Related Classes of de.bitzeche.video.transcoding.zencoder.test.ZencoderClientTest$ApiVersionProvider

TOP
Copyright © 2018 www.massapi.com. 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.