import java.util.Arrays;
public class MrProvConnection extends BaseLoggingClass{
-
- private String provURL;
-
- private HttpURLConnection uc;
-
-
- private String topicMgrCred;
- private boolean useAAF;
- private String user;
- private String encPwd;
-
- public MrProvConnection() {
- String mechIdProperty = "aaf.TopicMgrUser";
- String pwdProperty = "aaf.TopicMgrPassword";
- DmaapConfig p = (DmaapConfig)DmaapConfig.getConfig();
- user = p.getProperty( mechIdProperty, "noMechId@domain.netset.com" );
- encPwd = p.getProperty( pwdProperty, "notSet" );
- useAAF= "true".equalsIgnoreCase(p.getProperty("UseAAF", "false"));
- topicMgrCred = getCred();
-
- }
-
- private String getCred( ) {
-
-
- String pwd = "";
- AafDecrypt decryptor = new AafDecrypt();
- pwd = decryptor.decrypt(encPwd);
- return user + ":" + pwd;
- }
-
-
- public boolean makeTopicConnection( MR_Cluster cluster ) {
- logger.info( "connect to cluster: " + cluster.getDcaeLocationName());
-
-
- provURL = cluster.getTopicProtocol() + "://" + cluster.getFqdn() + ":" + cluster.getTopicPort() + "/topics/create";
-
- if ( cluster.getTopicProtocol().equals( "https" ) ) {
- return makeSecureConnection( provURL );
- }
- return makeConnection( provURL );
- }
-
- private boolean makeSecureConnection( String pURL ) {
- logger.info( "makeConnection to " + pURL );
-
- try {
- URL u = new URL( pURL );
- uc = (HttpsURLConnection) u.openConnection();
- uc.setInstanceFollowRedirects(false);
- logger.info( "open connect to " + pURL );
- return(true);
- } catch( UnknownHostException uhe ){
- logger.error( "Caught UnknownHostException for " + pURL);
- return(false);
+
+ private String provURL;
+
+ private HttpURLConnection uc;
+
+
+ private String topicMgrCred;
+ private boolean useAAF;
+ private String user;
+ private String encPwd;
+
+ public MrProvConnection() {
+ String mechIdProperty = "aaf.TopicMgrUser";
+ String pwdProperty = "aaf.TopicMgrPassword";
+ DmaapConfig p = (DmaapConfig)DmaapConfig.getConfig();
+ user = p.getProperty( mechIdProperty, "noMechId@domain.netset.com" );
+ encPwd = p.getProperty( pwdProperty, "notSet" );
+ useAAF= "true".equalsIgnoreCase(p.getProperty("UseAAF", "false"));
+ topicMgrCred = getCred();
+
+ }
+
+ private String getCred( ) {
+
+
+ String pwd = "";
+ AafDecrypt decryptor = new AafDecrypt();
+ pwd = decryptor.decrypt(encPwd);
+ return user + ":" + pwd;
+ }
+
+
+ public boolean makeTopicConnection( MR_Cluster cluster ) {
+ logger.info( "connect to cluster: " + cluster.getDcaeLocationName());
+
+
+ provURL = cluster.getTopicProtocol() + "://" + cluster.getFqdn() + ":" + cluster.getTopicPort() + "/topics/create";
+
+ if ( cluster.getTopicProtocol().equals( "https" ) ) {
+ return makeSecureConnection( provURL );
+ }
+ return makeConnection( provURL );
+ }
+
+ private boolean makeSecureConnection( String pURL ) {
+ logger.info( "makeConnection to " + pURL );
+
+ try {
+ URL u = new URL( pURL );
+ uc = (HttpsURLConnection) u.openConnection();
+ uc.setInstanceFollowRedirects(false);
+ logger.info( "open connect to " + pURL );
+ return(true);
+ } catch( UnknownHostException uhe ){
+ logger.error( "Caught UnknownHostException for " + pURL);
+ return(false);
} catch (Exception e) {
logger.error("Unexpected error during openConnection of " + pURL );
- e.printStackTrace();
+ logger.error("Unexpected error during openConnection of ",e );
return(false);
}
- }
- private boolean makeConnection( String pURL ) {
- logger.info( "makeConnection to " + pURL );
-
- try {
- URL u = new URL( pURL );
- uc = (HttpURLConnection) u.openConnection();
- uc.setInstanceFollowRedirects(false);
- logger.info( "open connect to " + pURL );
- return(true);
- } catch( UnknownHostException uhe ){
- logger.error( "Caught UnknownHostException for " + pURL);
- return(false);
+ }
+ private boolean makeConnection( String pURL ) {
+ logger.info( "makeConnection to " + pURL );
+
+ try {
+ URL u = new URL( pURL );
+ uc = (HttpURLConnection) u.openConnection();
+ uc.setInstanceFollowRedirects(false);
+ logger.info( "open connect to " + pURL );
+ return(true);
+ } catch( UnknownHostException uhe ){
+ logger.error( "Caught UnknownHostException for " + pURL);
+ return(false);
} catch (Exception e) {
logger.error("Unexpected error during openConnection of " + pURL );
- e.printStackTrace();
+ logger.error("Unexpected error during openConnection of ",e );
return(false);
}
- }
-
- static String bodyToString( InputStream is ) {
- StringBuilder sb = new StringBuilder();
- BufferedReader br = new BufferedReader( new InputStreamReader(is));
- String line;
- try {
- while ((line = br.readLine()) != null ) {
- sb.append( line );
- }
- } catch (IOException ex ) {
- errorLogger.error( "IOexception:" + ex);
- }
-
- return sb.toString();
- }
-
- public String doPostTopic( Topic postTopic, ApiError err ) {
- String auth = "Basic " + Base64.encodeBase64String(topicMgrCred.getBytes());
-
-
- String responsemessage = null;
- int rc = -1;
-
-
- try {
- byte[] postData = postTopic.getBytes();
- logger.info( "post fields=" + Arrays.toString(postData));
-
- // when not using AAF, do not attempt Basic Authentication
- if ( useAAF ) {
- uc.setRequestProperty("Authorization", auth);
- logger.info( "Authenticating with " + auth );
- }
- uc.setRequestMethod("POST");
- uc.setRequestProperty("Content-Type", "application/json");
- uc.setRequestProperty( "charset", "utf-8");
- uc.setRequestProperty( "Content-Length", Integer.toString( postData.length ));
- uc.setUseCaches(false);
- uc.setDoOutput(true);
- OutputStream os = null;
-
-
- try {
+ }
+
+ static String bodyToString( InputStream is ) {
+ StringBuilder sb = new StringBuilder();
+ BufferedReader br = new BufferedReader( new InputStreamReader(is));
+ String line;
+ try {
+ while ((line = br.readLine()) != null ) {
+ sb.append( line );
+ }
+ } catch (IOException ex ) {
+ errorLogger.error( "IOexception:" + ex);
+ }
+
+ return sb.toString();
+ }
+
+ public String doPostTopic( Topic postTopic, ApiError err ) {
+ String auth = "Basic " + Base64.encodeBase64String(topicMgrCred.getBytes());
+
+
+ String responsemessage = null;
+ int rc = -1;
+
+
+ try {
+ byte[] postData = postTopic.getBytes();
+ logger.info( "post fields=" + Arrays.toString(postData));
+
+ // when not using AAF, do not attempt Basic Authentication
+ if ( useAAF ) {
+ uc.setRequestProperty("Authorization", auth);
+ logger.info( "Authenticating with " + auth );
+ }
+ uc.setRequestMethod("POST");
+ uc.setRequestProperty("Content-Type", "application/json");
+ uc.setRequestProperty( "charset", "utf-8");
+ uc.setRequestProperty( "Content-Length", Integer.toString( postData.length ));
+ uc.setUseCaches(false);
+ uc.setDoOutput(true);
+ OutputStream os = null;
+
+
+ try {
uc.connect();
os = uc.getOutputStream();
os.write( postData );
} catch (Exception e) {
}
} catch ( UnknownHostException uhe ) {
- errorLogger.error( DmaapbcLogMessageEnum.UNKNOWN_HOST_EXCEPTION , "Unknown Host Exception" , provURL );
- err.setCode(500);
- err.setMessage("Unknown Host Exception");
- err.setFields( uc.getURL().getHost());
- return new String( "500: " + uhe.getMessage());
+ errorLogger.error( DmaapbcLogMessageEnum.UNKNOWN_HOST_EXCEPTION , "Unknown Host Exception" , provURL );
+ err.setCode(500);
+ err.setMessage("Unknown Host Exception");
+ err.setFields( uc.getURL().getHost());
+ return new String( "500: " + uhe.getMessage());
}catch ( ConnectException ce ) {
- errorLogger.error( DmaapbcLogMessageEnum.HTTP_CONNECTION_EXCEPTION, provURL, "HTTP Connection Exception" );
- err.setCode(500);
- err.setMessage("HTTP Connection Exception");
- err.setFields( uc.getURL().getHost());
- return new String( "500: " + ce.getMessage());
+ errorLogger.error( DmaapbcLogMessageEnum.HTTP_CONNECTION_EXCEPTION, provURL, "HTTP Connection Exception" );
+ err.setCode(500);
+ err.setMessage("HTTP Connection Exception");
+ err.setFields( uc.getURL().getHost());
+ return new String( "500: " + ce.getMessage());
}
- rc = uc.getResponseCode();
- logger.info( "http response code:" + rc );
- err.setCode(rc);
+ rc = uc.getResponseCode();
+ logger.info( "http response code:" + rc );
+ err.setCode(rc);
responsemessage = uc.getResponseMessage();
logger.info( "responsemessage=" + responsemessage );
err.setMessage(responsemessage);
}
}
if (rc >= 200 && rc < 300 ) {
- String responseBody = null;
- responseBody = bodyToString( uc.getInputStream() );
- logger.info( "responseBody=" + responseBody );
- return responseBody;
+ String responseBody = null;
+ responseBody = bodyToString( uc.getInputStream() );
+ logger.info( "responseBody=" + responseBody );
+ return responseBody;
}
- } catch (Exception e) {
- errorLogger.error("Unable to read response " );
+ } catch (Exception e) {
+ errorLogger.error("Unable to read response " );
}
- finally {
- try {
- uc.disconnect();
- } catch ( Exception e ) {
- errorLogger.error("Unable to disconnect");
- }
- }
- return new String( rc +": " + responsemessage );
+ finally {
+ try {
+ uc.disconnect();
+ } catch ( Exception e ) {
+ errorLogger.error("Unable to disconnect");
+ }
+ }
+ return new String( rc +": " + responsemessage );
- }
-
+ }
+
-
+
}
import org.onap.dmaap.dbcapi.util.RandomString;
+import java.util.Objects;
+
@XmlRootElement
public class DR_Pub extends DmaapObject {
return ri.nextString();
}
-
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ DR_Pub dr_pub = (DR_Pub) o;
+ return Objects.equals(dcaeLocationName, dr_pub.dcaeLocationName) &&
+ Objects.equals(username, dr_pub.username) &&
+ Objects.equals(userpwd, dr_pub.userpwd) &&
+ Objects.equals(feedId, dr_pub.feedId) &&
+ Objects.equals(pubId, dr_pub.pubId);
+ }
+
+ @Override
+ public int hashCode() {
+
+ return Objects.hash(dcaeLocationName, username, userpwd, feedId, pubId);
+ }
+
+ @Override
+ public String toString() {
+ return "DR_Pub{" +
+ "dcaeLocationName='" + dcaeLocationName + '\'' +
+ ", username='" + username + '\'' +
+ ", userpwd='" + userpwd + '\'' +
+ ", feedId='" + feedId + '\'' +
+ ", pubId='" + pubId + '\'' +
+ ", feedName='" + feedName + '\'' +
+ ", feedVersion='" + feedVersion + '\'' +
+ '}';
+ }
}
}
// if we found a FeedName instead of a FeedId then try to look it up.
List<Feed> nfeeds = feeds.getAllFeeds( pub.getFeedName(), pub.getFeedVersion(), "equals");
- if ( nfeeds.size() != 1 ) {
- logger.debug( "Attempt to match "+ pub.getFeedName() + " ver="+pub.getFeedVersion() + " matched " + nfeeds.size() );
+ if ( nfeeds.isEmpty() ) {
+ apiError.setCode(Status.NOT_FOUND.getStatusCode());
+ apiError.setFields("feedName");
return responseBuilder.error(apiError);
}
fnew = nfeeds.get(0);
MDC.put(MDC_SERVER_FQDN, InetAddress.getLocalHost().getHostName());
MDC.put(MDC_SERVER_IP_ADDRESS, InetAddress.getLocalHost().getHostAddress());
} catch (Exception e) {
- e.printStackTrace();
+ errorLogger.error("Error while getting hostname or address", e);
}
MDC.put(MDC_INSTANCE_UUID, UUID.randomUUID().toString());
MDC.put(MDC_ALERT_SEVERITY, "0");
-
/*-
* ============LICENSE_START=======================================================
* org.onap.dmaap
* ================================================================================
* Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
* ================================================================================
+ * Modifications Copyright (c) 2019 IBM
+ * ===================================================================
* 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
* limitations under the License.
* ============LICENSE_END=========================================================
*/
+
package org.onap.dmaap.dbcapi.database;
-import org.onap.dmaap.dbcapi.database.DBFieldHandler;
-import org.onap.dmaap.dbcapi.model.*;
-import org.onap.dmaap.dbcapi.testframework.ReflectionHarness;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
-import static org.junit.Assert.*;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
-import org.junit.After;
-import org.junit.Before;
+import org.apache.log4j.Logger;
import org.junit.Test;
-import java.util.*;
-import java.sql.*;
+import org.onap.dmaap.dbcapi.authentication.AafLurAndFish;
+import org.onap.dmaap.dbcapi.model.ReplicationType;
+import org.onap.dmaap.dbcapi.testframework.ReflectionHarness;
public class DBFieldHandlerTest {
- private static final String fmt = "%24s: %s%n";
+ private static final Logger logger = Logger.getLogger(AafLurAndFish.class);
- ReflectionHarness rh = new ReflectionHarness();
+ private static final String fmt = "%24s: %s%n";
- private static class TopicReplicationTypeHandler implements DBFieldHandler.SqlOp {
+ ReflectionHarness rh = new ReflectionHarness();
+
+ private static class TopicReplicationTypeHandler implements DBFieldHandler.SqlOp {
public Object get(ResultSet rs, int index) throws Exception {
int val = rs.getInt(index);
return (ReplicationType.valueOf(val));
}
+
public void set(PreparedStatement ps, int index, Object val) throws Exception {
if (val == null) {
ps.setInt(index, 0);
}
}
+ @Test
+ public void test1() {
+ // rh.reflect( "org.onap.dmaap.dbcapi.aaf.client.MrTopicConnection", "get",
+ // "idNotSet@namespaceNotSet:pwdNotSet" );
+ }
+ @Test
+ public void test2() {
+ String v = "Validate";
+ // rh.reflect( "org.onap.dmaap.dbcapi.aaf.client.MrTopicConnection", "set", v );
+ }
- @Before
- public void setUp() throws Exception {
- }
-
- @After
- public void tearDown() throws Exception {
- }
-
-
- @Test
- public void test1() {
-
-
- //rh.reflect( "org.onap.dmaap.dbcapi.aaf.client.MrTopicConnection", "get", "idNotSet@namespaceNotSet:pwdNotSet" );
-
- }
-
- @Test
- public void test2() {
- String v = "Validate";
- //rh.reflect( "org.onap.dmaap.dbcapi.aaf.client.MrTopicConnection", "set", v );
-
- }
-
- @Test
- public void test3() {
-
- try {
- DBFieldHandler fh = new DBFieldHandler( String.class, "aString", 1 );
- } catch (Exception e ) {
- }
-
- }
-
- @Test
- public void test4() {
-
- try {
- DBFieldHandler fh = new DBFieldHandler( String.class, "aString", 1, null );
- } catch (Exception e ) {
- }
+ @Test
+ public void test3() {
+ try {
+ DBFieldHandler fh = new DBFieldHandler(String.class, "aString", 1);
+ } catch (Exception e) {
+ logger.error("Error", e);
+ }
+ }
- }
+ @Test
+ public void test4() {
+ try {
+ DBFieldHandler fh = new DBFieldHandler(String.class, "aString", 1, null);
+ } catch (Exception e) {
+ logger.error("Error", e);
+ }
+ }
+ @Test
+ public void testfesc() {
+ String sampleString = "@xyz,ww;,";
+ String finalString = DBFieldHandler.fesc(sampleString);
+ assertEquals("@axyz@cww@s@c", finalString);
+ }
+ @Test
+ public void testfunesc() {
+ String sampleString = "@axyz@cww@s@c";
+ String convertedString = DBFieldHandler.funesc(sampleString);
+ assertEquals("@xyz,ww;,", convertedString);
+ }
+ @Test
+ public void testfescWithNull() {
+ String sampleString1 = DBFieldHandler.fesc(null);
+ String sampleString2 = DBFieldHandler.funesc(null);
+ assertNull(null, sampleString1);
+ assertNull(null, sampleString2);
+ }
}
-
* ================================================================================
* Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
* ================================================================================
+ * Modifications Copyright (c) 2019 IBM
+ * ================================================================================
* 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
*/
package org.onap.dmaap.dbcapi.model;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.onap.dmaap.dbcapi.model.DmaapObject.DmaapObject_Status;
import org.onap.dmaap.dbcapi.testframework.ReflectionHarness;
-
public class TopicTest {
- private static final String fmt = "%24s: %s%n";
-
- ReflectionHarness rh = new ReflectionHarness();
-
- String f, t, d, e, o;
-
- @Before
- public void setUp() throws Exception {
- f = "org.onap.dmaap.interestingTopic";
- t = "interestingTopic";
- d = "A so very interesting topic";
- e = "Yes";
- o = "m12345";
- }
-
- @After
- public void tearDown() throws Exception {
- }
-
-
- @Test
- public void test1() {
-
-
- rh.reflect( "org.onap.dmaap.dbcapi.model.Topic", "get", null );
-
- }
-
- @Test
- public void test2() {
- String[] a = { "put", "view" };
- Topic obj = new Topic( f, t, d, e, o );
-
-
- assertTrue( f.equals( obj.getFqtn() ));
- assertTrue( t.equals( obj.getTopicName() ));
- assertTrue( d.equals( obj.getTopicDescription() ));
- assertTrue( e.equals( obj.getTnxEnabled() ));
- assertTrue( o.equals( obj.getOwner() ));
- }
-
- @Test
- public void test3() {
-
- String v = "Validate";
- rh.reflect( "org.onap.dmaap.dbcapi.model.Topic", "set", v );
- }
+ ReflectionHarness rh = new ReflectionHarness();
+
+ String f, t, d, e, o;
+
+ @Before
+ public void setUp() throws Exception {
+ f = "org.onap.dmaap.interestingTopic";
+ t = "interestingTopic";
+ d = "A so very interesting topic";
+ e = "Yes";
+ o = "m12345";
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ @Test
+ public void test1() {
+ rh.reflect("org.onap.dmaap.dbcapi.model.Topic", "get", null);
+ }
+
+ @Test
+ public void test2() {
+ Topic obj = new Topic(f, t, d, e, o);
+ assertTrue(f.equals(obj.getFqtn()));
+ assertTrue(t.equals(obj.getTopicName()));
+ assertTrue(d.equals(obj.getTopicDescription()));
+ assertTrue(e.equals(obj.getTnxEnabled()));
+ assertTrue(o.equals(obj.getOwner()));
+ }
+
+ @Test
+ public void test3() {
+ String v = "Validate";
+ rh.reflect("org.onap.dmaap.dbcapi.model.Topic", "set", v);
+ }
+
+ @Test
+ public void getNumClientsHavingMRClientListNull() {
+ Topic obj = new Topic(f, t, d, e, o);
+ obj.setClients(null);
+ assertEquals(0, obj.getNumClients());
+ }
+
+ @Test
+ public void testTopicInitializationWithInvalidJsonString() {
+ String json = "{\"key\":\"value\"";
+ Topic obj = new Topic(json);
+ assertEquals(DmaapObject_Status.INVALID, obj.getStatus());
+ }
}
* 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.
* ============LICENSE_END=========================================================
*/
package org.onap.dmaap.dbcapi.resources;
-import org.onap.dmaap.dbcapi.model.*;
-import org.onap.dmaap.dbcapi.service.*;
-import static org.junit.Assert.*;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import java.util.*;
-import java.sql.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
-import org.glassfish.jersey.test.JerseyTest;
-import org.glassfish.jersey.server.ResourceConfig;
import javax.ws.rs.client.Entity;
-import javax.ws.rs.core.Application;
-import javax.ws.rs.core.Response;
import javax.ws.rs.core.MediaType;
-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;
- }
-
- private DR_Pub addPubByName( String d, String un, String up, String feedName) {
- DR_Pub dr_pub = new DR_Pub( d, un, up, null, "" );
- dr_pub.setFeedName(feedName);
- 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 PostTestByName() {
-
- Feed feed = addFeed( "pubPostTest2", "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 = addPubByName( d, un, up, "pubPostTest2" );
- }
-
- @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(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());
+
+ }
+
+ @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 subscription 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 subscription", 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("Subscription 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("SubscriberTestFeed", "feed for DR_Sub testing");
+ assertNotNull("Feed shall be added into DB properly", feed);
+ return feed.getFeedId();
+ }
}
private static final String DELIVERY_URL_TEMPLATE = "https://subscriber.onap.org/delivery/";
private static final String LOG_URL_TEMPLATE = "https://dr-prov/sublog/";
private static FastJerseyTestContainer testContainer;
+ private static TestFeedCreator testFeedCreator;
@BeforeClass
public static void setUpClass() throws Exception {
.register(DR_SubResource.class)
.register(FeedResource.class));
testContainer.init();
+ testFeedCreator = new TestFeedCreator(testContainer);
}
@AfterClass
public void addDr_Sub_shallExecuteSuccessfully_whenValidFeedNameProvided() {
//given
String feedName = "testFeed";
- addFeed(feedName, "test feed");
+ testFeedCreator.addFeed(feedName, "test feed");
DR_Sub drSub = new DR_Sub(DCAE_LOCATION_NAME, USERNAME, USRPWD, null, DELIVERY_URL, LOG_URL, true);
drSub.setFeedName(feedName);
Entity<DR_Sub> requestedEntity = Entity.entity(drSub, MediaType.APPLICATION_JSON);
assertNotNull(resp.readEntity(ApiError.class));
}
- 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 = testContainer.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_Sub addSub(String d, String un, String up, String feedId) {
DR_Sub dr_sub = new DR_Sub(d, un, up, feedId,
"https://subscriber.onap.org/foo", "https://dr-prov/sublog", true);
}
private String assureFeedIsInDB() {
- Feed feed = addFeed("SubscriberTestFeed", "feed for DR_Sub testing");
+ Feed feed = testFeedCreator.addFeed("SubscriberTestFeed", "feed for DR_Sub testing");
assertNotNull("Feed shall be added into DB properly", feed);
return feed.getFeedId();
}
--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * org.onap.dmaap
+ * ================================================================================
+ * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Modifications Copyright (c) 2019 IBM
+ * ===================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.dmaap.dbcapi.resources;
+
+import static javax.ws.rs.core.Response.Status.BAD_REQUEST;
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.dmaap.dbcapi.model.ApiError;
+
+public class RequiredFieldExceptionTest {
+ ApiError apiError;
+ RequiredFieldException requiredFieldException;
+ String expectedValue;
+
+ @Before
+ public void setUp() {
+ apiError = new ApiError(BAD_REQUEST.getStatusCode(), "value 'with white space' violates regexp check '^\\S+$'",
+ "field_name");
+
+ expectedValue = "RequiredFieldException{" + "apiError=" + apiError + '}';
+
+ requiredFieldException = new RequiredFieldException(apiError);
+ }
+
+ @Test
+ public void testRequiredFieldExceptionToString() {
+ assertEquals(expectedValue, requiredFieldException.toString());
+ }
+}
--- /dev/null
+/*-\r
+ * ============LICENSE_START=======================================================\r
+ * org.onap.dmaap\r
+ * ================================================================================\r
+ * Copyright (C) 2019 Nokia Intellectual Property. All rights reserved.\r
+ * ================================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=========================================================\r
+ */\r
+package org.onap.dmaap.dbcapi.resources;\r
+\r
+import static org.junit.Assert.assertTrue;\r
+\r
+import javax.ws.rs.client.Entity;\r
+import javax.ws.rs.core.MediaType;\r
+import javax.ws.rs.core.Response;\r
+import org.onap.dmaap.dbcapi.model.Feed;\r
+\r
+\r
+public class TestFeedCreator {\r
+\r
+\r
+ private final FastJerseyTestContainer testContainer;\r
+\r
+ public TestFeedCreator(FastJerseyTestContainer testContainer) {\r
+ this.testContainer = testContainer;\r
+ }\r
+\r
+ Feed addFeed(String name, String desc) {\r
+ Feed feed = new Feed(name, "1.0", desc, "dgl", "unrestricted");\r
+ Entity<Feed> reqEntity = Entity.entity(feed, MediaType.APPLICATION_JSON);\r
+ Response resp = testContainer.target("feeds").request().post(reqEntity, Response.class);\r
+ int rc = resp.getStatus();\r
+ System.out.println("POST feed resp=" + rc);\r
+ assertTrue(rc == 200 || rc == 409);\r
+ feed = resp.readEntity(Feed.class);\r
+ return feed;\r
+ }\r
+}\r