Change the groupid from openo to onap
[holmes/rule-management.git] / rulemgt / src / test / java / org / onap / holmes / rulemgt / wrapper / RuleMgtWrapperTest.java
diff --git a/rulemgt/src/test/java/org/onap/holmes/rulemgt/wrapper/RuleMgtWrapperTest.java b/rulemgt/src/test/java/org/onap/holmes/rulemgt/wrapper/RuleMgtWrapperTest.java
new file mode 100644 (file)
index 0000000..0c81b98
--- /dev/null
@@ -0,0 +1,411 @@
+/**\r
+ * Copyright 2017 ZTE Corporation.\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
+ */\r
+\r
+package org.onap.holmes.rulemgt.wrapper;\r
+\r
+import static org.hamcrest.MatcherAssert.assertThat;\r
+import static org.hamcrest.Matchers.equalTo;\r
+import static org.hamcrest.Matchers.is;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Date;\r
+import java.util.List;\r
+import org.easymock.EasyMock;\r
+import org.junit.Before;\r
+import org.junit.Rule;\r
+import org.junit.Test;\r
+import org.junit.rules.ExpectedException;\r
+import org.junit.runner.RunWith;\r
+import org.onap.holmes.rulemgt.bean.request.CorrelationCheckRule4Engine;\r
+import org.onap.holmes.rulemgt.db.CorrelationRuleDao;\r
+import org.onap.holmes.common.api.entity.CorrelationRule;\r
+import org.onap.holmes.common.exception.CorrelationException;\r
+import org.onap.holmes.common.utils.DbDaoUtil;\r
+import org.onap.holmes.rulemgt.bean.request.CorrelationDeployRule4Engine;\r
+import org.onap.holmes.rulemgt.bean.request.RuleCreateRequest;\r
+import org.onap.holmes.rulemgt.bean.request.RuleDeleteRequest;\r
+import org.onap.holmes.rulemgt.bean.request.RuleQueryCondition;\r
+import org.onap.holmes.rulemgt.bean.request.RuleUpdateRequest;\r
+import org.onap.holmes.rulemgt.bean.response.RuleAddAndUpdateResponse;\r
+import org.onap.holmes.rulemgt.bean.response.RuleQueryListResponse;\r
+import org.onap.holmes.rulemgt.bolt.enginebolt.EngineWrapper;\r
+import org.onap.holmes.rulemgt.db.CorrelationRuleQueryDao;\r
+import org.powermock.api.easymock.PowerMock;\r
+import org.powermock.modules.junit4.rule.PowerMockRule;\r
+import org.powermock.reflect.Whitebox;\r
+\r
+public class RuleMgtWrapperTest {\r
+\r
+    @Rule\r
+    public ExpectedException thrown = ExpectedException.none();\r
+    @Rule\r
+    public PowerMockRule powerMockRule = new PowerMockRule();\r
+\r
+    private RuleMgtWrapper ruleMgtWrapper;\r
+\r
+    private EngineWrapper engineWrapperMock;\r
+\r
+    private DbDaoUtil dbDaoUtilMock;\r
+\r
+    private CorrelationRuleQueryDao correlationRuleQueryDaoMock;\r
+\r
+    private CorrelationRuleDao correlationRuleDaoMock;\r
+\r
+    private static final String USER_NAME = "admin";\r
+\r
+    @Before\r
+    public void setUp() throws Exception {\r
+\r
+        ruleMgtWrapper = new RuleMgtWrapper();\r
+\r
+        engineWrapperMock = PowerMock.createMock(EngineWrapper.class);\r
+        correlationRuleQueryDaoMock = PowerMock.createMock(CorrelationRuleQueryDao.class);\r
+        dbDaoUtilMock = PowerMock.createMock(DbDaoUtil.class);\r
+        correlationRuleDaoMock = PowerMock.createMock(CorrelationRuleDao.class);\r
+\r
+        Whitebox.setInternalState(ruleMgtWrapper, "daoUtil", dbDaoUtilMock);\r
+        Whitebox.setInternalState(ruleMgtWrapper, "correlationRuleQueryDao", correlationRuleQueryDaoMock);\r
+        Whitebox.setInternalState(ruleMgtWrapper, "engineWarpper", engineWrapperMock);\r
+        Whitebox.setInternalState(ruleMgtWrapper, "correlationRuleDao", correlationRuleDaoMock);\r
+\r
+        PowerMock.resetAll();\r
+    }\r
+\r
+    @Test\r
+    public void initDaoUtil_normal() {\r
+        ruleMgtWrapper.initDaoUtil();\r
+    }\r
+\r
+    @Test\r
+    public void addCorrelationRule_name_is_null() throws Exception {\r
+        thrown.expect(CorrelationException.class);\r
+        thrown.expectMessage("The name of the rule can not be empty.");\r
+\r
+        ruleMgtWrapper.addCorrelationRule(USER_NAME, createRuleCreateRequest(null, "This is a rule for testing.",\r
+                "Mocked contents.", 0));\r
+    }\r
+\r
+    @Test\r
+    public void addCorrelationRule_request_null() throws Exception {\r
+        thrown.expect(CorrelationException.class);\r
+        thrown.expectMessage("The request object can not be empty!");\r
+\r
+        ruleMgtWrapper.addCorrelationRule(USER_NAME, null);\r
+    }\r
+\r
+    @Test\r
+    public void addCorrelationRule_name_is_empty() throws Exception {\r
+        thrown.expect(CorrelationException.class);\r
+        thrown.expectMessage("The name of the rule can not be empty.");\r
+\r
+        ruleMgtWrapper.addCorrelationRule("admin", createRuleCreateRequest("", "This is a rule for testing.",\r
+                "Mocked contents.", 0));\r
+    }\r
+\r
+    @Test\r
+    public void addCorrelationRule_content_is_empty() throws Exception {\r
+        thrown.expect(CorrelationException.class);\r
+        thrown.expectMessage("The contents of the rule can not be empty!");\r
+\r
+        ruleMgtWrapper.addCorrelationRule("admin", createRuleCreateRequest("test", "This is a rule for testing.",\r
+                "", 0));\r
+    }\r
+\r
+    @Test\r
+    public void addCorrelationRule_enabled_is_off_limit() throws Exception {\r
+        thrown.expect(CorrelationException.class);\r
+        thrown.expectMessage("Invalid rule status. Only 0 (disabled) and 1 (enabled) are allowed.");\r
+\r
+        ruleMgtWrapper.addCorrelationRule("admin", createRuleCreateRequest("test", "This is a rule for testing.",\r
+                "Mocked contents.", 3));\r
+    }\r
+\r
+    @Test\r
+    public void addCorrelationRule_duplicated_rule() throws Exception {\r
+\r
+        final String ruleName = "Rule-001";\r
+\r
+        RuleCreateRequest ruleCreateRequest = createRuleCreateRequest(ruleName, "This is a rule for testing.",\r
+                "Mocked contents.", 0);\r
+        CorrelationRule correlationRule = convertCreateRequest2CorrelationRule(ruleCreateRequest);\r
+\r
+        thrown.expect(CorrelationException.class);\r
+        thrown.expectMessage("A rule with the same name already exists.");\r
+\r
+        EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName)).andReturn(correlationRule);\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest);\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void addCorrelationRule_normal() throws Exception {\r
+        final String ruleName = "Rule-001";\r
+\r
+        RuleCreateRequest ruleCreateRequest = createRuleCreateRequest(ruleName, "This is a rule for testing.",\r
+                "Mocked contents.", 1);\r
+\r
+        CorrelationRule correlationRuleRet = new CorrelationRule();\r
+        correlationRuleRet.setRid("rule_" + System.currentTimeMillis());\r
+\r
+        EasyMock.expect(correlationRuleDaoMock.queryRuleByRuleName(ruleName)).andReturn(null);\r
+        EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))\r
+                .andReturn(true);\r
+        EasyMock.expect(engineWrapperMock.deployEngine(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))\r
+                .andReturn("package-001");\r
+        EasyMock.expect(correlationRuleDaoMock.saveRule(EasyMock.anyObject(CorrelationRule.class)))\r
+                .andReturn(correlationRuleRet);\r
+\r
+        PowerMock.replayAll();\r
+\r
+        RuleAddAndUpdateResponse response = ruleMgtWrapper.addCorrelationRule("admin", ruleCreateRequest);\r
+        assertThat(response.getRuleId(), equalTo(correlationRuleRet.getRid()));\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void updateCorrelationRule_param_null() throws Exception {\r
+        thrown.expect(CorrelationException.class);\r
+        thrown.expectMessage("The request object can not be empty!");\r
+\r
+        ruleMgtWrapper.updateCorrelationRule(USER_NAME, null);\r
+    }\r
+\r
+    @Test\r
+    public void updateCorrelationRule_normal() throws Exception {\r
+        CorrelationRule oldCorrelationRule = new CorrelationRule();\r
+        oldCorrelationRule.setRid("rule_1");\r
+        oldCorrelationRule.setName("name");\r
+        oldCorrelationRule.setDescription("des1");\r
+        oldCorrelationRule.setContent("content");\r
+        oldCorrelationRule.setPackageName("testName");\r
+        oldCorrelationRule.setEnabled(1);\r
+        RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_1", "des2", "contetnt2", 1);\r
+\r
+        EasyMock.expect(correlationRuleDaoMock.queryRuleByRid("rule_1")).andReturn(oldCorrelationRule);\r
+        EasyMock.expect(engineWrapperMock.deleteRuleFromEngine("testName")).andReturn(true);\r
+        correlationRuleDaoMock.updateRule(EasyMock.anyObject(CorrelationRule.class));\r
+        EasyMock.expectLastCall();\r
+        EasyMock.expect(engineWrapperMock.checkRuleFromEngine(EasyMock.anyObject(CorrelationCheckRule4Engine.class)))\r
+                .andReturn(true);\r
+        EasyMock.expect(engineWrapperMock.deployEngine(EasyMock.anyObject(CorrelationDeployRule4Engine.class)))\r
+                .andReturn("packageName1");\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);\r
+\r
+        PowerMock.verifyAll();\r
+\r
+        assertThat(oldCorrelationRule.getRid(), equalTo(ruleUpdateRequest.getRuleId()));\r
+    }\r
+\r
+    @Test\r
+    public void updateCorrelationRule_param_no_change() throws Exception {\r
+        CorrelationRule oldCorrelationRule = new CorrelationRule();\r
+        oldCorrelationRule.setRid("rule_1");\r
+        oldCorrelationRule.setName("name");\r
+        oldCorrelationRule.setDescription("des1");\r
+        oldCorrelationRule.setContent("content");\r
+        oldCorrelationRule.setPackageName("testName");\r
+        oldCorrelationRule.setEnabled(1);\r
+        RuleUpdateRequest ruleUpdateRequest = createRuleUpdateRequest("rule_1", "des1", "content", 1);\r
+\r
+        EasyMock.expect(correlationRuleDaoMock.queryRuleByRid("rule_1")).andReturn(oldCorrelationRule);\r
+\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.updateCorrelationRule(USER_NAME, ruleUpdateRequest);\r
+\r
+        PowerMock.verifyAll();\r
+\r
+        assertThat(oldCorrelationRule.getRid(), equalTo(ruleUpdateRequest.getRuleId()));\r
+    }\r
+\r
+    @Test\r
+    public void updateCorrelationRule_rule_not_exist() throws Exception {\r
+        thrown.expect(CorrelationException.class);\r
+        thrown.expectMessage("You're trying to update a rule which does not exist in the system.");\r
+\r
+        EasyMock.expect(correlationRuleDaoMock.queryRuleByRid(EasyMock.anyObject(String.class))).andReturn(null);\r
+\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.updateCorrelationRule(USER_NAME, new RuleUpdateRequest());\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void deleteCorrelationRule_request_null() throws Exception {\r
+        thrown.expect(CorrelationException.class);\r
+        thrown.expectMessage("The request object can not be empty!");\r
+\r
+        ruleMgtWrapper.deleteCorrelationRule(null);\r
+    }\r
+\r
+    @Test\r
+    public void deleteCorrelationRule_rule_not_exit() throws Exception {\r
+        thrown.expect(CorrelationException.class);\r
+        thrown.expectMessage("You're trying to delete a rule which does not exist in the system.");\r
+\r
+        RuleDeleteRequest ruleDeleteRequest = createRuleDeleteRequest("rule_" + System.currentTimeMillis());\r
+\r
+        EasyMock.expect(dbDaoUtilMock.getJdbiDaoByOnDemand(CorrelationRuleDao.class)).andReturn(\r
+                correlationRuleDaoMock).anyTimes();\r
+        EasyMock.expect(correlationRuleDaoMock.queryRuleByRid(ruleDeleteRequest.getRuleId()))\r
+                .andReturn(null);\r
+\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void deleteCorrelationRule_normal() throws Exception {\r
+        RuleDeleteRequest ruleDeleteRequest = createRuleDeleteRequest("rule_" + System.currentTimeMillis());\r
+        CorrelationRule correlationRule = new CorrelationRule();\r
+        correlationRule.setEnabled(1);\r
+        EasyMock.expect(correlationRuleDaoMock.queryRuleByRid(ruleDeleteRequest.getRuleId()))\r
+                .andReturn(correlationRule);\r
+        EasyMock.expect(engineWrapperMock.deleteRuleFromEngine(EasyMock.anyObject(String.class))).andReturn(true);\r
+        correlationRuleDaoMock.deleteRule(EasyMock.anyObject(CorrelationRule.class));\r
+        EasyMock.expectLastCall();\r
+        PowerMock.replayAll();\r
+\r
+        ruleMgtWrapper.deleteCorrelationRule(ruleDeleteRequest);\r
+\r
+        PowerMock.verifyAll();\r
+    }\r
+\r
+    @Test\r
+    public void getCorrelationRuleByCondition_data_format_exception() throws Exception {\r
+        thrown.expect(CorrelationException.class);\r
+        thrown.expectMessage("An error occurred while building the query SQL.");\r
+\r
+        EasyMock.expect(correlationRuleQueryDaoMock.getCorrelationRulesByCondition(EasyMock.anyObject(\r
+                RuleQueryCondition.class)))\r
+                .andThrow(new CorrelationException("An error occurred while building the query SQL."));\r
+\r
+        PowerMock.replay(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);\r
+\r
+        ruleMgtWrapper.getCorrelationRuleByCondition(new RuleQueryCondition());\r
+\r
+        PowerMock.verify(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);\r
+    }\r
+\r
+    @Test\r
+    public void getCorrelationRuleByCondition_db_exception() throws Exception {\r
+        thrown.expect(CorrelationException.class);\r
+        thrown.expectMessage("Failed to query the rule.");\r
+\r
+        EasyMock.expect(correlationRuleQueryDaoMock.getCorrelationRulesByCondition(EasyMock.anyObject(\r
+                RuleQueryCondition.class)))\r
+                .andThrow(new CorrelationException("Failed to query the rule."));\r
+\r
+        PowerMock.replay(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);\r
+\r
+        ruleMgtWrapper.getCorrelationRuleByCondition(new RuleQueryCondition());\r
+\r
+        PowerMock.verify(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);\r
+    }\r
+\r
+    @Test\r
+    public void getCorrelationRuleByCondition_normal() throws Exception {\r
+        List<CorrelationRule> correlationRuleList = new ArrayList<CorrelationRule>(10);\r
+        for (int i = 0; i < 10; ++i) {\r
+            CorrelationRule correlationRule = new CorrelationRule();\r
+            correlationRule.setContent("content" + i);\r
+            correlationRule.setName("name" + i);\r
+            correlationRule.setRid("rule_" + i);\r
+            correlationRule.setEngineType("engineType" + (i % 2 + 1));\r
+            correlationRule.setEngineID("engineId" + i);\r
+            correlationRule.setCreateTime(new Date());\r
+            correlationRule.setCreator(USER_NAME);\r
+            correlationRule.setDescription("description" + i);\r
+            correlationRule.setPackageName("package" + i);\r
+            correlationRuleList.add(correlationRule);\r
+        }\r
+\r
+        EasyMock.expect(correlationRuleQueryDaoMock.getCorrelationRulesByCondition(EasyMock.anyObject(\r
+                RuleQueryCondition.class))).andReturn(correlationRuleList);\r
+\r
+        PowerMock.replay(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);\r
+\r
+        RuleQueryListResponse response = ruleMgtWrapper.getCorrelationRuleByCondition(new RuleQueryCondition());\r
+\r
+        PowerMock.verify(correlationRuleQueryDaoMock, CorrelationRuleQueryDao.class);\r
+\r
+        assertThat(response.getTotalCount(), is(10));\r
+\r
+        for (int i = 0; i < 10; ++i) {\r
+            assertThat(response.getCorrelationRules().get(i).getRuleId(),\r
+                    equalTo(correlationRuleList.get(i).getRid()));\r
+        }\r
+    }\r
+\r
+    private RuleCreateRequest createRuleCreateRequest(String ruleName, String description, String content,\r
+            int enabled) {\r
+        RuleCreateRequest rcr;\r
+        rcr = new RuleCreateRequest();\r
+        rcr.setRuleName(ruleName);\r
+        rcr.setDescription(description);\r
+        rcr.setContent(content);\r
+        rcr.setEnabled(enabled);\r
+        return rcr;\r
+    }\r
+\r
+    private RuleUpdateRequest createRuleUpdateRequest(String ruleId, String description, String content, int enabled) {\r
+        RuleUpdateRequest ruleUpdateRequest = new RuleUpdateRequest();\r
+        ruleUpdateRequest.setRuleId(ruleId);\r
+        ruleUpdateRequest.setDescription(description);\r
+        ruleUpdateRequest.setContent(content);\r
+        ruleUpdateRequest.setEnabled(enabled);\r
+        return ruleUpdateRequest;\r
+    }\r
+\r
+    private RuleDeleteRequest createRuleDeleteRequest(String ruleId) {\r
+        RuleDeleteRequest ruleDeleteRequest = new RuleDeleteRequest();\r
+        ruleDeleteRequest.setRuleId(ruleId);\r
+        return ruleDeleteRequest;\r
+    }\r
+\r
+    private CorrelationRule convertCreateRequest2CorrelationRule(RuleCreateRequest ruleCreateRequest) {\r
+        CorrelationRule correlationRule = new CorrelationRule();\r
+        correlationRule.setContent(ruleCreateRequest.getContent());\r
+        correlationRule.setDescription(ruleCreateRequest.getDescription());\r
+        correlationRule.setName(ruleCreateRequest.getRuleName());\r
+        correlationRule.setCreator(USER_NAME);\r
+        correlationRule.setModifier(USER_NAME);\r
+        correlationRule.setEnabled(ruleCreateRequest.getEnabled());\r
+        return correlationRule;\r
+    }\r
+\r
+    private CorrelationRule convertUpdateRequest2CorrelationRule(RuleUpdateRequest ruleUpdateRequest) {\r
+        CorrelationRule correlationRule = new CorrelationRule();\r
+        correlationRule.setRid(ruleUpdateRequest.getRuleId());\r
+        correlationRule.setContent(ruleUpdateRequest.getContent());\r
+        correlationRule.setDescription(ruleUpdateRequest.getDescription());\r
+        correlationRule.setEnabled(ruleUpdateRequest.getEnabled());\r
+        correlationRule.setUpdateTime(new Date());\r
+        correlationRule.setModifier(USER_NAME);\r
+        return correlationRule;\r
+    }\r
+}
\ No newline at end of file