package com.sequenceiq.cloudbreak.converter;
import static org.mockito.BDDMockito.given;
import static org.mockito.Matchers.anyLong;
import java.util.Collections;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.security.access.AccessDeniedException;
import com.sequenceiq.cloudbreak.TestUtil;
import com.sequenceiq.cloudbreak.api.model.InstanceGroupRequest;
import com.sequenceiq.cloudbreak.domain.InstanceGroup;
import com.sequenceiq.cloudbreak.service.securitygroup.SecurityGroupService;
import com.sequenceiq.cloudbreak.service.template.TemplateService;
public class JsonToInstanceGroupConverterTest extends AbstractJsonConverterTest<InstanceGroupRequest> {
@InjectMocks
private JsonToInstanceGroupConverter underTest;
@Mock
private TemplateService templateService;
@Mock
private SecurityGroupService securityGroupService;
@Before
public void setUp() {
underTest = new JsonToInstanceGroupConverter();
MockitoAnnotations.initMocks(this);
}
@Test
public void testConvert() {
// GIVEN
given(templateService.get(anyLong())).willReturn(TestUtil.gcpTemplate(51L));
given(securityGroupService.get(anyLong())).willReturn(TestUtil.securityGroup(1L));
// WHEN
InstanceGroup instanceGroup = underTest.convert(getRequest("stack/instance-group.json"));
// THEN
assertAllFieldsNotNull(instanceGroup, Collections.singletonList("stack"));
}
@Test(expected = AccessDeniedException.class)
public void testConvertWhenAccessDenied() {
// GIVEN
given(templateService.get(anyLong())).willThrow(new AccessDeniedException("exception"));
// WHEN
underTest.convert(getRequest("stack/instance-group.json"));
}
@Override
public Class<InstanceGroupRequest> getRequestClass() {
return InstanceGroupRequest.class;
}
}