Esempio n. 1
0
 @Test(priority = 4, dataProvider = "dataProviderForMusicBlog")
 public void musicBlogTest(TestParameters testParams)
     throws UnsupportedEncodingException, InterruptedException, MalformedURLException {
   if (m1 == null || m1.size() == 0) throw new SkipException("Map is empty");
   String URL = "http://one.airtel.in/iportal?dg=5&lang=en";
   BaseUtil.launchUrl(URL, false);
   // BaseUtil.scrollingToBottomofAPage();
   By locater =
       By.xpath(
           "//div[@id='paginateOuter']//div[@class='cardOuter']/article[contains(@class,'card music-card')]//div[@class='add-on']//p[@class='link']/a[contains(.,'Listen Now')]");
   while (!BaseUtil.checkIfElementPresent(locater, 1)) {
     BaseUtil.scrollingToBottomofAPage();
   }
   BaseUtil.scrollingToElementofAPage(locater);
   // WebElement elem = BaseUtil.getElementWhenClickable(locater);
   WebElement elemButton = BaseUtil.getElementWhenVisible(locater);
   String whole = BaseUtil.getText(elemButton).trim();
   String ButtonURL = BaseUtil.getAttribute(elemButton, "onclick");
   System.out.println("News URL:\t" + ButtonURL);
   System.out.println("BlogText:\t" + whole);
   By locater1 =
       By.xpath(
           "//div[@id='paginateOuter']//div[@class='cardOuter']/article[contains(@class,'card music-card')]//div[@class='add-on']//p[@class='text']");
   WebElement elemText = BaseUtil.getElementWhenVisible(locater1);
   String wholeTitle = BaseUtil.getText(elemText).trim();
   System.out.println("BlogTitle:\t" + wholeTitle);
   elemButton.click();
   Pattern pattern = Pattern.compile(".*'([^']*)'.*");
   Matcher matcher = pattern.matcher(ButtonURL);
   String p2 = "";
   if (matcher.matches()) {
     String url = matcher.group(1);
     URL url1 = new URL(url);
     String query = url1.getQuery();
     // Decode two time query url
     String p1 = URLDecoder.decode(query, "UTF-8");
     p2 = URLDecoder.decode(p1, "UTF-8");
     System.out.println("BlogUrl==>" + p2);
   }
   Reporter.log("Verify POD Blog url with the api result", m1.get(wholeTitle), p2, "Pass");
   Assert.assertEquals(
       p2.trim().contains(m1.get(wholeTitle)), true, "Verify POD Blog url with the api result");
   BaseUtil.browserBackButton();
 }
