1import salt.modules.jboss7 as jboss7 2from salt.utils.odict import OrderedDict 3from tests.support.mixins import LoaderModuleMockMixin 4from tests.support.mock import MagicMock 5from tests.support.unit import TestCase 6 7 8class JBoss7TestCase(TestCase, LoaderModuleMockMixin): 9 10 jboss_config = {} 11 org_run_operation = None 12 13 def setup_loader_modules(self): 14 self.org_run_operation = MagicMock() 15 self.addCleanup(delattr, self, "org_run_operation") 16 return { 17 jboss7: {"__salt__": {"jboss7_cli.run_operation": self.org_run_operation}} 18 } 19 20 def test_create_simple_binding(self): 21 jboss7.create_simple_binding(self.jboss_config, "java:global/env", "DEV") 22 23 self.org_run_operation.assert_called_with( 24 self.jboss_config, 25 '/subsystem=naming/binding="java:global/env":add(binding-type=simple,' 26 ' value="DEV")', 27 ) 28 29 def test_create_simple_binding_with_backslash(self): 30 jboss7.create_simple_binding(self.jboss_config, "java:global/env", r"DEV\2") 31 32 self.org_run_operation.assert_called_with( 33 self.jboss_config, 34 r'/subsystem=naming/binding="java:global/env":add(binding-type=simple,' 35 r' value="DEV\\\\2")', 36 ) 37 38 def test_update_binding(self): 39 jboss7.update_simple_binding(self.jboss_config, "java:global/env", "INT") 40 41 self.org_run_operation.assert_called_with( 42 self.jboss_config, 43 '/subsystem=naming/binding="java:global/env":write-attribute(name=value,' 44 ' value="INT")', 45 ) 46 47 def test_update_binding_with_backslash(self): 48 jboss7.update_simple_binding(self.jboss_config, "java:global/env", r"INT\2") 49 50 self.org_run_operation.assert_called_with( 51 self.jboss_config, 52 r'/subsystem=naming/binding="java:global/env":write-attribute(name=value,' 53 r' value="INT\\\\2")', 54 ) 55 56 def test_read_binding(self): 57 def cli_command_response(jboss_config, cli_command): 58 if ( 59 cli_command 60 == '/subsystem=naming/binding="java:global/env":read-resource' 61 ): 62 return { 63 "outcome": "success", 64 "result": {"binding-type": "simple", "value": "DEV"}, 65 } 66 67 self.org_run_operation.side_effect = cli_command_response 68 69 result = jboss7.read_simple_binding(self.jboss_config, "java:global/env") 70 self.assertEqual(result["outcome"], "success") 71 self.assertEqual(result["result"]["value"], "DEV") 72 73 def test_create_datasource_all_properties_included(self): 74 def cli_command_response(jboss_config, cli_command, fail_on_error=False): 75 if ( 76 cli_command 77 == '/subsystem=datasources/data-source="appDS":read-resource-description' 78 ): 79 return { 80 "outcome": "success", 81 "result": { 82 "attributes": { 83 "driver-name": {"type": "STRING"}, 84 "connection-url": {"type": "STRING"}, 85 "jndi-name": {"type": "STRING"}, 86 "user-name": {"type": "STRING"}, 87 "password": {"type": "STRING"}, 88 } 89 }, 90 } 91 92 self.org_run_operation.side_effect = cli_command_response 93 94 datasource_properties = OrderedDict() 95 datasource_properties["driver-name"] = "mysql" 96 datasource_properties["connection-url"] = "jdbc:mysql://localhost:3306/app" 97 datasource_properties["jndi-name"] = "java:jboss/datasources/appDS" 98 datasource_properties["user-name"] = "app" 99 datasource_properties["password"] = "app_password" 100 101 jboss7.create_datasource(self.jboss_config, "appDS", datasource_properties) 102 103 self.org_run_operation.assert_called_with( 104 self.jboss_config, 105 '/subsystem=datasources/data-source="appDS":add(driver-name="mysql",connection-url="jdbc:mysql://localhost:3306/app",jndi-name="java:jboss/datasources/appDS",user-name="app",password="app_password")', 106 fail_on_error=False, 107 ) 108 109 def test_create_datasource_format_boolean_value_when_string(self): 110 def cli_command_response(jboss_config, cli_command, fail_on_error=False): 111 if ( 112 cli_command 113 == '/subsystem=datasources/data-source="appDS":read-resource-description' 114 ): 115 return { 116 "outcome": "success", 117 "result": {"attributes": {"use-ccm": {"type": "BOOLEAN"}}}, 118 } 119 120 self.org_run_operation.side_effect = cli_command_response 121 datasource_properties = OrderedDict() 122 datasource_properties["use-ccm"] = "true" 123 124 jboss7.create_datasource(self.jboss_config, "appDS", datasource_properties) 125 126 self.org_run_operation.assert_called_with( 127 self.jboss_config, 128 '/subsystem=datasources/data-source="appDS":add(use-ccm=true)', 129 fail_on_error=False, 130 ) 131 132 def test_create_datasource_format_boolean_value_when_boolean(self): 133 def cli_command_response(jboss_config, cli_command, fail_on_error=False): 134 if ( 135 cli_command 136 == '/subsystem=datasources/data-source="appDS":read-resource-description' 137 ): 138 return { 139 "outcome": "success", 140 "result": {"attributes": {"use-ccm": {"type": "BOOLEAN"}}}, 141 } 142 143 self.org_run_operation.side_effect = cli_command_response 144 datasource_properties = OrderedDict() 145 datasource_properties["use-ccm"] = True 146 147 jboss7.create_datasource(self.jboss_config, "appDS", datasource_properties) 148 149 self.org_run_operation.assert_called_with( 150 self.jboss_config, 151 '/subsystem=datasources/data-source="appDS":add(use-ccm=true)', 152 fail_on_error=False, 153 ) 154 155 def test_create_datasource_format_int_value_when_int(self): 156 def cli_command_response(jboss_config, cli_command, fail_on_error=False): 157 if ( 158 cli_command 159 == '/subsystem=datasources/data-source="appDS":read-resource-description' 160 ): 161 return { 162 "outcome": "success", 163 "result": {"attributes": {"min-pool-size": {"type": "INT"}}}, 164 } 165 166 self.org_run_operation.side_effect = cli_command_response 167 datasource_properties = OrderedDict() 168 datasource_properties["min-pool-size"] = 15 169 170 jboss7.create_datasource(self.jboss_config, "appDS", datasource_properties) 171 172 self.org_run_operation.assert_called_with( 173 self.jboss_config, 174 '/subsystem=datasources/data-source="appDS":add(min-pool-size=15)', 175 fail_on_error=False, 176 ) 177 178 def test_create_datasource_format_int_value_when_string(self): 179 def cli_command_response(jboss_config, cli_command, fail_on_error=False): 180 if ( 181 cli_command 182 == '/subsystem=datasources/data-source="appDS":read-resource-description' 183 ): 184 return { 185 "outcome": "success", 186 "result": {"attributes": {"min-pool-size": {"type": "INT"}}}, 187 } 188 189 self.org_run_operation.side_effect = cli_command_response 190 datasource_properties = OrderedDict() 191 datasource_properties["min-pool-size"] = "15" 192 193 jboss7.create_datasource(self.jboss_config, "appDS", datasource_properties) 194 195 self.org_run_operation.assert_called_with( 196 self.jboss_config, 197 '/subsystem=datasources/data-source="appDS":add(min-pool-size=15)', 198 fail_on_error=False, 199 ) 200 201 def test_read_datasource(self): 202 def cli_command_response(jboss_config, cli_command): 203 if ( 204 cli_command 205 == '/subsystem=datasources/data-source="appDS":read-resource' 206 ): 207 return { 208 "outcome": "success", 209 "result": { 210 "driver-name": "mysql", 211 "connection-url": "jdbc:mysql://localhost:3306/app", 212 "jndi-name": "java:jboss/datasources/appDS", 213 "user-name": "app", 214 "password": "app_password", 215 }, 216 } 217 218 self.org_run_operation.side_effect = cli_command_response 219 220 ds_result = jboss7.read_datasource(self.jboss_config, "appDS") 221 ds_properties = ds_result["result"] 222 223 self.assertEqual(ds_properties["driver-name"], "mysql") 224 self.assertEqual( 225 ds_properties["connection-url"], "jdbc:mysql://localhost:3306/app" 226 ) 227 self.assertEqual(ds_properties["jndi-name"], "java:jboss/datasources/appDS") 228 self.assertEqual(ds_properties["user-name"], "app") 229 self.assertEqual(ds_properties["password"], "app_password") 230 231 def test_update_datasource(self): 232 datasource_properties = { 233 "driver-name": "mysql", 234 "connection-url": "jdbc:mysql://localhost:3306/app", 235 "jndi-name": "java:jboss/datasources/appDS", 236 "user-name": "newuser", 237 "password": "app_password", 238 } 239 240 def cli_command_response(jboss_config, cli_command, fail_on_error=False): 241 if ( 242 cli_command 243 == '/subsystem=datasources/data-source="appDS":read-resource-description' 244 ): 245 return { 246 "outcome": "success", 247 "result": { 248 "attributes": { 249 "driver-name": {"type": "STRING"}, 250 "connection-url": {"type": "STRING"}, 251 "jndi-name": {"type": "STRING"}, 252 "user-name": {"type": "STRING"}, 253 "password": {"type": "STRING"}, 254 } 255 }, 256 } 257 258 elif ( 259 cli_command 260 == '/subsystem=datasources/data-source="appDS":read-resource' 261 ): 262 return { 263 "outcome": "success", 264 "result": { 265 "driver-name": "mysql", 266 "connection-url": "jdbc:mysql://localhost:3306/app", 267 "jndi-name": "java:jboss/datasources/appDS", 268 "user-name": "app", 269 "password": "app_password", 270 }, 271 } 272 273 elif ( 274 cli_command 275 == '/subsystem=datasources/data-source="appDS":write-attribute(name="user-name",value="newuser")' 276 ): 277 return {"outcome": "success", "success": True} 278 279 self.org_run_operation.side_effect = cli_command_response 280 281 jboss7.update_datasource(self.jboss_config, "appDS", datasource_properties) 282 283 self.org_run_operation.assert_any_call( 284 self.jboss_config, 285 '/subsystem=datasources/data-source="appDS":write-attribute(name="user-name",value="newuser")', 286 fail_on_error=False, 287 ) 288