-import javax.ws.rs.Path;
-import javax.ws.rs.GET;
-
-public class DR_PubResourceTest extends JerseyTest{
-
- @Override
- protected Application configure() {
- return new ResourceConfig()
- .register( DR_PubResource.class )
- .register( FeedResource.class );
- }
-
- private static final String fmt = "%24s: %s%n";
- String d, un, up, f, p;
-/*
- @Before
- public void setUp() throws Exception {
- d = "central-onap";
- un = "user1";
- up = "secretW0rd";
- f = "234";
- p = "678";
- }
-
- @After
- public void tearDown() throws Exception {
- }
-*/
-
-
-
-/* may conflict with test framework!
- @Before
- public void setUp() throws Exception {
- }
-
- @After
- public void tearDown() throws Exception {
- }
-*/
-
- private Feed addFeed( String name, String desc ) {
- Feed feed = new Feed( name, "1.0", desc, "dgl", "unrestricted" );
- Entity<Feed> reqEntity = Entity.entity( feed, MediaType.APPLICATION_JSON );
- Response resp = target( "feeds").request().post( reqEntity, Response.class );
- int rc = resp.getStatus();
- System.out.println( "POST feed resp=" + rc );
- assertTrue( rc == 200 || rc == 409 );
- feed = resp.readEntity( Feed.class );
- return feed;
- }
-
- private DR_Pub addPub( String d, String un, String up, String feedId ) {
- DR_Pub dr_pub = new DR_Pub( d, un, up, feedId, "" );
- Entity<DR_Pub> reqEntity2 = Entity.entity( dr_pub, MediaType.APPLICATION_JSON);
- Response resp = target( "dr_pubs").request().post( reqEntity2, Response.class);
- System.out.println( "POST dr_pubs resp=" + resp.getStatus() );
- assertTrue( resp.getStatus() == 201 );
- dr_pub = resp.readEntity( DR_Pub.class );
-
- return dr_pub;
- }
-
- @Test
- public void GetTest() {
- Response resp = target( "dr_pubs").request().get( Response.class );
- System.out.println( "GET dr_pubs resp=" + resp.getStatus() );
-
- assertTrue( resp.getStatus() == 200 );
- }
-
- @Test
- public void PostTest() {
-
- Feed feed = addFeed( "pubPostTest", "post unit test" );
- System.out.println( "fpubPostTest: feedId=" + feed.getFeedId());
-
- String d, un, up;
- d = "central-onap";
- un = "user1";
- up = "secretW0rd";
-
- DR_Pub dr_pub = addPub( d, un, up, feed.getFeedId() );
- }
-
- @Test
- public void PutTest() {
-
- Feed feed = addFeed( "pubPutTest", "put unit test");
- String d, un, up;
- d = "central-onap";
- un = "user1";
- up = "secretW0rd";
-
- DR_Pub dr_pub = addPub( d, un, up, feed.getFeedId() );
-
- dr_pub.setUserpwd("newSecret");
- Entity<DR_Pub> reqEntity2 = Entity.entity( dr_pub, MediaType.APPLICATION_JSON);
- Response resp = target( "dr_pubs")
- .path( dr_pub.getPubId() )
- .request()
- .put( reqEntity2, Response.class);
- System.out.println( "PUT dr_pubs resp=" + resp.getStatus() );
- assertTrue( resp.getStatus() == 200 );
- }
-
+import javax.ws.rs.core.Response;
+import org.glassfish.jersey.server.ResourceConfig;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.onap.dmaap.dbcapi.database.DatabaseClass;
+import org.onap.dmaap.dbcapi.model.ApiError;
+import org.onap.dmaap.dbcapi.model.DR_Pub;
+import org.onap.dmaap.dbcapi.model.Feed;
+import org.onap.dmaap.dbcapi.testframework.DmaapObjectFactory;
+
+public class DR_PubResourceTest {
+
+ private static final DmaapObjectFactory DMAAP_OBJECT_FACTORY = new DmaapObjectFactory();
+
+ private static final String DCAE_LOCATION_NAME = "central-onap";
+ private static final String USERNAME = "user1";
+ private static final String USRPWD = "secretW0rd";
+ private static final String FEED_ID = "someFakeFeedId";
+ private static final String PUB_ID = "0";
+ private static FastJerseyTestContainer testContainer;
+ private static TestFeedCreator testFeedCreator;
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+ //TODO: init is still needed here to assure that dmaap is not null
+ DatabaseClass.getDmaap().init(DMAAP_OBJECT_FACTORY.genDmaap());
+
+ testContainer = new FastJerseyTestContainer(new ResourceConfig()
+ .register(DmaapResource.class)
+ .register(DR_PubResource.class)
+ .register(FeedResource.class));
+
+ testContainer.init();
+ testFeedCreator = new TestFeedCreator(testContainer);
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+ testContainer.destroy();
+ /*TODO: Cannot cleanup yet until still other Resources tests depends on the static DB content
+
+ DatabaseClass.clearDatabase();
+ DatabaseClass.getDmaap().remove();*/
+ }
+
+ @Before
+ public void cleanupDatabase() {
+ DatabaseClass.clearDatabase();
+ }
+
+ @Test
+ public void getDr_Pub_test() {
+ Response resp = testContainer.target("dr_pubs").request().get(Response.class);
+ assertTrue(resp.getStatus() == 200);
+ assertTrue(resp.hasEntity());
+ }
+
+ @Test
+ public void addDr_Pub_shallReturnError_whenNoFeedIdAndFeedNameInPubProvided() {
+ //given
+ DR_Pub drPub = new DR_Pub(DCAE_LOCATION_NAME, USERNAME, USRPWD, null, PUB_ID);
+ Entity<DR_Pub> requestedEntity = Entity.entity(drPub, MediaType.APPLICATION_JSON);
+
+ //when
+ Response resp = testContainer.target("dr_pubs")
+ .request()
+ .post(requestedEntity, Response.class);
+
+ //then
+ assertEquals(400, resp.getStatus());
+ ApiError responseError = resp.readEntity(ApiError.class);
+ assertNotNull(responseError);
+ assertEquals("feedName", responseError.getFields());
+ }
+
+ @Test
+ public void addDr_Pub_shallReturnError_whenFeedNameProvided_butFeedNotExist() {
+ //given
+ DR_Pub drPub = new DR_Pub(DCAE_LOCATION_NAME, USERNAME, USRPWD, null, PUB_ID);
+ Entity<DR_Pub> requestedEntity = Entity.entity(drPub, MediaType.APPLICATION_JSON);
+ drPub.setFeedName("feed_name");
+
+
+ //when
+ Response resp = testContainer.target("dr_pubs")
+ .request()
+ .post(requestedEntity, Response.class);
+
+ //then
+ assertEquals(404, resp.getStatus());
+ ApiError responseError = resp.readEntity(ApiError.class);
+ assertNotNull(responseError);
+ assertEquals("feedName", responseError.getFields());
+
+ }
+
+ @Test
+ public void addDr_Pub_shallReturnError_whenFeedIdProvided_butFeedNotExist() {
+ //given
+ DR_Pub drPub = new DR_Pub(DCAE_LOCATION_NAME, USERNAME, USRPWD, FEED_ID, PUB_ID);
+ Entity<DR_Pub> requestedEntity = Entity.entity(drPub, MediaType.APPLICATION_JSON);
+
+ //when
+ Response resp = testContainer.target("dr_pubs")
+ .request()
+ .post(requestedEntity, Response.class);
+
+ //then
+ assertEquals(404, resp.getStatus());
+ ApiError responseError = resp.readEntity(ApiError.class);
+ assertNotNull(responseError);
+ assertEquals("feedId=" + FEED_ID, responseError.getFields());
+ }
+
+ @Test
+ public void addDr_Pub_shallExecuteSuccessfully_whenValidFeedIdProvided() {
+ //given
+ String feedId = assureFeedIsInDB();
+ DR_Pub drPub = new DR_Pub(DCAE_LOCATION_NAME, USERNAME, USRPWD, feedId);
+ Entity<DR_Pub> requestedEntity = Entity.entity(drPub, MediaType.APPLICATION_JSON);
+
+ //when
+ Response resp = testContainer.target("dr_pubs")
+ .request()
+ .post(requestedEntity, Response.class);
+
+ //then
+ assertEquals(201, resp.getStatus());
+ }
+
+ @Test
+ public void addDr_Pub_shallExecuteSuccessfully_whenValidFeedNameProvided() {
+ //given
+ String feedName = "testFeed";
+ testFeedCreator.addFeed(feedName, "test feed");
+ DR_Pub drPub = new DR_Pub(DCAE_LOCATION_NAME, USERNAME, USRPWD, null, PUB_ID);
+ drPub.setFeedName(feedName);
+ Entity<DR_Pub> requestedEntity = Entity.entity(drPub, MediaType.APPLICATION_JSON);
+
+ //when
+ Response resp = testContainer.target("dr_pubs")
+ .request()
+ .post(requestedEntity, Response.class);
+
+ //then
+ assertEquals(201, resp.getStatus());
+ }
+
+ @Test
+ public void updateDr_Pub_shallExecuteSuccessfully_whenAddingNewPublisher() {
+ //given
+ String pubId = "5";
+ DR_Pub drPub = new DR_Pub(DCAE_LOCATION_NAME, USERNAME, USRPWD, "feedId", PUB_ID);
+ Entity<DR_Pub> reqEntity2 = Entity.entity(drPub, MediaType.APPLICATION_JSON);
+
+ //when
+ Response resp = testContainer.target("dr_pubs")
+ .path(pubId)
+ .request()
+ .put(reqEntity2, Response.class);
+
+ //then
+ assertEquals(200, resp.getStatus());
+
+ }
+ /*//
+ // When this test is included, the following error is generated:
+ Exception in thread "HTTP-Dispatcher" java.lang.AssertionError: State is not RESPONSE (REQUEST)
+ at jdk.httpserver/sun.net.httpserver.ServerImpl.responseCompleted(ServerImpl.java:814)
+ at jdk.httpserver/sun.net.httpserver.ServerImpl$Dispatcher.handleEvent(ServerImpl.java:297)
+ at jdk.httpserver/sun.net.httpserver.ServerImpl$Dispatcher.run(ServerImpl.java:356)
+ at java.base/java.lang.Thread.run(Thread.java:830)
+// I can't figure it out, so created a Jira for now. DMAAP-1358
+ @Test
+ public void updateDr_Pub_shallReturnError_whenPathIsWrong() {
+ //given
+ DR_Pub drPub = new DR_Pub(DCAE_LOCATION_NAME, USERNAME, USRPWD, FEED_ID, PUB_ID);
+ Entity<DR_Pub> reqEntity2 = Entity.entity(drPub, MediaType.APPLICATION_JSON);
+
+ //when
+ Response resp = testContainer.target("dr_pubs")
+ .path("")
+ .request()
+ .put(reqEntity2, Response.class);
+
+ //then
+ assertEquals(405, resp.getStatus());
+ }*/
+ @Test
+ public void deleteDr_Pub_shouldDeleteObjectWithSuccess() {
+ //given
+ String feedId = assureFeedIsInDB();
+ DR_Pub dr_pub = addPub(DCAE_LOCATION_NAME, USERNAME, USRPWD, feedId);
+
+ //when
+ Response resp = testContainer.target("dr_pubs")
+ .path(dr_pub.getPubId())
+ .request()
+ .delete();
+
+ //then
+ assertEquals("Shall delete publisher with success", 204, resp.getStatus());
+ assertFalse("No entity object shall be returned", resp.hasEntity());
+ }
+
+ @Test
+ public void deleteDr_Pub_shouldReturnErrorResponse_whenGivenPubIdNotFound() {
+ //given
+ String notExistingPubId = "6789";
+
+ //when
+ Response resp = testContainer.target("dr_pubs")
+ .path(notExistingPubId)
+ .request()
+ .delete();
+
+ //then
+ assertEquals("Shall return error, when trying to delete not existing publisher", 404, resp.getStatus());
+ ApiError responseError = resp.readEntity(ApiError.class);
+ assertNotNull(responseError);
+ assertEquals("pubId", responseError.getFields());
+ }
+
+ @Test
+ public void get_shallReturnExistingObject() {
+ //given
+ String feedId = assureFeedIsInDB();
+ DR_Pub dr_Pub = addPub(DCAE_LOCATION_NAME, USERNAME, USRPWD, feedId);
+
+ //when
+ Response resp = testContainer.target("dr_pubs")
+ .path(dr_Pub.getPubId())
+ .request()
+ .get();
+
+ //then
+ assertEquals("Publisher shall be found", 200, resp.getStatus());
+ assertEquals("Retrieved object shall be equal to eh one put into DB", dr_Pub, resp.readEntity(DR_Pub.class));
+ }
+
+ private DR_Pub addPub(String d, String un, String up, String feedId) {
+ DR_Pub dr_pub = new DR_Pub(d, un, up, feedId, "");
+ Entity<DR_Pub> reqEntity2 = Entity.entity(dr_pub, MediaType.APPLICATION_JSON);
+ Response resp = testContainer.target("dr_pubs").request().post(reqEntity2, Response.class);
+ System.out.println("POST dr_pubs resp=" + resp.getStatus());
+ assertTrue(resp.getStatus() == 201);
+ dr_pub = resp.readEntity(DR_Pub.class);
+ return dr_pub;
+ }
+
+ private String assureFeedIsInDB() {
+ Feed feed = testFeedCreator.addFeed("PublisherTestFeed", "feed for DR_Pub testing");
+ assertNotNull("Feed shall be added into DB properly", feed);
+ return feed.getFeedId();
+ }