Esempio n. 2
0
 @Test(priority = 3, dataProvider = "dataProviderForMusicViewAll")
 public void musicViewALLTest(TestParameters testParams)
     throws UnsupportedEncodingException, InterruptedException, MalformedURLException {
   String URL = "http://one.airtel.in/iportal?dg=5&lang=en";
   BaseUtil.launchUrl(URL, false);
   // BaseUtil.scrollingToBottomofAPage();
   By locater =
       By.xpath(
           "//div[@class='cardOuter']/article[contains(@class,'card music-card')]//div[@class='heading']/span[@class='view-all' and contains(.,'View All')]/a");
   while (!BaseUtil.checkIfElementPresent(locater, 1)) {
     BaseUtil.scrollingToBottomofAPage();
   }
   BaseUtil.scrollingToElementofAPage(locater);
   // WebElement elem = BaseUtil.getElementWhenClickable(locater);
   WebElement elemheading = BaseUtil.getElementWhenVisible(locater);
   String whole = BaseUtil.getText(elemheading).trim();
   String HeadingURL = BaseUtil.getAttribute(elemheading, "onclick");
   System.out.println("News URL:\t" + HeadingURL);
   System.out.println("BlogText:\t" + whole);
   elemheading.click();
   Pattern pattern = Pattern.compile(".*'([^']*)'.*");
   Matcher matcher = pattern.matcher(HeadingURL);
   String p2 = "";
   if (matcher.matches()) {
     String url = matcher.group(1);
     URL url1 = new URL(url);
     String query = url1.getQuery();
     // Decode two time query url
     String p1 = URLDecoder.decode(query, "UTF-8");
     p2 = URLDecoder.decode(p1, "UTF-8");
     System.out.println("BlogUrl==>" + p2);
   }
   Reporter.log("Verify POD Blog url with the api result", externalLinkUrl, p2, "Pass");
   Assert.assertEquals(
       p2.trim().contains(externalLinkUrl), true, "Verify POD Blog url with the api result");
   BaseUtil.browserBackButton();
 }
  /**
   * 入口
   *
   * @return
   */
  public String execute() throws Exception {
    // 判服务名称不为空
    if (StringUtils.isBlank(merchantCode) || StringUtils.isBlank(orderNo)) {
      // 组织失败结果
      write(createFailResponse("商户号或者订单号不能为空!"));
      return null;
    }

    // 验证签名
    String preMd5Str =
        merchantCode
            + orderNo
            + PropertyUtil.getInstance().getProperty(BaseInterface.MD5_KEY_WITH_BACK);
    String generateSign = new MD5Util().md5(preMd5Str);
    if (!StringUtils.equalsIgnoreCase(sign, generateSign)) {
      // 组织失败结果
      write(createFailResponse("签名验证失败!"));
      return null;
    }

    PayRecord payRecord = payRecordService.getPayRecord(merchantCode, orderNo);
    if (payRecord == null) { // 记录不存在
      // 组织失败结果
      write(createFailResponse("记录不存在!"));
      return null;
    } else { // 记录存在 不判状态,强制查询
      // 分发处理器 向银行发起查询
      ISingleTradeQueryResolver singleTradeQueryResolver =
          SingleTradeQueryResolverDispatcher.dispatch();
      // 查询交易
      SingleTradeQueryResult singleTradeQueryResult = singleTradeQueryResolver.query(payRecord);
      // 判断查询结果
      if (!singleTradeQueryResult.isQuerySuccess()) { // 查询失败
        write(createFailResponse("查询银行返回异常发生!"));
        return null;
      } else { // 查询成功
        // 定义查询返回结果
        int queryPayState;
        String tradeDateTime;
        String tradeBankSeq;
        // 判交易存在
        if (!singleTradeQueryResult.isExist()) { // 不存在
          queryPayState = PayRecordInterface.STATE_FAILED;
          tradeDateTime = StringUtils.EMPTY;
          tradeBankSeq = StringUtils.EMPTY;
        } else { // 存在
          queryPayState = singleTradeQueryResult.getTradeState();
          tradeDateTime = singleTradeQueryResult.getTradeDateTime();
          tradeBankSeq = singleTradeQueryResult.getTradeBankSeq();
        }
        // 由于查询交易消耗时间 重新查询最新的支付记录
        payRecord = payRecordService.getPayRecordByTradeNo(payRecord.getTradeNo());
        // 查询前老的状态
        int oldTradeState = payRecord.getTradeState();
        // 为支付状态判优先级 优先则需要修改
        boolean needUpdate =
            BaseUtil.comparePriorityForPayState(queryPayState, payRecord.getTradeState());
        if (!needUpdate && (queryPayState != payRecord.getTradeState())) {
          // 这里比较只为记录下,不需要修改但是又强制修改了的数据,而且前后状态不一致的,log记录异常:
          logger.error("_FORCE_UPDATE_NOT_NEED_UPDATE_PAY_RECORD_->" + payRecord.toString());
        }
        /** 修改最新交易状态(不比较状态优先级,强制修改记录,以银行返回状态为准) */
        payRecord.setTradeState(queryPayState);
        payRecord.setTradeDateTime(tradeDateTime);
        payRecord.setTradeBankSeq(tradeBankSeq);
        payRecord.setTradeDesc(BaseUtil.translatePayRecordStateDesc(queryPayState));
        payRecord.setUpdateDate(DateUtil.getNowDate());
        payRecord.setUpdateTime(DateUtil.getNowTime());
        payRecord.setUpdateIp(IPAddressUtil.getIPAddress(request));
        // 银行返回交易状态【强制】修改支付记录
        payRecordService.forceUpdateTradeState(payRecord);
        tradeDateTime = payRecord.getTradeDateTime();
        if (StringUtils.isBlank(tradeDateTime)) {
          tradeDateTime = payRecord.getCreateDate() + payRecord.getCreateTime();
        }
        // 组织成功结果
        write(
            createSuccessResponse(
                oldTradeState,
                payRecord.getTradeState(),
                StringUtils.trimToEmpty(payRecord.getTradeDesc())));
        return null;
      }
    }
  }