Package com.ibm.sbt.automation.core.test.connections

Source Code of com.ibm.sbt.automation.core.test.connections.BaseForumsTest

/*
* © Copyright IBM Corp. 2013
*
* 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.ibm.sbt.automation.core.test.connections;

import java.util.Iterator;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;

import com.ibm.commons.util.StringUtil;
import com.ibm.commons.util.io.json.JsonJavaObject;
import com.ibm.sbt.automation.core.test.BaseApiTest;
import com.ibm.sbt.automation.core.utils.Trace;
import com.ibm.sbt.security.authentication.AuthenticationException;
import com.ibm.sbt.services.client.ClientServicesException;
import com.ibm.sbt.services.client.base.datahandlers.EntityList;
import com.ibm.sbt.services.client.connections.forums.Forum;
import com.ibm.sbt.services.client.connections.forums.ForumReply;
import com.ibm.sbt.services.client.connections.forums.ForumService;
import com.ibm.sbt.services.client.connections.forums.ForumTopic;
import com.ibm.sbt.services.client.connections.forums.model.BaseForumEntity;

/**
* @author mwallace
*
*/
public class BaseForumsTest extends BaseApiTest {
 
  protected boolean createForum = true;
    protected ForumService forumService;
    protected Forum forum;

    public BaseForumsTest() {
        setAuthType(AuthType.AUTO_DETECT);
    }
   
    @Before
    public void createForum() {
        createContext();
        if (createForum) {
          String type = "public";
          if (environment.isSmartCloud()) {
            type = "private";
          }
          String name = createForumName();
          //System.out.println(name);
            forum = createForum(name, type, name, "tag1,tag2,tag3");
        }
    }
   
    @After
    public void deleteForumAndQuit() {
      deleteForum(forum);
      forum = null;
      destroyContext();
    }
   
    protected ForumTopic createForumTopic(Forum forum, String title, String content) {
      ForumService forumService = getForumService();
     
      ForumTopic forumTopic = new ForumTopic(forumService);
      forumTopic.setForumUuid(forum.getForumUuid());
      forumTopic.setTitle(title);
      forumTopic.setContent(content);
     
      try {
        return forumService.createForumTopic(forumTopic);
      } catch (Exception fse) {
        fail("Error creating forum topic", fse);
      }
     
      return null;
    }
   
    protected ForumTopic getForumTopic(String topicUuid, boolean failOnError) {
      ForumService forumService = getForumService();
     
      try {
        return forumService.getForumTopic(topicUuid);
      } catch (Exception fse) {
        if (failOnError) {
          fail("Error retrieving forum topic", fse);
        }
      }
     
      return null;
    }
   
    protected ForumReply getForumReply(String replyUuid, boolean failOnError) {
      ForumService forumService = getForumService();
     
      try {
        return forumService.getForumReply(replyUuid);
      } catch (Exception fse) {
        if (failOnError) {
          fail("Error retrieving forum reply", fse);
        }
      }
     
      return null;
    }
   
    protected ForumReply createForumReply(ForumTopic forumTopic, String title, String content) {
      ForumService forumService = getForumService();
     
      ForumReply forumReply = new ForumReply(forumService);
      forumReply.setTopicUuid(forumTopic.getTopicUuid());
      forumReply.setTitle(title);
      forumReply.setContent(content);
     
      try {
        return forumService.createForumReply(forumReply);
      } catch (Exception fse) {
        fail("Error creating forum reply", fse);
      }
     
      return null;
    }
   
    protected ForumReply getForumReply(String replyUuid) {
      ForumService forumService = getForumService();
     
      try {
        return forumService.getForumReply(replyUuid);
      } catch (Exception fse) {
        fail("Error retrieving forum reply", fse);
      }
     
      return null;
    }
   
    protected String createForumName() {
      return this.getClass().getName() + "#" + this.hashCode() + " Forum - " + System.currentTimeMillis();
    }
   
    protected String createForumTopicName() {
      return this.getClass().getName() + "#" + this.hashCode() + " Forum Topic - " + System.currentTimeMillis();
    }
   
    protected ForumService getForumService() {
        if (forumService == null) {
            forumService = new ForumService(getEndpointName());
        }
        return forumService;
    }
   
