Package com.google.api.adwords.lib

Source Code of com.google.api.adwords.lib.AdWordsV200909SmokeTest

// Copyright 2010 Google Inc. All Rights Reserved.
//
// 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 com.google.api.adwords.lib;

import com.google.api.adwords.lib.utils.DataUtils;
import com.google.api.adwords.v13.AccountInterface;
import com.google.api.adwords.v200909.cm.AdGroup;
import com.google.api.adwords.v200909.cm.AdGroupAd;
import com.google.api.adwords.v200909.cm.AdGroupAdOperation;
import com.google.api.adwords.v200909.cm.AdGroupAdServiceInterface;
import com.google.api.adwords.v200909.cm.AdGroupCriterionOperation;
import com.google.api.adwords.v200909.cm.AdGroupCriterionServiceInterface;
import com.google.api.adwords.v200909.cm.AdGroupOperation;
import com.google.api.adwords.v200909.cm.AdGroupPage;
import com.google.api.adwords.v200909.cm.AdGroupReturnValue;
import com.google.api.adwords.v200909.cm.AdGroupSelector;
import com.google.api.adwords.v200909.cm.AdGroupServiceInterface;
import com.google.api.adwords.v200909.cm.ApiException;
import com.google.api.adwords.v200909.cm.Bid;
import com.google.api.adwords.v200909.cm.BiddableAdGroupCriterion;
import com.google.api.adwords.v200909.cm.Budget;
import com.google.api.adwords.v200909.cm.BudgetBudgetDeliveryMethod;
import com.google.api.adwords.v200909.cm.BudgetBudgetPeriod;
import com.google.api.adwords.v200909.cm.Campaign;
import com.google.api.adwords.v200909.cm.CampaignCriterionOperation;
import com.google.api.adwords.v200909.cm.CampaignCriterionServiceInterface;
import com.google.api.adwords.v200909.cm.CampaignOperation;
import com.google.api.adwords.v200909.cm.CampaignReturnValue;
import com.google.api.adwords.v200909.cm.CampaignSelector;
import com.google.api.adwords.v200909.cm.CampaignServiceInterface;
import com.google.api.adwords.v200909.cm.CampaignStatus;
import com.google.api.adwords.v200909.cm.CampaignTargetOperation;
import com.google.api.adwords.v200909.cm.CampaignTargetServiceInterface;
import com.google.api.adwords.v200909.cm.Image;
import com.google.api.adwords.v200909.cm.ImageAd;
import com.google.api.adwords.v200909.cm.Keyword;
import com.google.api.adwords.v200909.cm.KeywordMatchType;
import com.google.api.adwords.v200909.cm.ManualCPC;
import com.google.api.adwords.v200909.cm.ManualCPCAdGroupBids;
import com.google.api.adwords.v200909.cm.Money;
import com.google.api.adwords.v200909.cm.NegativeCampaignCriterion;
import com.google.api.adwords.v200909.cm.NetworkCoverageType;
import com.google.api.adwords.v200909.cm.NetworkTarget;
import com.google.api.adwords.v200909.cm.NetworkTargetList;
import com.google.api.adwords.v200909.cm.Operator;
import com.google.api.adwords.v200909.cm.Placement;
import com.google.api.adwords.v200909.cm.TextAd;

import junit.framework.TestCase;

import java.io.IOException;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Random;

import javax.xml.rpc.ServiceException;

/**
* Smoke tests the v200909 version of AdWords API. The credentials are taken
* from "test_data/test.properties".
*
* @author api.arogal@gmail.com (Adam Rogal)
*/
public class AdWordsV200909SmokeTest extends TestCase {
  private AdWordsUser testUser;
  private AdGroupAdServiceInterface adGroupAdService;
  private AdGroupCriterionServiceInterface adGrouCriterionService;
  private AdGroupServiceInterface adGroupService;
  private CampaignCriterionServiceInterface campaignCriterionService;
  private CampaignServiceInterface campaignService;
  private CampaignTargetServiceInterface campaignTargetService;

  /**
   * Run before each test.
   */
  @Override
  protected void setUp() throws Exception {
    super.setUp();
    testUser = new AdWordsUser("test_data/test.properties");

    String server = "https://adwords-sandbox.google.com";

    adGroupAdService = testUser.getService(AdWordsService.V200909.ADGROUP_AD_SERVICE, server);
    adGrouCriterionService =
        testUser.getService(AdWordsService.V200909.ADGROUP_CRITERION_SERVICE, server);
    adGroupService = testUser.getService(AdWordsService.V200909.ADGROUP_SERVICE, server);
    campaignCriterionService =
        testUser.getService(AdWordsService.V200909.CAMPAIGN_CRITERION_SERVICE, server);
    campaignService = testUser.getService(AdWordsService.V200909.CAMPAIGN_SERVICE, server);
    campaignTargetService =
        testUser.getService(AdWordsService.V200909.CAMPAIGN_TARGET_SERVICE, server);
  }

  /**
   * Tests logging in with incorrect credentials.
   */
  public void testBadLogin() throws ApiException, RemoteException {
    AdWordsUser user = new AdWordsUser("test@gmail.com", "test",
        "client_1+test@gmail.com", "user-agent",
        "incorrect developer token", "any app token", true);

    try {
      ((CampaignServiceInterface) user.getService(
          AdWordsService.V200909.CAMPAIGN_SERVICE)).get(new CampaignSelector(null, null, null, null));
    } catch (ServiceException e) {
      assertEquals(e.getMessage(), "Could not get ClientLogin token for user.");
    }

      campaignService.get(new CampaignSelector(null, null, null, null));

  }

