aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pom.xml2
-rw-r--r--src/main/java/org/onap/dmaap/dbcapi/database/DatabaseClass.java2
-rw-r--r--src/main/java/org/onap/dmaap/dbcapi/model/Dmaap.java82
-rw-r--r--src/main/java/org/onap/dmaap/dbcapi/service/TopicService.java33
-rw-r--r--src/main/java/org/onap/dmaap/dbcapi/util/PermissionBuilder.java7
-rw-r--r--src/test/java/org/onap/dmaap/dbcapi/database/DBMapTest.java7
-rw-r--r--src/test/java/org/onap/dmaap/dbcapi/database/DBSingletonTest.java7
-rw-r--r--src/test/java/org/onap/dmaap/dbcapi/model/DmaapTest.java6
-rw-r--r--src/test/java/org/onap/dmaap/dbcapi/service/DmaapServiceTest.java4
-rw-r--r--src/test/java/org/onap/dmaap/dbcapi/service/TopicServiceTest.java377
-rw-r--r--src/test/java/org/onap/dmaap/dbcapi/testframework/DmaapObjectFactory.java25
-rw-r--r--src/test/java/org/onap/dmaap/dbcapi/util/PermissionBuilderTest.java23
-rw-r--r--version.properties2
13 files changed, 323 insertions, 254 deletions
diff --git a/pom.xml b/pom.xml
index 6517cd1..a555393 100644
--- a/pom.xml
+++ b/pom.xml
@@ -387,7 +387,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jettyVersion>9.4.12.RC2</jettyVersion>
<eelf.version>1.0.0</eelf.version>
- <artifact.version>1.0.26-SNAPSHOT</artifact.version>
+ <artifact.version>1.0.28-SNAPSHOT</artifact.version>
<!-- SONAR -->
<jacoco.version>0.7.7.201606060606</jacoco.version>
<sonar-jacoco-listeners.version>3.2</sonar-jacoco-listeners.version>
diff --git a/src/main/java/org/onap/dmaap/dbcapi/database/DatabaseClass.java b/src/main/java/org/onap/dmaap/dbcapi/database/DatabaseClass.java
index c853782..14bacc4 100644
--- a/src/main/java/org/onap/dmaap/dbcapi/database/DatabaseClass.java
+++ b/src/main/java/org/onap/dmaap/dbcapi/database/DatabaseClass.java
@@ -109,7 +109,7 @@ public class DatabaseClass extends BaseLoggingClass {
break;
}
- dmaap.init(new Dmaap("0", "", "", "", "", "", "", ""));
+ dmaap.init(new Dmaap.DmaapBuilder().setVer("0").setTnr("").setDn("").setDpu("").setLu("").setBat("").setNk("").setAko("").createDmaap());
// force initial read from DB, if it exists
@SuppressWarnings("unused")
Dmaap dmx = dmaap.get();
diff --git a/src/main/java/org/onap/dmaap/dbcapi/model/Dmaap.java b/src/main/java/org/onap/dmaap/dbcapi/model/Dmaap.java
index ba7fd42..96248f3 100644
--- a/src/main/java/org/onap/dmaap/dbcapi/model/Dmaap.java
+++ b/src/main/java/org/onap/dmaap/dbcapi/model/Dmaap.java
@@ -22,8 +22,6 @@ package org.onap.dmaap.dbcapi.model;
import javax.xml.bind.annotation.XmlRootElement;
-import org.apache.log4j.Logger;
-
@XmlRootElement
public class Dmaap extends DmaapObject {
@@ -42,26 +40,74 @@ public class Dmaap extends DmaapObject {
}
- public Dmaap( String ver,
- String tnr,
- String dn,
- String dpu,
- String lu,
- String bat,
- String nk,
- String ako ) {
- this.version = ver;
- this.topicNsRoot = tnr;
- this.dmaapName = dn;
- this.drProvUrl = dpu;
- this.bridgeAdminTopic = bat;
- this.loggingUrl = lu;
- this.nodeKey = nk;
- this.accessKeyOwner = ako;
+ public Dmaap( DmaapBuilder builder ) {
+ this.version = builder.ver;
+ this.topicNsRoot = builder.tnr;
+ this.dmaapName = builder.dn;
+ this.drProvUrl = builder.dpu;
+ this.bridgeAdminTopic = builder.bat;
+ this.loggingUrl = builder.lu;
+ this.nodeKey = builder.nk;
+ this.accessKeyOwner = builder.ako;
this.setStatus( DmaapObject_Status.NEW );
}
+ public static class DmaapBuilder {
+ private String ver;
+ private String tnr;
+ private String dn;
+ private String dpu;
+ private String lu;
+ private String bat;
+ private String nk;
+ private String ako;
+
+ public DmaapBuilder setVer(String ver) {
+ this.ver = ver;
+ return this;
+ }
+
+ public DmaapBuilder setTnr(String tnr) {
+ this.tnr = tnr;
+ return this;
+ }
+
+ public DmaapBuilder setDn(String dn) {
+ this.dn = dn;
+ return this;
+ }
+
+ public DmaapBuilder setDpu(String dpu) {
+ this.dpu = dpu;
+ return this;
+ }
+
+ public DmaapBuilder setLu(String lu) {
+ this.lu = lu;
+ return this;
+ }
+
+ public DmaapBuilder setBat(String bat) {
+ this.bat = bat;
+ return this;
+ }
+
+ public DmaapBuilder setNk(String nk) {
+ this.nk = nk;
+ return this;
+ }
+
+ public DmaapBuilder setAko(String ako) {
+ this.ako = ako;
+ return this;
+ }
+
+ public Dmaap createDmaap() {
+ return new Dmaap(this);
+ }
+ }
+
public String getVersion() {
return version;
}
diff --git a/src/main/java/org/onap/dmaap/dbcapi/service/TopicService.java b/src/main/java/org/onap/dmaap/dbcapi/service/TopicService.java
index 68dfd51..08e58be 100644
--- a/src/main/java/org/onap/dmaap/dbcapi/service/TopicService.java
+++ b/src/main/java/org/onap/dmaap/dbcapi/service/TopicService.java
@@ -59,13 +59,13 @@ public class TopicService extends BaseLoggingClass {
// REF: https://wiki.web.att.com/pages/viewpage.action?pageId=519703122
private static String defaultGlobalMrHost;
- private Map<String, Topic> mr_topics = DatabaseClass.getTopics();
+ private Map<String, Topic> mr_topics;
private static DmaapService dmaapSvc = new DmaapService();
- private MR_ClientService clientService = new MR_ClientService();
- private MR_ClusterService clusters = new MR_ClusterService();
- private DcaeLocationService locations = new DcaeLocationService();
- private MirrorMakerService bridge = new MirrorMakerService();
+ private MR_ClientService clientService;
+ private MR_ClusterService clusters;
+ private DcaeLocationService locations;
+ private MirrorMakerService bridge;
private static String centralCname;
private static boolean createTopicRoles;
@@ -74,22 +74,33 @@ public class TopicService extends BaseLoggingClass {
public TopicService(){
- DmaapConfig p = (DmaapConfig)DmaapConfig.getConfig();
+ this(DatabaseClass.getTopics(), new MR_ClientService(), (DmaapConfig)DmaapConfig.getConfig(),
+ new MR_ClusterService(), new DcaeLocationService(), new MirrorMakerService());
+
+ }
+
+ TopicService(Map<String, Topic> mr_topics, MR_ClientService clientService, DmaapConfig p,
+ MR_ClusterService clusters, DcaeLocationService locations, MirrorMakerService bridge) {
+ this.mr_topics = mr_topics;
+ this.clientService = clientService;
defaultGlobalMrHost = p.getProperty("MR.globalHost", "global.host.not.set");
centralCname = p.getProperty("MR.CentralCname");
createTopicRoles = "true".equalsIgnoreCase(p.getProperty("aaf.CreateTopicRoles", "true"));
String unit_test = p.getProperty( "UnitTest", "No" );
- if ( unit_test.equals( "Yes" ) ) {
+ if ( "Yes".equals(unit_test)) {
strictGraph = false;
}
mmPerMR = "true".equalsIgnoreCase(p.getProperty("MirrorMakerPerMR", "true"));
- logger.info( "TopicService properties: CentralCname=" + centralCname +
+ logger.info( "TopicService properties: CentralCname=" + centralCname +
" defaultGlobarlMrHost=" + defaultGlobalMrHost +
" createTopicRoles=" + createTopicRoles +
" mmPerMR=" + mmPerMR );
+ this.clusters = clusters;
+ this.locations = locations;
+ this.bridge = bridge;
}
-
- public Map<String, Topic> getTopics() {
+
+ public Map<String, Topic> getTopics() {
return mr_topics;
}
@@ -104,7 +115,7 @@ public class TopicService extends BaseLoggingClass {
ArrayList<Topic> topics = new ArrayList<>(mr_topics.values());
if ( withClients ) {
for( Topic topic: topics ) {
- topic.setClients( clientService.getAllMrClients(topic.getFqtn()));
+ topic.setClients(clientService.getAllMrClients(topic.getFqtn()));
}
}
return topics;
diff --git a/src/main/java/org/onap/dmaap/dbcapi/util/PermissionBuilder.java b/src/main/java/org/onap/dmaap/dbcapi/util/PermissionBuilder.java
index 44c94af..d1f6b2b 100644
--- a/src/main/java/org/onap/dmaap/dbcapi/util/PermissionBuilder.java
+++ b/src/main/java/org/onap/dmaap/dbcapi/util/PermissionBuilder.java
@@ -73,11 +73,8 @@ public class PermissionBuilder {
private String getPermissionType(String pathInfo) {
char pathSeparator = '/';
- String relativePath = (pathInfo.charAt(pathInfo.length()-1) == pathSeparator) ?
- pathInfo.substring(0,pathInfo.length()-1) : pathInfo;
-
- String[] pathSlices = relativePath.split(String.valueOf(pathSeparator));
- return pathSlices[pathSlices.length-1];
+ String[] pathSlices = pathInfo.split(String.valueOf(pathSeparator));
+ return pathSlices[1];
}
String getInstance() {
diff --git a/src/test/java/org/onap/dmaap/dbcapi/database/DBMapTest.java b/src/test/java/org/onap/dmaap/dbcapi/database/DBMapTest.java
index 338479d..abd4aee 100644
--- a/src/test/java/org/onap/dmaap/dbcapi/database/DBMapTest.java
+++ b/src/test/java/org/onap/dmaap/dbcapi/database/DBMapTest.java
@@ -19,19 +19,14 @@
*/
package org.onap.dmaap.dbcapi.database;
-import org.onap.dmaap.dbcapi.database.DBMap;
-import org.onap.dmaap.dbcapi.database.DBSingleton;
import org.onap.dmaap.dbcapi.model.*;
import org.onap.dmaap.dbcapi.testframework.ReflectionHarness;
import org.onap.dmaap.dbcapi.util.Singleton;
-import static org.junit.Assert.*;
-
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.*;
-import java.sql.*;
public class DBMapTest {
@@ -72,7 +67,7 @@ public class DBMapTest {
public void test3() {
try {
dmaap = new DBSingleton<Dmaap>(Dmaap.class, "dmaap");
- Dmaap nd = new Dmaap();
+ Dmaap nd = new Dmaap.DmaapBuilder().createDmaap();
dmaap.update(nd);
} catch (Exception e ) {
}
diff --git a/src/test/java/org/onap/dmaap/dbcapi/database/DBSingletonTest.java b/src/test/java/org/onap/dmaap/dbcapi/database/DBSingletonTest.java
index 18eff64..003f250 100644
--- a/src/test/java/org/onap/dmaap/dbcapi/database/DBSingletonTest.java
+++ b/src/test/java/org/onap/dmaap/dbcapi/database/DBSingletonTest.java
@@ -20,17 +20,12 @@
*/
package org.onap.dmaap.dbcapi.database;
-import org.onap.dmaap.dbcapi.database.DBSingleton;
import org.onap.dmaap.dbcapi.model.*;
import org.onap.dmaap.dbcapi.testframework.ReflectionHarness;
-import static org.junit.Assert.*;
-
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
-import java.util.*;
-import java.sql.*;
public class DBSingletonTest {
@@ -54,7 +49,7 @@ public class DBSingletonTest {
try {
DBSingleton<Dmaap> dmaap = new DBSingleton<Dmaap>(Dmaap.class, "dmaap");
- Dmaap d = new Dmaap();
+ Dmaap d = new Dmaap.DmaapBuilder().createDmaap();
dmaap.init( d );
d = dmaap.get();
d.setDmaapName( "foo" );
diff --git a/src/test/java/org/onap/dmaap/dbcapi/model/DmaapTest.java b/src/test/java/org/onap/dmaap/dbcapi/model/DmaapTest.java
index c0f3bef..cb0c22f 100644
--- a/src/test/java/org/onap/dmaap/dbcapi/model/DmaapTest.java
+++ b/src/test/java/org/onap/dmaap/dbcapi/model/DmaapTest.java
@@ -48,7 +48,7 @@ public class DmaapTest {
@Test
public void testDmaapClassDefaultConstructor() {
- Dmaap t = new Dmaap();
+ Dmaap t = new Dmaap.DmaapBuilder().createDmaap();
assertTrue( t.getVersion() == null );
assertTrue( t.getTopicNsRoot() == null );
@@ -64,7 +64,7 @@ public class DmaapTest {
@Test
public void testDmaapClassConstructor() {
- Dmaap t = new Dmaap( ver, tnr, dn, dpu, lu, bat, nk, ako );
+ Dmaap t = new Dmaap.DmaapBuilder().setVer(ver).setTnr(tnr).setDn(dn).setDpu(dpu).setLu(lu).setBat(bat).setNk(nk).setAko(ako).createDmaap();
assertTrue( ver.equals( t.getVersion() ));
assertTrue( tnr.equals( t.getTopicNsRoot() ));
@@ -80,7 +80,7 @@ public class DmaapTest {
@Test
public void testDmaapClassSetters() {
- Dmaap t = new Dmaap();
+ Dmaap t = new Dmaap.DmaapBuilder().createDmaap();
t.setVersion( ver );
assertTrue( ver.equals( t.getVersion() ));
diff --git a/src/test/java/org/onap/dmaap/dbcapi/service/DmaapServiceTest.java b/src/test/java/org/onap/dmaap/dbcapi/service/DmaapServiceTest.java
index c1fa0fd..b8b660f 100644
--- a/src/test/java/org/onap/dmaap/dbcapi/service/DmaapServiceTest.java
+++ b/src/test/java/org/onap/dmaap/dbcapi/service/DmaapServiceTest.java
@@ -60,7 +60,7 @@ public class DmaapServiceTest {
@Test
public void test3() {
- Dmaap nd = new Dmaap( "1", "org.onap.dmaap", "onap-demo", "drps.demo.onap.org", "", "MMAGENT_TOPIC", "", "" );
+ Dmaap nd = new Dmaap.DmaapBuilder().setVer("1").setTnr("org.onap.dmaap").setDn("onap-demo").setDpu("drps.demo.onap.org").setLu("").setBat("MMAGENT_TOPIC").setNk("").setAko("").createDmaap();
ds.addDmaap( nd );
}
@@ -72,7 +72,7 @@ public class DmaapServiceTest {
@Test
public void test5() {
- Dmaap nd = new Dmaap( "2", "org.onap.dmaap", "onap-demo", "drps.demo.onap.org", "", "MMAGENT_TOPIC", "", "" );
+ Dmaap nd = new Dmaap.DmaapBuilder().setVer("2").setTnr("org.onap.dmaap").setDn("onap-demo").setDpu("drps.demo.onap.org").setLu("").setBat("MMAGENT_TOPIC").setNk("").setAko("").createDmaap();
ds.updateDmaap( nd );
}
diff --git a/src/test/java/org/onap/dmaap/dbcapi/service/TopicServiceTest.java b/src/test/java/org/onap/dmaap/dbcapi/service/TopicServiceTest.java
index f571520..33a5411 100644
--- a/src/test/java/org/onap/dmaap/dbcapi/service/TopicServiceTest.java
+++ b/src/test/java/org/onap/dmaap/dbcapi/service/TopicServiceTest.java
@@ -2,14 +2,14 @@
* ============LICENSE_START=======================================================
* org.onap.dmaap
* ================================================================================
- * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2019 Nokia Intellectual Property. All rights reserved.
* ================================================================================
* 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.
@@ -17,190 +17,223 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
-package org.onap.dmaap.dbcapi.service;
-
-import org.onap.dmaap.dbcapi.model.*;
-import org.onap.dmaap.dbcapi.testframework.DmaapObjectFactory;
-import org.onap.dmaap.dbcapi.testframework.ReflectionHarness;
-import static org.junit.Assert.*;
+package org.onap.dmaap.dbcapi.service;
-import org.junit.After;
+import com.google.common.collect.ImmutableMap;
+import org.hamcrest.BaseMatcher;
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
import org.junit.Before;
import org.junit.Test;
-import java.util.List;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.onap.dmaap.dbcapi.model.ApiError;
+import org.onap.dmaap.dbcapi.model.MR_Client;
+import org.onap.dmaap.dbcapi.model.Topic;
+import org.onap.dmaap.dbcapi.util.DmaapConfig;
+
+import javax.ws.rs.core.Response;
import java.util.ArrayList;
-
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.google.common.collect.Iterables.getOnlyElement;
+import static com.google.common.collect.Lists.newArrayList;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertThat;
+import static org.mockito.BDDMockito.given;
+import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.onap.dmaap.dbcapi.model.ReplicationType.REPLICATION_GLOBAL_TO_FQDN;
+
+@RunWith(MockitoJUnitRunner.class)
public class TopicServiceTest {
- private static final String fmt = "%24s: %s%n";
- private static DmaapObjectFactory factory = new DmaapObjectFactory();
- ReflectionHarness rh = new ReflectionHarness();
-
- private TopicService ts;
- private MR_ClusterService mcs;
- private MR_ClientService cls;
- private DcaeLocationService dls;
-
- DmaapService ds;
- String locname;
-
- @Before
- public void setUp() throws Exception {
- ts = new TopicService();
- assert( ts != null );
- mcs = new MR_ClusterService();
- assert( mcs != null );
- Dmaap nd = factory.genDmaap();
- ds = new DmaapService();
- ds.addDmaap( nd );
- ts = new TopicService();
- mcs = new MR_ClusterService();
- cls = new MR_ClientService();
-
- dls = new DcaeLocationService();
- DcaeLocation loc = factory.genDcaeLocation( "central" );
- locname = loc.getDcaeLocationName();
- dls.addDcaeLocation( loc );
- loc = factory.genDcaeLocation( "edge");
-
- ApiError err = new ApiError();
-
- MR_Cluster node = factory.genMR_Cluster( "central" );
- mcs.addMr_Cluster( node, err);
- node = factory.genMR_Cluster("edge" );
- mcs.addMr_Cluster(node, err);
- }
-
- @After
- public void tearDown() throws Exception {
- }
-
-
- @Test
- public void test1() {
-
-
- rh.reflect( "org.onap.dmaap.dbcapi.service.TopicService", "get", null );
-
- }
-
- @Test
- public void test2() {
- String v = "Validate";
- rh.reflect( "org.onap.dmaap.dbcapi.service.TopicService", "set", v );
-
- }
-
- @Test
- public void test3() {
- String t = "test3";
- Topic topic = factory.genSimpleTopic( t );
- ApiError err = new ApiError();
-
- Topic nTopic = ts.addTopic( topic, err, false );
- if ( nTopic != null ) {
- assertTrue( nTopic.getTopicName().equals( t ));
- }
-
- }
-
- @Test
- public void test3a() {
-
-
- ApiError err = new ApiError();
-
- String t = "org.onap.dmaap.interestingTopic";
- Topic topic = factory.genSimpleTopic(t);
- String f = "mrc.onap.org:3904/events/org.onap.dmaap.interestingTopic";
- String c = "publisher";
- String[] a = { "sub", "view" };
- MR_Client sub = factory.genMR_Client("central", f, c, a );
- String[] b = { "pub", "view" };
- MR_Client pub = factory.genMR_Client( "edge", f, c, b );
- ArrayList<MR_Client> clients = new ArrayList<MR_Client>();
-
- clients.add( sub );
- clients.add( pub );
-
- topic.setClients( clients );
-
- ts.reviewTopic( topic );
- ts.checkForBridge( topic, err );
-
- Topic nTopic = ts.addTopic( topic, err, false );
- if ( nTopic != null ) {
- assertTrue( nTopic.getTopicName().equals( t ));
- }
-
-
- ts.removeTopic( "test3", err );
- }
-
- @Test
- public void test4() {
- List<Topic> l = ts.getAllTopics();
-
- }
-
- @Test
- public void test5() {
- ApiError err = new ApiError();
-
- Topic topic = factory.genSimpleTopic("test5");
- Topic nTopic = ts.updateTopic( topic, err );
-
- assertTrue( err.getCode() == 200 );
- }
-
- @Test
- public void bridgeTest6() {
- ApiError err = new ApiError();
+ private static final String TOPIC_FQTN = "topic_1";
+ private static final String GLOBAL_MR_HOST = "global.mr.host";
+ private TopicService topicService;
+ @Mock
+ private MR_ClientService clientService;
+ @Mock
+ private DmaapConfig dmaapConfig;
+ @Mock
+ private MR_ClusterService clusters;
+ @Mock
+ private DcaeLocationService locations;
+ @Mock
+ private MirrorMakerService bridge;
+
+ @Before
+ public void setUp() throws Exception {
+ given(dmaapConfig.getProperty("MR.globalHost", "global.host.not.set")).willReturn(GLOBAL_MR_HOST);
+ createTopicService();
+ }
+
+ @Test
+ public void getTopics_shouldReturnTopicsReceivedDuringServiceCreation() {
+
+ ImmutableMap<String, Topic> topics = ImmutableMap.of(TOPIC_FQTN, new Topic());
+ topicService = new TopicService(topics, clientService, dmaapConfig, clusters, locations, bridge);
+
+ assertEquals(topics, topicService.getTopics());
+ }
+
+ @Test
+ public void getAllTopics_shouldReturnTopicsWithClients() {
+
+ ArrayList<MR_Client> mrClients = newArrayList(new MR_Client());
+ given(clientService.getAllMrClients(TOPIC_FQTN)).willReturn(mrClients);
+
+ List<Topic> allTopics = topicService.getAllTopics();
+
+ assertThat(getOnlyElement(allTopics), hasCorrectFqtn(TOPIC_FQTN));
+ assertEquals(mrClients, getOnlyElement(allTopics).getClients());
+ }
+
+ @Test
+ public void getAllTopicsWithoutClients_shouldReturnNoClients() {
+
+ List<Topic> allTopics = topicService.getAllTopicsWithoutClients();
+
+ assertThat(getOnlyElement(allTopics), hasCorrectFqtn(TOPIC_FQTN));
+ assertNull(getOnlyElement(allTopics).getClients());
+ verifyZeroInteractions(clientService);
+ }
+
+ @Test
+ public void getAllTopics_shouldCacheClients() {
+
+ ArrayList<MR_Client> mrClients = newArrayList(new MR_Client());
+ given(clientService.getAllMrClients(TOPIC_FQTN)).willReturn(mrClients);
+
+ topicService.getAllTopics();
+ List<Topic> allTopics = topicService.getAllTopicsWithoutClients();
+
+ assertThat(getOnlyElement(allTopics), hasCorrectFqtn(TOPIC_FQTN));
+ assertEquals(mrClients, getOnlyElement(allTopics).getClients());
+ }
+
+ @Test
+ public void getTopic_shouldReturnTopicByFqtn() {
+
+ ApiError apiError = new ApiError();
+ Topic topic = topicService.getTopic(TOPIC_FQTN, apiError);
+
+ assertThat(topic, hasCorrectFqtn(TOPIC_FQTN));
+ assertEquals(Response.Status.OK.getStatusCode(), apiError.getCode());
+ }
+
+ @Test
+ public void getTopic_shouldReturnTopicWithMrClients() {
+
+ ArrayList<MR_Client> mrClients = newArrayList(new MR_Client());
+ given(clientService.getAllMrClients(TOPIC_FQTN)).willReturn(mrClients);
+
+ Topic topic = topicService.getTopic(TOPIC_FQTN, new ApiError());
+
+ assertThat(topic, hasCorrectFqtn(TOPIC_FQTN));
+ assertEquals(mrClients, topic.getClients());
+ }
+
+ @Test
+ public void getTopic_shouldReturnError() {
+
+ ApiError apiError = new ApiError();
+ Topic topic = topicService.getTopic("not_existing", apiError);
+
+ assertNull(topic);
+ assertEquals(Response.Status.NOT_FOUND.getStatusCode(), apiError.getCode());
+ }
+
+ @Test
+ public void addTopic_shouldAddNewTopic() {
+ Topic newTopic = createTopic("");
+
+ ApiError apiError = new ApiError();
+ Topic addedTopic = topicService.addTopic(newTopic, apiError, true);
+
+ assertSame(newTopic, addedTopic);
+ assertEquals(Response.Status.OK.getStatusCode(), apiError.getCode());
+ assertNotNull(topicService.getTopic(addedTopic.getFqtn(), new ApiError()));
+ }
+
+ @Test
+ public void addTopic_shouldReturnErrorWhenTopicAlreadyExists() {
+ Topic newTopic = createTopic("");
+
+ ApiError apiError = new ApiError();
+ Topic addedTopic = topicService.addTopic(newTopic, apiError, false);
+ Topic secondAddedTopic = topicService.addTopic(addedTopic, apiError, false);
+
+ assertNull(secondAddedTopic);
+ assertEquals(Response.Status.CONFLICT.getStatusCode(), apiError.getCode());
+ }
+
+ @Test
+ public void addTopic_shouldAddTheSameTopicWhenUseExistingIsSet() {
+ Topic newTopic = createTopic("");
+
+ ApiError apiError = new ApiError();
+ Topic addedTopic = topicService.addTopic(newTopic, apiError, false);
+ Topic secondAddedTopic = topicService.addTopic(addedTopic, apiError, true);
+
+ assertSame(addedTopic, secondAddedTopic);
+ assertEquals(Response.Status.OK.getStatusCode(), apiError.getCode());
+ assertNotNull(topicService.getTopic(secondAddedTopic.getFqtn(), new ApiError()));
+ }
+
+
+ @Test
+ public void addTopic_shouldSetGlobalMrURL() {
+ Topic newTopic = createTopic(TOPIC_FQTN);
+ newTopic.setReplicationCase(REPLICATION_GLOBAL_TO_FQDN);
- String t = "org.onap.dmaap.bridgingTopic";
- Topic topic = factory.genSimpleTopic(t);
- topic.setReplicationCase( ReplicationType.REPLICATION_EDGE_TO_CENTRAL );
+ ApiError apiError = new ApiError();
+ Topic addedTopic = topicService.addTopic(newTopic, apiError, true);
- String c = "publisher";
- String[] a = { "sub", "view" };
- MR_Client sub = factory.genMR_Client("central", topic.getFqtn(), c, a );
- String[] b = { "pub", "view" };
- MR_Client pub = factory.genMR_Client( "edge", topic.getFqtn(), c, b );
- ArrayList<MR_Client> clients = new ArrayList<MR_Client>();
+ assertEquals(Response.Status.OK.getStatusCode(), apiError.getCode());
+ assertEquals(GLOBAL_MR_HOST, addedTopic.getGlobalMrURL());
+ }
- clients.add( sub );
- clients.add( pub );
+ @Test
+ public void addTopic_shouldReturnErrorWhenGlobalMrURLIsInvalid() {
+ given(dmaapConfig.getProperty("MR.globalHost", "global.host.not.set")).willReturn("invalid@host");
+ createTopicService();
+ Topic newTopic = createTopic(TOPIC_FQTN);
+ newTopic.setReplicationCase(REPLICATION_GLOBAL_TO_FQDN);
- topic.setClients( clients );
+ ApiError apiError = new ApiError();
+ Topic addedTopic = topicService.addTopic(newTopic, apiError, true);
- Topic nTopic = ts.updateTopic( topic, err );
+ assertEquals(500, apiError.getCode());
+ assertNull(addedTopic);
+ }
- assertTrue( err.getCode() == 200 );
- }
- @Test
- public void bridgeTest7() {
- ApiError err = new ApiError();
-
- String t = "org.onap.dmaap.bridgingTopic7";
- Topic topic = factory.genSimpleTopic(t);
- topic.setReplicationCase( ReplicationType.REPLICATION_CENTRAL_TO_EDGE );
-
- String c = "publisher";
- String[] a = { "sub", "view" };
- MR_Client sub = factory.genMR_Client("edge", topic.getFqtn(), c, a );
- String[] b = { "pub", "view" };
- MR_Client pub = factory.genMR_Client( "central", topic.getFqtn(), c, b );
- ArrayList<MR_Client> clients = new ArrayList<MR_Client>();
-
- clients.add( sub );
- clients.add( pub );
+ private void createTopicService() {
+ Map<String, Topic> mrTopics = new HashMap<>();
+ mrTopics.put(TOPIC_FQTN, createTopic(TOPIC_FQTN));
+ topicService = new TopicService(mrTopics, clientService, dmaapConfig, clusters, locations, bridge);
+ }
- topic.setClients( clients );
+ private Topic createTopic(String fqtn) {
+ return new Topic(fqtn, "name", "desc", "tnxEnabled", "owner");
+ }
- Topic nTopic = ts.updateTopic( topic, err );
+ public static Matcher<Topic> hasCorrectFqtn(final String fqtn) {
+ return new BaseMatcher<Topic>() {
+ public boolean matches(Object o) {
+ return fqtn.equals(((Topic) o).getFqtn());
+ }
- assertTrue( err.getCode() == 200 );
- }
+ public void describeTo(Description description) {
+ description.appendText("Topics should should be equal. Expected fqtn: ").appendValue(fqtn);
+ }
+ };
+ }
}
diff --git a/src/test/java/org/onap/dmaap/dbcapi/testframework/DmaapObjectFactory.java b/src/test/java/org/onap/dmaap/dbcapi/testframework/DmaapObjectFactory.java
index 901b4ea..9d45a54 100644
--- a/src/test/java/org/onap/dmaap/dbcapi/testframework/DmaapObjectFactory.java
+++ b/src/test/java/org/onap/dmaap/dbcapi/testframework/DmaapObjectFactory.java
@@ -19,30 +19,9 @@
*/
package org.onap.dmaap.dbcapi.testframework;
-import org.onap.dmaap.dbcapi.model.DR_Node;
-import org.onap.dmaap.dbcapi.model.DR_Sub;
-import org.onap.dmaap.dbcapi.model.DcaeLocation;
-import org.onap.dmaap.dbcapi.model.Dmaap;
-import org.onap.dmaap.dbcapi.model.FqtnType;
-import org.onap.dmaap.dbcapi.model.MR_Client;
-import org.onap.dmaap.dbcapi.model.MR_Cluster;
-import org.onap.dmaap.dbcapi.model.Topic;
+import org.onap.dmaap.dbcapi.model.*;
import org.onap.dmaap.dbcapi.util.RandomInteger;
-import static org.junit.Assert.*;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import static java.lang.System.out;
-import static java.lang.System.err;
-
public class DmaapObjectFactory {
/*
@@ -75,7 +54,7 @@ public class DmaapObjectFactory {
private static final String prot = "http";
public Dmaap genDmaap() {
- return new Dmaap( dmaap_ver, dmaap_topic_root, dmaap_name, dmaap_dr, dmaap_log_url, dmaap_mm_topic, "nk", "ako" );
+ return new Dmaap.DmaapBuilder().setVer(dmaap_ver).setTnr(dmaap_topic_root).setDn(dmaap_name).setDpu(dmaap_dr).setLu(dmaap_log_url).setBat(dmaap_mm_topic).setNk("nk").setAko("ako").createDmaap();
}
public DcaeLocation genDcaeLocation( String layer ) {
diff --git a/src/test/java/org/onap/dmaap/dbcapi/util/PermissionBuilderTest.java b/src/test/java/org/onap/dmaap/dbcapi/util/PermissionBuilderTest.java
index 1858e47..8db9d2e 100644
--- a/src/test/java/org/onap/dmaap/dbcapi/util/PermissionBuilderTest.java
+++ b/src/test/java/org/onap/dmaap/dbcapi/util/PermissionBuilderTest.java
@@ -19,12 +19,11 @@
*/
package org.onap.dmaap.dbcapi.util;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.atMost;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-
import javax.servlet.http.HttpServletRequest;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -117,7 +116,21 @@ public class PermissionBuilderTest {
@Test
public void buildPermission_shouldBuildPermissionWithRealInstance() {
//given
- String path = "/subpath/topics/";
+ String path = "/dmaap";
+ String method = "GET";
+ initPermissionBuilder(path, method, provideRealInstance(DMAAP_NAME));
+
+ //when
+ String permission = permissionBuilder.buildPermission(request);
+
+ //then
+ assertEquals("org.onap.dmaap-bc.api.dmaap|mr|GET", permission);
+ }
+
+ @Test
+ public void buildPermission_shouldBuildPermissionWhenUrlContainsId() {
+ //given
+ String path = "/topics/topic_id_123";
String method = "GET";
initPermissionBuilder(path, method, provideRealInstance(DMAAP_NAME));
@@ -139,11 +152,11 @@ public class PermissionBuilderTest {
}
private Dmaap provideDefaultInstance() {
- return new Dmaap("0", "", "", "", "", "", "", "");
+ return new Dmaap.DmaapBuilder().setVer("0").setTnr("").setDn("").setDpu("").setLu("").setBat("").setNk("").setAko("").createDmaap();
}
private Dmaap provideRealInstance(String dmaapName) {
- Dmaap dmaap = new Dmaap("1", "org.onap.dmaap", dmaapName, "https://dmaap-dr-prov:8443", "", "DCAE_MM_AGENT", "", "");
+ Dmaap dmaap = new Dmaap.DmaapBuilder().setVer("1").setTnr("org.onap.dmaap").setDn(dmaapName).setDpu("https://dmaap-dr-prov:8443").setLu("").setBat("DCAE_MM_AGENT").setNk("").setAko("").createDmaap();
dmaap.setStatus(DmaapObject_Status.VALID);
return dmaap;
}
diff --git a/version.properties b/version.properties
index 8a9bf52..67b4ad2 100644
--- a/version.properties
+++ b/version.properties
@@ -27,7 +27,7 @@
major=1
minor=0
-patch=26
+patch=28
base_version=${major}.${minor}.${patch}
# Release must be completed with git revision # in Jenkins