@SuppressWarnings("unchecked") @Test public void testDefaultLocationWithNoOptionsNoSuchElement() { Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.<Location>of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.<Image>of(image)); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance( ImmutableSet.<Hardware>of(createMock(Hardware.class))); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); TemplateOptions defaultOptions = createMock(TemplateOptions.class); expect(optionsProvider.get()).andReturn(defaultOptions); replay(defaultOptions, optionsProvider, templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( null, locations, images, hardwares, region, optionsProvider, templateBuilderProvider); try { template.imageId("region/imageId2").build(); fail("Expected NoSuchElementException"); } catch (NoSuchElementException e) { // make sure big data is not in the exception message assertEquals(e.getMessage(), "imageId(region/imageId2) not found"); } verify(defaultOptions, optionsProvider, templateBuilderProvider); }
@SuppressWarnings("unchecked") @Test public void testSuppliedLocationAndOptions() { TemplateOptions from = provideTemplateOptions(); Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.<Location>of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.<Image>of()); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance(ImmutableSet.<Hardware>of()); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); expect(optionsProvider.get()).andReturn(from).atLeastOnce(); replay(optionsProvider); replay(templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( null, locations, images, hardwares, region, optionsProvider, templateBuilderProvider); try { template.imageId("foo").options(provideTemplateOptions()).locationId("location").build(); fail("Expected NoSuchElementException"); } catch (NoSuchElementException e) { } verify(optionsProvider); verify(templateBuilderProvider); }
@SuppressWarnings("unchecked") @Test public void testSuppliedImageLocationWiderThanDefault() { TemplateOptions from = provideTemplateOptions(); Hardware hardware = new HardwareBuilder() .id("hardwareId") .supportsImage(ImagePredicates.idEquals(image.getId())) .build(); Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.<Location>of(provider, region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.<Image>of(image)); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance(ImmutableSet.<Hardware>of(hardware)); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); TemplateOptions defaultOptions = createMock(TemplateOptions.class); expect(optionsProvider.get()).andReturn(from).atLeastOnce(); replay(defaultOptions, optionsProvider, templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( null, locations, images, hardwares, region, optionsProvider, templateBuilderProvider); assertEquals( template.imageId(image.getId()).locationId(provider.getId()).build().getLocation(), region); verify(defaultOptions, optionsProvider, templateBuilderProvider); }
@SuppressWarnings("unchecked") @Test public void testHardwareWithImageIdPredicateOnlyAcceptsImageWhenLocationNull() { Hardware hardware = new HardwareBuilder() .id("hardwareId") .supportsImage(ImagePredicates.idEquals(getProviderFormatId("imageId"))) .build(); Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.<Location>of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.<Image>of(image)); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance(ImmutableSet.<Hardware>of(hardware)); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class); expect(optionsProvider.get()).andReturn(new TemplateOptions()); replay(defaultTemplate, optionsProvider, templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( null, locations, images, hardwares, region, optionsProvider, templateBuilderProvider); template.imageId(getProviderFormatId("imageId")).build(); verify(defaultTemplate, optionsProvider, templateBuilderProvider); }
@SuppressWarnings("unchecked") @Test public void testImageIdNullsEverythingElse() { Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.<Location>of()); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.<Image>of()); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance(ImmutableSet.<Hardware>of()); Location defaultLocation = createMock(Location.class); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); replay(defaultLocation); replay(optionsProvider); replay(templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( null, locations, images, hardwares, defaultLocation, optionsProvider, templateBuilderProvider); template.imageDescriptionMatches("imageDescriptionMatches"); template.imageNameMatches("imageNameMatches"); template.imageVersionMatches("imageVersionMatches"); template.osDescriptionMatches("osDescriptionMatches"); template.osFamily(OsFamily.CENTOS); template.osArchMatches("osArchMatches"); assertEquals(template.osArch, "osArchMatches"); assertEquals(template.imageDescription, "imageDescriptionMatches"); assertEquals(template.imageName, "imageNameMatches"); assertEquals(template.imageVersion, "imageVersionMatches"); assertEquals(template.osDescription, "osDescriptionMatches"); assertEquals(template.osFamily, OsFamily.CENTOS); assertEquals(template.imageId, null); template.imageId("myid"); assertEquals(template.osArch, null); assertEquals(template.imageDescription, null); assertEquals(template.imageName, null); assertEquals(template.imageVersion, null); assertEquals(template.osDescription, null); assertEquals(template.osFamily, null); assertEquals(template.imageId, "myid"); verify(defaultLocation); verify(optionsProvider); verify(templateBuilderProvider); }
@SuppressWarnings("unchecked") @Test public void testDefaultLocationWithOptions() { Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.<Location>of()); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.<Image>of(image)); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance( ImmutableSet.<Hardware>of(createMock(Hardware.class))); Location defaultLocation = createMock(Location.class); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); TemplateOptions from = provideTemplateOptions(); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); expect(optionsProvider.get()).andReturn(from); replay(defaultLocation, optionsProvider, templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( null, locations, images, hardwares, defaultLocation, optionsProvider, templateBuilderProvider); try { template.imageId("region/ami").options(provideTemplateOptions()).build(); fail("Expected NoSuchElementException"); } catch (NoSuchElementException e) { } verify(defaultLocation, optionsProvider, templateBuilderProvider); }
@SuppressWarnings("unchecked") @Test public void testHardwareWithImageIdPredicateOnlyDoesntImage() { Hardware hardware = new HardwareBuilder() .id("hardwareId") .supportsImage(ImagePredicates.idEquals("differentImageId")) .build(); Supplier<Set<? extends Location>> locations = Suppliers.<Set<? extends Location>>ofInstance(ImmutableSet.<Location>of(region)); Supplier<Set<? extends Image>> images = Suppliers.<Set<? extends Image>>ofInstance(ImmutableSet.<Image>of(image)); Supplier<Set<? extends Hardware>> hardwares = Suppliers.<Set<? extends Hardware>>ofInstance(ImmutableSet.<Hardware>of(hardware)); Provider<TemplateOptions> optionsProvider = createMock(Provider.class); Provider<TemplateBuilder> templateBuilderProvider = createMock(Provider.class); TemplateBuilder defaultTemplate = createMock(TemplateBuilder.class); expect(optionsProvider.get()).andReturn(new TemplateOptions()); replay(defaultTemplate, optionsProvider, templateBuilderProvider); TemplateBuilderImpl template = createTemplateBuilder( image, locations, images, hardwares, region, optionsProvider, templateBuilderProvider); try { template.imageId(getProviderFormatId("imageId")).build(); fail("Expected NoSuchElementException"); } catch (NoSuchElementException e) { // make sure message is succinct assertEquals( e.getMessage(), "no hardware profiles support images matching params: idEquals(differentImageId)"); verify(defaultTemplate, optionsProvider, templateBuilderProvider); } }