    protected void assertForumValid(Forum forum, JsonJavaObject json) {
        Assert.assertNull("Unexpected error detected on page", json.getString("code"));
        Assert.assertEquals(forum.getForumUuid(), json.getString("getForumUuid"));
        Assert.assertEquals(forum.getTitle(), json.getString("getTitle"));
        //Assert.assertEquals(forum.getSummary(), json.getString("getSummary"));
        Assert.assertEquals(forum.getContent(), json.getString("getContent"));
        Assert.assertEquals(forum.getForumUrl(), json.getString("getForumUrl"));
        Assert.assertEquals(forum.getAuthor().getName(), json.getJsonObject("getAuthor").getString("name"));
        Assert.assertEquals(forum.getAuthor().getEmail(), json.getJsonObject("getAuthor").getString("email"));
        Assert.assertEquals(forum.getAuthor().getId(), json.getJsonObject("getAuthor").getString("userid"));
        //Assert.assertEquals(forum.getContributor().getName(), json.getJsonObject("getContributor").getString("name"));
        //Assert.assertEquals(forum.getContributor().getEmail(), json.getJsonObject("getContributor").getString("email"));
        //Assert.assertEquals(forum.getContributor().getUserid(), json.getJsonObject("getContributor").getString("userid"));
    }
   
    protected void assertForumTopicValid(ForumTopic forumTopic, JsonJavaObject json) {
        Assert.assertNull("Unexpected error detected on page", json.getString("code"));
        Assert.assertEquals(forumTopic.getForumUuid(), json.getString("getForumUuid"));
        Assert.assertEquals(forumTopic.getTopicUuid(), json.getString("getTopicUuid"));
        Assert.assertEquals(forumTopic.getThreadRecommendationCount(), json.getLong("getThreadRecommendationCount"));
        Assert.assertEquals(forumTopic.getTopicUuid(), json.getString("getTopicUuid"));
        Assert.assertEquals(forumTopic.getTitle(), json.getString("getTitle"));
        Assert.assertEquals(StringUtil.trim(forumTopic.getContent()), json.getString("getContent"));
        Assert.assertEquals(forumTopic.getAuthor().getName(), json.getJsonObject("getAuthor").getString("name"));
        Assert.assertEquals(forumTopic.getAuthor().getEmail(), json.getJsonObject("getAuthor").getString("email"));
        Assert.assertEquals(forumTopic.getAuthor().getId(), json.getJsonObject("getAuthor").getString("userid"));
    }
   
    protected void assertForumReplyValid(ForumReply forumReply, JsonJavaObject json) {
        Assert.assertNull("Unexpected error detected on page", json.getString("code"));
        Assert.assertEquals(forumReply.getTopicUuid(), json.getString("getTopicUuid"));
        Assert.assertEquals(forumReply.getReplyUuid(), json.getString("getReplyUuid"));
        Assert.assertEquals(forumReply.getTopicUuid(), json.getString("getTopicUuid"));
        Assert.assertEquals(forumReply.getTitle(), json.getString("getTitle"));
        Assert.assertEquals(StringUtil.trim(forumReply.getContent()), json.getString("getContent"));
        Assert.assertEquals(forumReply.getAuthor().getName(), json.getJsonObject("getAuthor").getString("name"));
        Assert.assertEquals(forumReply.getAuthor().getEmail(), json.getJsonObject("getAuthor").getString("email"));
        Assert.assertEquals(forumReply.getAuthor().getId(), json.getJsonObject("getAuthor").getString("userid"));
    }
   
    protected void assertForumGetters(JsonJavaObject json) {
        Assert.assertNull("Unexpected error detected on page", json.getString("code"));
        Assert.assertNotNull(json.getString("getForumUuid"));
        Assert.assertNotNull(json.getString("getTitle"));
        //Assert.assertNotNull(json.getString("getSummary"));
        Assert.assertNotNull(json.getString("getContent"));
        Assert.assertNotNull(json.getString("getForumUrl"));
        Assert.assertNotNull(json.getJsonObject("getAuthor").getString("name"));
        Assert.assertNotNull(json.getJsonObject("getAuthor").getString("email"));
        Assert.assertNotNull(json.getJsonObject("getAuthor").getString("userid"));
        //Assert.assertNotNull(json.getJsonObject("getContributor").getString("name"));
        //Assert.assertNotNull(json.getJsonObject("getContributor").getString("email"));
        //Assert.assertNotNull(json.getJsonObject("getContributor").getString("userid"));
    }
   
    protected void assertForumProperties(JsonJavaObject json) {
        Assert.assertNull("Unexpected error detected on page", json.getString("code"));
        Assert.assertNotNull(json.getString("uid"));
        Assert.assertNotNull(json.getString("title"));
        Assert.assertNotNull(json.getString("updated"));
        Assert.assertNotNull(json.getString("published"));
        Assert.assertNotNull(json.getString("authorName"));
        Assert.assertNotNull(json.getString("authorEmail"));
        Assert.assertNotNull(json.getString("authorUserid"));
        Assert.assertNotNull(json.getString("authorUserState"));
        Assert.assertNotNull(json.getString("content"));
        Assert.assertNotNull(json.getString("categoryTerm"));
        Assert.assertNotNull(json.getString("editUrl"));
        Assert.assertNotNull(json.getString("selfUrl"));
        Assert.assertNotNull(json.getString("alternateUrl"));
        Assert.assertNotNull(json.getString("forumUuid"));
        Assert.assertNotNull(json.getString("moderation"));
        Assert.assertNotNull(json.getString("threadCount"));
        Assert.assertNotNull(json.getString("forumUrl"));
    }
   