  /**
   * A smoke test to ensure that objects can be created and updated correctly.
   */
  public void testCampaignAdGroupAdCriterionCreation() throws ServiceException, IOException {
    ((AccountInterface) testUser.generateClientAdWordsUser(null).getService(
        AdWordsService.V13.ACCOUNT_SERVICE)).getClientAccounts();

    Random generator = new Random();

    int numCamp = generator.nextInt(4) + 1;
    for (int i = 0; i < numCamp; i++) {
      Campaign campaign = new Campaign();
      campaign.setBudget(new Budget(BudgetBudgetPeriod.DAILY, new Money("USD", 1000000L),
          BudgetBudgetDeliveryMethod.STANDARD));
      campaign.setStatus(CampaignStatus.PAUSED);
      campaign.setBiddingStrategy(new ManualCPC());
      CampaignReturnValue crv =
          campaignService.mutate(new CampaignOperation[] {new CampaignOperation(Operator.ADD, null,
              null, campaign)});
      campaign = crv.getValue()[0];


      campaignTargetService.mutate(new CampaignTargetOperation[] {new CampaignTargetOperation(
          Operator.SET, null, new NetworkTargetList(campaign.getId(), null,
              new NetworkTarget[] {new NetworkTarget(null, NetworkCoverageType.GOOGLE_SEARCH)}))});

      NegativeCampaignCriterion negativeCampaignCriterion = new NegativeCampaignCriterion();
      negativeCampaignCriterion.setCampaignId(campaign.getId());
      negativeCampaignCriterion.setCriterion(new Placement(null, null, "http://example.com/"));

      CampaignCriterionOperation operation = new CampaignCriterionOperation();
      operation.setOperator(Operator.ADD);
      operation.setOperand(negativeCampaignCriterion);

      campaignCriterionService.mutate(new CampaignCriterionOperation[] {operation});

      int numAdGrp = generator.nextInt(6) + 1;
      for (int j = 0; j < numAdGrp; j++) {
        AdGroupPage adGroupPage =
            adGroupService.get(new AdGroupSelector(campaign.getId(), null, null, null));
        AdGroup[] adGroups = adGroupPage.getEntries();
        AdGroup adGroup = null;
        if (adGroups != null && j < adGroups.length) {
          adGroup = adGroups[j];
        } else {
          adGroup = new AdGroup();
          adGroup.setName("AdGroup " + (j + 1));
          adGroup.setBids(new ManualCPCAdGroupBids(null, new Bid(new Money("USD",
              generator.nextInt(10) * 50000L + 50000L)), null, null));
          adGroup.setCampaignId(campaign.getId());

          AdGroupReturnValue adGroupReturnValue =
              adGroupService.mutate(new AdGroupOperation[] {new AdGroupOperation(Operator.ADD,
                  null, adGroup)});
          adGroup = adGroupReturnValue.getValue()[0];
        }

        int numAds = generator.nextInt(10) + 1;
        for (int k = 0; k < numAds; k++) {
          TextAd ad = new TextAd();
          ad.setDescription1("This is the description");
          ad.setDescription2("Second line of the description");
          ad.setHeadline("This is the headline " + generator.nextInt(5000));
          ad.setDisplayUrl("http://google.com/");
          ad.setUrl("http://example.com");

          AdGroupAd adGroupAd = new AdGroupAd();
          adGroupAd.setAd(ad);
          adGroupAd.setAdGroupId(adGroup.getId());

          adGroupAdService.mutate(new AdGroupAdOperation[] {new AdGroupAdOperation(Operator.ADD,
              "ADD", adGroupAd, null)});
        }

        numAds = generator.nextInt(10) + 1;
        for (int k = 0; k < numAds; k++) {
          ImageAd ad = new ImageAd();
          Image image = new Image();
          image.setData(DataUtils.getTestImage());
          image.setName("name.jpg");
          ad.setImage(image);
          ad.setDisplayUrl("http://google.com/");
          ad.setUrl("http://example.com");
          ad.setName("name.jpg");

          AdGroupAd adGroupAd = new AdGroupAd();
          adGroupAd.setAd(ad);
          adGroupAd.setAdGroupId(adGroup.getId());

          adGroupAdService.mutate(new AdGroupAdOperation[] {new AdGroupAdOperation(Operator.ADD,
              "ADD", adGroupAd, null)});
        }

        ArrayList<AdGroupCriterionOperation> criteriaOps =
            new ArrayList<AdGroupCriterionOperation>();

        int numKeywords = generator.nextInt(10) + 1;
        for (int k = 0; k < numKeywords; k++) {
          Keyword keyword = new Keyword();
          keyword.setText("test" + generator.nextInt(5000));
          keyword.setMatchType(KeywordMatchType.PHRASE);

          BiddableAdGroupCriterion criterion = new BiddableAdGroupCriterion();
          criterion.setAdGroupId(adGroup.getId());
          criterion.setCriterion(keyword);

          criteriaOps.add(new AdGroupCriterionOperation(Operator.ADD, "ADD", criterion, null));
        }

        adGrouCriterionService.mutate(criteriaOps.toArray(new AdGroupCriterionOperation[] {}));
      }
    }
  }
}
TOP

Related Classes of com.google.api.adwords.lib.AdWordsV200909SmokeTest

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.