content: package com.alipay.easysdk.marketing.openlife;
  
  import com.alipay.easysdk.TestAccount;
  import com.alipay.easysdk.factory.Factory;
  import com.alipay.easysdk.factory.Factory.Marketing;
  import com.alipay.easysdk.kernel.util.ResponseChecker;
  import com.alipay.easysdk.marketing.openlife.models.AlipayOpenPublicLifeMsgRecallResponse;
  import com.alipay.easysdk.marketing.openlife.models.AlipayOpenPublicMessageContentCreateResponse;
  import com.alipay.easysdk.marketing.openlife.models.AlipayOpenPublicMessageContentModifyResponse;
  import com.alipay.easysdk.marketing.openlife.models.AlipayOpenPublicMessageSingleSendResponse;
  import com.alipay.easysdk.marketing.openlife.models.AlipayOpenPublicMessageTotalSendResponse;
  import com.alipay.easysdk.marketing.openlife.models.AlipayOpenPublicSettingCategoryQueryResponse;
  import com.alipay.easysdk.marketing.openlife.models.AlipayOpenPublicTemplateMessageIndustryModifyResponse;
  import com.alipay.easysdk.marketing.openlife.models.Article;
  import com.alipay.easysdk.marketing.openlife.models.Context;
  import com.alipay.easysdk.marketing.openlife.models.Keyword;
  import com.alipay.easysdk.marketing.openlife.models.Template;
  import com.google.common.collect.Lists;
  import org.junit.Before;
  import org.junit.Ignore;
  import org.junit.Test;
  
  import static org.hamcrest.CoreMatchers.is;
  import static org.hamcrest.CoreMatchers.not;
  import static org.hamcrest.CoreMatchers.notNullValue;
  import static org.hamcrest.CoreMatchers.nullValue;
  import static org.junit.Assert.assertThat;
  
  public class ClientTest {
  
      @Before
      public void setUp() {
          Factory.setOptions(TestAccount.OpenLife.CONFIG);
      }
  
      @Test
      public void testCreateImageTextContent() throws Exception {
          AlipayOpenPublicMessageContentCreateResponse response = Marketing.OpenLife().createImageTextContent("标题",
                  "http://dl.django.t.taobao.com/rest/1.0/image?fileIds=hOTQ1lT1TtOjcxGflvnUXgAAACMAAQED",
                  "示例", "T", "activity", "满100减10",
                  "关键,热度", "13434343432,xxx@163.com");
  
          assertThat(ResponseChecker.success(response), is(true));
          assertThat(response.code, is("10000"));
          assertThat(response.msg, is("Success"));
          assertThat(response.subCode, is(nullValue()));
          assertThat(response.subMsg, is(nullValue()));
          assertThat(response.httpBody, not(nullValue()));
          assertThat(response.contentId, is(notNullValue()));
          assertThat(response.contentUrl, is(notNullValue()));
      }
  
      @Test
      public void testModifyImageTextContent() throws Exception {
          AlipayOpenPublicMessageContentModifyResponse response = Marketing.OpenLife().modifyImageTextContent(
                  "2021002177673029ecae71f5-9af3-4317-b9ce-d3a8f238f8ce", "新标题",
                  "http://dl.django.t.taobao.com/rest/1.0/image?fileIds=hOTQ1lT1TtOjcxGflvnUXgAAACMAAQED",
                  "新示例", "T", "activity", "满100减20",
                  "关键,热度", "13434343432,xxx@163.com");
  
          assertThat(ResponseChecker.success(response), is(true));
          assertThat(response.code, is("10000"));
          assertThat(response.msg, is("Success"));
          assertThat(response.subCode, is(nullValue()));
          assertThat(response.subMsg, is(nullValue()));
          assertThat(response.httpBody, not(nullValue()));
          assertThat(response.contentId, is("2021002177673029ecae71f5-9af3-4317-b9ce-d3a8f238f8ce"));
          assertThat(response.contentUrl, is(notNullValue()));
      }
  
      @Test
      public void testSendText() throws Exception {
          AlipayOpenPublicMessageTotalSendResponse response = Marketing.OpenLife().sendText("测试");
  
          if (response.code.equals("10000")) {
              assertThat(ResponseChecker.success(response), is(true));
              assertThat(response.code, is("10000"));
              assertThat(response.msg, is("Success"));
              assertThat(response.subCode, is(nullValue()));
              assertThat(response.subMsg, is(nullValue()));
              assertThat(response.httpBody, not(nullValue()));
              assertThat(response.messageId, is(notNullValue()));
          } else {
              assertThat(ResponseChecker.success(response), is(false));
              assertThat(response.code, is("40004"));
              assertThat(response.msg, is("Business Failed"));
              assertThat(response.subCode, is("PUB.MSG_BATCH_SD_OVER"));
              assertThat(response.subMsg, is("批量发送消息频率超限"));
              assertThat(response.httpBody, not(nullValue()));
              assertThat(response.messageId, is(nullValue()));
          }
      }
  
      @Test
      public void testSendImageText() throws Exception {
          Article article = new Article();
          article.actionName = "测试";
          article.desc = "测试";
          article.title = "测试";
          article.imageUrl = "http://dl.django.t.taobao.com/rest/1.0/image?fileIds=hOTQ1lT1TtOjcxGflvnUXgAAACMAAQED";
          article.url = "https://docs.open.alipay.com/api_6/alipay.open.public.message.total.send";
          AlipayOpenPublicMessageTotalSendResponse response = Marketing.OpenLife().sendImageText(Lists.newArrayList(article));
  
          if (response.code.equals("10000")) {
              assertThat(ResponseChecker.success(response), is(true));
              assertThat(response.code, is("10000"));
              assertThat(response.msg, is("Success"));
              assertThat(response.subCode, is(nullValue()));
              assertThat(response.subMsg, is(nullValue()));
              assertThat(response.httpBody, not(nullValue()));
              assertThat(response.messageId, is(notNullValue()));
          } else {
              assertThat(ResponseChecker.success(response), is(false));
              assertThat(response.code, is("40004"));
              assertThat(response.msg, is("Business Failed"));
              assertThat(response.subCode, is("PUB.MSG_BATCH_SD_OVER"));
              assertThat(response.subMsg, is("批量发送消息频率超限"));
              assertThat(response.httpBody, not(nullValue()));
              assertThat(response.messageId, is(nullValue()));
          }
      }
  
      @Test
      public void testSendSingleMessage() throws Exception {
          Keyword keyword = new Keyword();
          keyword.color = "#85be53";
          keyword.value = "HU7142";
  
          Context context = new Context();
          context.headColor = "#85be53";
          context.url = "https://docs.open.alipay.com/api_6/alipay.open.public.message.single.send";
          context.actionName = "查看详情";
          context.keyword1 = keyword;
          context.keyword2 = keyword;
          context.first = keyword;
          context.remark = keyword;
  
          Template template = new Template();
          template.templateId = "TM9f1a1af9c3d9418bb0f66af22c817f41";
          template.context = context;
  
          AlipayOpenPublicMessageSingleSendResponse response = Marketing.OpenLife().sendSingleMessage(
                  "2088002656718920", template);
  
          assertThat(ResponseChecker.success(response), is(false));
          assertThat(response.code, is("40004"));
          assertThat(response.msg, is("Business Failed"));
          assertThat(response.subCode, is("MSG_TEMPLATE_NOT_EXIST"));
          assertThat(response.subMsg, is("消息模板不存在"));
          assertThat(response.httpBody, not(nullValue()));
      }
  
      @Test
      public void testRecallMessage() throws Exception {
          AlipayOpenPublicLifeMsgRecallResponse response = Marketing.OpenLife().recallMessage(
                  "201905106452100327f456f6-8dd2-4a06-8b0e-ec8a3a85c46a");
  
          assertThat(ResponseChecker.success(response), is(false));
          assertThat(response.code, is("40004"));
          assertThat(response.msg, is("Business Failed"));
          assertThat(response.subCode, is("PUB.RCD_MSG_NOT_EXIST"));
          assertThat(response.subMsg, is("撤回的消息不存在"));
          assertThat(response.httpBody, not(nullValue()));
      }
  
      @Test
      public void testSetIndustry() throws Exception {
          AlipayOpenPublicTemplateMessageIndustryModifyResponse response = Marketing.OpenLife().setIndustry(
                  "10001/20102", "IT科技/IT软件与服务",
                  "10001/20102", "IT科技/IT软件与服务");
  
          if (response.code.equals("10000")) {
              assertThat(ResponseChecker.success(response), is(true));
              assertThat(response.code, is("10000"));
              assertThat(response.msg, is("Success"));
              assertThat(response.subCode, is(nullValue()));
              assertThat(response.subMsg, is(nullValue()));
              assertThat(response.httpBody, not(nullValue()));
          } else {
              assertThat(ResponseChecker.success(response), is(false));
              assertThat(response.code, is("40004"));
              assertThat(response.msg, is("Business Failed"));
              assertThat(response.subCode, is("3002"));
              assertThat(response.subMsg, is("模板消息行业一月只能修改一次"));
              assertThat(response.httpBody, not(nullValue()));
          }
      }
  
      @Test
      public void testGetIndustry() throws Exception {
          AlipayOpenPublicSettingCategoryQueryResponse response = Marketing.OpenLife().getIndustry();
  
          assertThat(ResponseChecker.success(response), is(true));
          assertThat(response.code, is("10000"));
          assertThat(response.msg, is("Success"));
          assertThat(response.subCode, is(nullValue()));
          assertThat(response.subMsg, is(nullValue()));
          assertThat(response.httpBody, not(nullValue()));
          assertThat(response.primaryCategory, is("IT科技/IT软件与服务"));
          assertThat(response.secondaryCategory, is("IT科技/IT软件与服务"));
      }
  }