    protected void assertForumTopicProperties(JsonJavaObject json) {
        Assert.assertNull("Unexpected error detected on page", json.getString("code"));
        Assert.assertNotNull(json.getString("topicUuid"));
        Assert.assertNotNull(json.getString("forumUuid"));
        //Assert.assertNotNull(json.getString("tags"));
        Assert.assertNotNull(json.getString("permissions"));
        Assert.assertNotNull(json.getString("threadCount"));
        Assert.assertNotNull(json.getString("notRecommendedByCurrentUser"));
        Assert.assertNotNull(json.getString("threadRecommendationCount"));
        Assert.assertNotNull(json.getString("recommendationsUrl"));
        Assert.assertNotNull(json.getString("entry"));
        Assert.assertNotNull(json.getString("uid"));
        Assert.assertNotNull(json.getString("id"));
        Assert.assertNotNull(json.getString("title"));
        Assert.assertNotNull(json.getString("updated"));
        Assert.assertNotNull(json.getString("published"));
        Assert.assertNotNull(json.getString("authorName"));
        Assert.assertNotNull(json.getString("authorEmail"));
        Assert.assertNotNull(json.getString("authorUserid"));
        Assert.assertNotNull(json.getString("authorUserState"));
        Assert.assertNotNull(json.getString("content"));
        Assert.assertNotNull(json.getString("categoryTerm"));
        Assert.assertNotNull(json.getString("editUrl"));
        Assert.assertNotNull(json.getString("selfUrl"));
        Assert.assertNotNull(json.getString("alternateUrl"));       
    }
   
    protected void assertForumReplyProperties(JsonJavaObject json) {
        Assert.assertNull("Unexpected error detected on page", json.getString("code"));
        Assert.assertNotNull(json.getString("topicUuid"));
        Assert.assertNotNull(json.getString("replyUuid"));
        //Assert.assertNotNull(json.getString("tags"));
        Assert.assertNotNull(json.getString("permissions"));
        Assert.assertNotNull(json.getString("replyTo"));
        Assert.assertNotNull(json.getString("notRecommendedByCurrentUser"));
        Assert.assertNotNull(json.getString("recommendationsUrl"));
        Assert.assertNotNull(json.getString("entry"));
        Assert.assertNotNull(json.getString("uid"));
        Assert.assertNotNull(json.getString("id"));
        Assert.assertNotNull(json.getString("title"));
        Assert.assertNotNull(json.getString("updated"));
        Assert.assertNotNull(json.getString("published"));
        Assert.assertNotNull(json.getString("authorName"));
        Assert.assertNotNull(json.getString("authorEmail"));
        Assert.assertNotNull(json.getString("authorUserid"));
        Assert.assertNotNull(json.getString("authorUserState"));
        Assert.assertNotNull(json.getString("content"));
        Assert.assertNotNull(json.getString("categoryTerm"));
        Assert.assertNotNull(json.getString("editUrl"));
        Assert.assertNotNull(json.getString("selfUrl"));
        Assert.assertNotNull(json.getString("alternateUrl"));       
    }
   
    protected void assertMemberValid(JsonJavaObject json, String forumUuid, String name, String userid, String email, String role) {
        Assert.assertNull("Unexpected error detected on page", json.getString("code"));
        Assert.assertEquals(forumUuid, json.getString("getForumUuid"));
        Assert.assertEquals(name, json.getString("getName"));
        Assert.assertEquals(userid, json.getString("getUserid"));
        if (!environment.isSmartCloud()) {
          Assert.assertTrue("Expect match "+email+" <> "+json.getString("getEmail"), email.equalsIgnoreCase(json.getString("getEmail")));
        }
        Assert.assertEquals(role, json.getString("getRole"));
    }
   
    protected Forum getLastCreatedForum() {
        Forum forum = null;
        try {
            loginConnections();
           
            ForumService forumService = getForumService();
            EntityList<Forum> forums = forumService.getMyForums();
            forum = (Forum)forums.iterator().next();
            Trace.log("Last created forum: "+forum.getForumUuid());
            Trace.log("Last created forum: "+forum.getPublished());
            Iterator<Forum> i = forums.iterator();
            while (i.hasNext()) {
              BaseForumEntity c= i.next();
              Trace.log("Last created forum: "+((Forum)c).getForumUuid());
              Trace.log("Last created forum: "+c.getTitle());
              Trace.log("Last created forum: "+c.getPublished());
            }
        } catch (AuthenticationException pe) {
          if (pe.getCause() != null) {
            pe.getCause().printStackTrace();
          }
            Assert.fail("Error authenicating: " + pe.getMessage());
        } catch (Exception cse) {
            fail("Error getting last created forum", cse);
        }
       
        return forum;
    }
   
