From: sunil unnava Date: Tue, 14 May 2019 16:34:15 +0000 (+0000) Subject: Merge "adding Fiachra Corcoran to INFO.yaml as a committer Issue-ID: DMAAP-1189 Chang... X-Git-Tag: 2.0.1~25 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=refs%2Fheads%2Fdublin;hp=ee3de1e9ebe7fa7193311ca370007ddafd6736a9;p=dmaap%2Fdbcapi.git Merge "adding Fiachra Corcoran to INFO.yaml as a committer Issue-ID: DMAAP-1189 Change-Id: If077ead59d812949e3cceec83f302159bc3eac4c Signed-off-by: sawantmandar " --- diff --git a/pom.xml b/pom.xml index 6517cd1..a555393 100644 --- a/pom.xml +++ b/pom.xml @@ -387,7 +387,7 @@ UTF-8 9.4.12.RC2 1.0.0 - 1.0.26-SNAPSHOT + 1.0.28-SNAPSHOT 0.7.7.201606060606 3.2 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 mr_topics = DatabaseClass.getTopics(); + private Map 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 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 getTopics() { + + public Map getTopics() { return mr_topics; } @@ -104,7 +115,7 @@ public class TopicService extends BaseLoggingClass { ArrayList 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.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 = new DBSingleton(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 clients = new ArrayList(); - - 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 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 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 mrClients = newArrayList(new MR_Client()); + given(clientService.getAllMrClients(TOPIC_FQTN)).willReturn(mrClients); + + List allTopics = topicService.getAllTopics(); + + assertThat(getOnlyElement(allTopics), hasCorrectFqtn(TOPIC_FQTN)); + assertEquals(mrClients, getOnlyElement(allTopics).getClients()); + } + + @Test + public void getAllTopicsWithoutClients_shouldReturnNoClients() { + + List allTopics = topicService.getAllTopicsWithoutClients(); + + assertThat(getOnlyElement(allTopics), hasCorrectFqtn(TOPIC_FQTN)); + assertNull(getOnlyElement(allTopics).getClients()); + verifyZeroInteractions(clientService); + } + + @Test + public void getAllTopics_shouldCacheClients() { + + ArrayList mrClients = newArrayList(new MR_Client()); + given(clientService.getAllMrClients(TOPIC_FQTN)).willReturn(mrClients); + + topicService.getAllTopics(); + List 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 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 clients = new ArrayList(); + 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 clients = new ArrayList(); - - clients.add( sub ); - clients.add( pub ); + private void createTopicService() { + Map 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 hasCorrectFqtn(final String fqtn) { + return new BaseMatcher() { + 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