### Question:
KeytabConfigurationHandler implements EventHandler<KeytabConfigurationRequest> { @Override public void accept(Event<KeytabConfigurationRequest> keytabConfigurationRequestEvent) { Long stackId = keytabConfigurationRequestEvent.getData().getResourceId(); Selectable response; try { Stack stack = stackService.getByIdWithListsInTransaction(stackId); Optional<KerberosConfig> kerberosConfigOptional = kerberosConfigService.get(stack.getEnvironmentCrn(), stack.getName()); boolean childEnvironment = environmentConfigProvider.isChildEnvironment(stack.getEnvironmentCrn()); if (kerberosDetailService.keytabsShouldBeUpdated(stack.cloudPlatform(), childEnvironment, kerberosConfigOptional)) { GatewayConfig primaryGatewayConfig = gatewayConfigService.getPrimaryGatewayConfig(stack); ServiceKeytabResponse serviceKeytabResponse = keytabProvider.getServiceKeytabResponse(stack, primaryGatewayConfig); KeytabModel keytabModel = buildKeytabModel(serviceKeytabResponse); hostOrchestrator.uploadKeytabs(List.of(primaryGatewayConfig), Set.of(keytabModel), ClusterDeletionBasedExitCriteriaModel.clusterDeletionBasedModel(stackId, stack.getCluster().getId())); } response = new KeytabConfigurationSuccess(stackId); } catch (Exception e) { LOGGER.info("Error during keytab configuration, stackId: " + stackId, e); KeytabConfigurationException configurationException = new KeytabConfigurationException("Keytab generation failed with: " + e.getMessage(), e); response = new KeytabConfigurationFailed(stackId, configurationException); } eventBus.notify(response.selector(), new Event<>(keytabConfigurationRequestEvent.getHeaders(), response)); }  @Override String selector(); @Override void accept(Event<KeytabConfigurationRequest> keytabConfigurationRequestEvent);  }### Answer:
@Test public void shouldUpdateKeytabs() throws Exception { KeytabConfigurationRequest keytabConfigurationRequest = new KeytabConfigurationRequest(STACK_ID); Stack stack = aStack(); Optional<KerberosConfig> kerberosConfig = of(mock(KerberosConfig.class)); GatewayConfig gatewayConfig = mock(GatewayConfig.class); when(stackService.getByIdWithListsInTransaction(STACK_ID)).thenReturn(stack); when(kerberosConfigService.get(ENVIRONMENT_CRN, STACK_NAME)).thenReturn(kerberosConfig); when(environmentConfigProvider.isChildEnvironment(ENVIRONMENT_CRN)).thenReturn(true); when(kerberosDetailService.keytabsShouldBeUpdated(CLOUD_PLATFORM, true, kerberosConfig)).thenReturn(true); when(gatewayConfigService.getPrimaryGatewayConfig(stack)).thenReturn(gatewayConfig); when(keytabProvider.getServiceKeytabResponse(stack, gatewayConfig)).thenReturn(mock(ServiceKeytabResponse.class)); when(secretService.getByResponse(any())).thenReturn(KEYTABS_IN_BASE64); victim.accept(new Event<>(keytabConfigurationRequest)); verify(hostOrchestrator).uploadKeytabs(any(), any(), any()); verify(eventBus).notify(anyString(), any(Event.class)); }
@Test public void shouldNotUpdateKeytabs() throws Exception { KeytabConfigurationRequest keytabConfigurationRequest = new KeytabConfigurationRequest(STACK_ID); Stack stack = mock(Stack.class); when(stackService.getByIdWithListsInTransaction(STACK_ID)).thenReturn(stack); victim.accept(new Event<>(keytabConfigurationRequest)); verifyNoMoreInteractions(hostOrchestrator); verify(eventBus).notify(anyString(), any(Event.class)); }