    protected Forum getForum(String forumUuid) {
        return getForum(forumUuid, true);
    }
   
    protected Forum getForum(String forumUuid, boolean failOnCse) {
        Forum forum = null;
        try {
            loginConnections();
           
            ForumService forumService = getForumService();
            forum = forumService.getForum(forumUuid);
            Trace.log("Got forum: "+forum.getForumUuid());
        } catch (AuthenticationException pe) {
          if (pe.getCause() != null) {
            pe.getCause().printStackTrace();
          }
            Assert.fail("Error authenicating: " + pe.getMessage());
        } catch (Exception cse) {
          if (failOnCse) {
            fail("Error retrieving forum", cse);
          }
        }
        return forum;
    }
   
    protected Forum createForum(String title, String type, String content, String tags) {
      return createForum(title, type, content, tags, true);
    }
   
    protected Forum createForum(String title, String type, String content, String tags, boolean retry) {
        Forum forum = null;
        try {
            loginConnections();
            ForumService forumService = getForumService();
           
          long start = System.currentTimeMillis();
            forum = new Forum(forumService, "");
            forum.setTitle(title);
            forum.setContent(content);
            forum.setTags(tags);
            forum = forumService.createForum(forum);
            forum = forumService.getForum(forum.getForumUuid());
           
            long duration = System.currentTimeMillis() - start;
            Trace.log("Created test forum: "+forum.getForumUuid() + " took "+duration+"(ms)");
        } catch (AuthenticationException pe) {
          if (pe.getCause() != null) {
            pe.getCause().printStackTrace();
          }
            Assert.fail("Error authenticating: " + pe.getMessage());
        } catch (Exception cse) {
          // TODO remove this when we upgrade the QSI
          Throwable t = cse.getCause();
          if (t instanceof ClientServicesException) {
            ClientServicesException csex = (ClientServicesException)t;
            int statusCode = csex.getResponseStatusCode();
            if (statusCode == 500 && retry) {
              return createForum(title + " (retry)", type, content, tags, false);
            }
          }
            fail("Error creating test forum with title: '"+title+"'", cse);
        }
       
        return forum;
    }

    protected void deleteForum(Forum forum) {
        if (forum != null) {
            try {
              loginConnections();
                ForumService forumService = getForumService();
                // TODO should be deleteForum
                forumService.deleteForum(forum.getForumUuid());
            } catch (AuthenticationException pe) {
              if (pe.getCause() != null) {
                pe.getCause().printStackTrace();
              }
                Assert.fail("Error authenicating: " + pe.getMessage());
            } catch (Exception cse) {
                forum = null;
              // check if forum delete failed because
              // forum was already deleted
              Throwable t = cse.getCause();
              if (t instanceof ClientServicesException) {
                ClientServicesException csex = (ClientServicesException)t;
                int statusCode = csex.getResponseStatusCode();
                if (statusCode == 404) {
                  Trace.log(this.getClass().getName() + " attempt to delete already deleted Forum: " + csex.getLocalizedMessage());
                  return;
                }
              }
                fail("Error deleting forum "+forum, cse);
            }
        }
    }
   
    protected void deleteForum(String forumId) {
        if (forumId != null) {
            try {
              loginConnections();
                ForumService forumService = getForumService();
                forumService.deleteForum(forumId);
            } catch (AuthenticationException pe) {
              if (pe.getCause() != null) {
                pe.getCause().printStackTrace();
              }
                Assert.fail("Error authenicating: " + pe.getMessage());
            } catch (Exception cse) {
                fail("Error deleting forum "+forumId, cse);
            }
        }
    }
   
  protected ForumTopic createForumTopic(Forum forum, ForumTopic topic) throws Exception {
    ForumService forumService = getForumService();
    return forumService.createForumTopic(topic, forum.getUid());
  }
       
    protected void fail(String message, Exception fse) {
      String failure = message;
     
      Throwable cause = fse.getCause();
      if (cause != null) {
        cause.printStackTrace();
        failure += ", " + cause.getMessage();
      } else {
        fse.printStackTrace();
        failure += ", " + fse.getMessage();
      }
     
      Assert.fail(failure);
    }


}
TOP

Related Classes of com.ibm.sbt.automation.core.test.connections.BaseForumsTest

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.