+ def 'Get dmi plugin health status #scenario'() {
+ given: 'a health check response data as jsonNode'
+ def dmiPluginHealthCheckResponseJsonData = TestUtils.getResourceFileContent('dmiPluginHealthCheckResponse.json')
+ def jsonNode = objectMapper.readValue(dmiPluginHealthCheckResponseJsonData, JsonNode.class)
+ ((ObjectNode) jsonNode).put('status', dmiAliveness);
+ and: 'the rest template return a valid json node'
+ mockRestTemplate.getForObject(*_) >> {jsonNode}
+ when: 'get aliveness of the dmi plugin'
+ def result = objectUnderTest.getDmiPluginStatus(resourceUrl)
+ then: 'return value is equal to result of rest template call'
+ result == expectedResult
+ where: 'the following dmi aliveness are being used'
+ scenario | dmiAliveness || expectedResult
+ 'dmi plugin is UP' | 'UP' || DmiPluginStatus.UP
+ 'dmi plugin is DOWN' | 'DOWN' || DmiPluginStatus.DOWN
+ }
+
+ def 'Failing to get dmi plugin health status #scenario'() {
+ given: 'the rest template return null'
+ mockRestTemplate.getForObject(*_) >> {getResponse}
+ when: 'get aliveness of the dmi plugin'
+ def result = objectUnderTest.getDmiPluginStatus(resourceUrl)
+ then: 'return value is equal to result of rest template call'
+ result == expectedResult
+ where: 'the following dmi responses are being used'
+ scenario | getResponse || expectedResult
+ 'get response is null' | null || DmiPluginStatus.DOWN
+ 'get response throws exception' | {throw new Exception()} || DmiPluginStatus.DOWN
+ }
+
+ def 'Basic auth header #scenario'() {
+ when: 'Specific dmi properties are provided'
+ dmiProperties.dmiBasicAuthEnabled = authEnabled
+ objectUnderTest.dmiProperties = dmiProperties
+ then: 'http headers to conditionally have Authorization header'
+ assert (objectUnderTest.configureHttpHeaders(new HttpHeaders()).get('Authorization') != null) == isPresentInHttpHeader
+ where: 'the following configurations are used'
+ scenario | authEnabled || isPresentInHttpHeader
+ 'auth enabled' | true || true
+ 'auth disabled' | false || false
+ }
+