/* * Copyright 2008-2010 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package test.es.alvsanand.webpage.services; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.Properties; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import com.google.appengine.api.images.Image; import com.google.appengine.api.images.ImagesServiceFactory; import com.google.appengine.repackaged.com.google.common.util.Base64; import com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig; import com.google.appengine.tools.development.testing.LocalServiceTestHelper; import es.alvsanand.webpage.common.AlvsanandProperties; import es.alvsanand.webpage.common.Globals; import es.alvsanand.webpage.common.photo.Album; import es.alvsanand.webpage.common.photo.Photo; import es.alvsanand.webpage.services.admin.ImageAdminService; import es.alvsanand.webpage.services.admin.ImageAdminServiceImpl; public class ImageAdminServiceTest { private final static String BIG_PHOTO_DEMO_FILE = "/foo.jpg"; private final static String PHOTO_DEMO_DATA = "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"; private final static String PHOTO_DEMO_MEDIA_TYPE = "image/gif"; private final LocalServiceTestHelper helper; private ImageAdminService imageAdminService; public ImageAdminServiceTest() { LocalDatastoreServiceTestConfig localServiceTestConfig = new LocalDatastoreServiceTestConfig(); localServiceTestConfig.setNoStorage(true); helper = new LocalServiceTestHelper(localServiceTestConfig); } @Before public void setUp() throws Exception { helper.setUp(); imageAdminService = new ImageAdminServiceImpl(); Properties properties = new Properties(); properties.loadFromXML(ImageAdminServiceTest.class.getResourceAsStream("/" + AlvsanandProperties.CONFIG_FILE_NAME)); AlvsanandProperties.setProperties(properties); } @After public void tearDown() { helper.tearDown(); } @Test public void testDeleteAlbumEntries() throws Exception { // List<Album> albumEntries = imageAdminService.getAlbums(); // // for(Album album: albumEntries){ // imageAdminService.deleteAlbum(album); // } } // @Test public void testPhoto() throws Exception { String albumName = "Foo Album" + Math.random(); Album newAlbum = new Album(); newAlbum.setTitle(albumName); newAlbum = imageAdminService.addAlbum(newAlbum); String photoName = "Foo Photo" + Math.random(); Photo newPhoto = new Photo(); newPhoto.setTitle(photoName); newPhoto.setAlbumId(newAlbum.getId()); newPhoto = imageAdminService.addPhoto(newPhoto, Base64.decode(PHOTO_DEMO_DATA), PHOTO_DEMO_MEDIA_TYPE); List<Photo> photoEntries = imageAdminService.getPhotos(newAlbum); boolean founded = false; for (Photo photo : photoEntries) { if (photo.getId().equals(newPhoto.getId())) { founded = true; break; } } imageAdminService.deletePhoto(newPhoto); imageAdminService.deleteAlbum(newAlbum); if (!founded) { throw new Exception("Photo not founded"); } } // @Test public void testAlbum() throws Exception { String albumName = "Foo Album" + Math.random(); Album newAlbum = new Album(); newAlbum.setTitle(albumName); newAlbum = imageAdminService.addAlbum(newAlbum); List<Album> albumEntries = imageAdminService.getAlbums(); boolean founded = false; for (Album album : albumEntries) { if (album.getId().equals(newAlbum.getId())) { founded = true; break; } } imageAdminService.deleteAlbum(newAlbum); if (!founded) { throw new Exception("Album not founded"); } } @Test public void testCreateAvatarImage() throws Exception { byte[] imageData = imageAdminService.createAvatarImage(readBigTestImage()); Image image = ImagesServiceFactory.makeImage(imageData); if(image.getHeight()>image.getWidth()){ Assert.assertEquals(Integer.parseInt(AlvsanandProperties.getProperty(Globals.AVATAR_IMAGE_HEIGHT_CONFIG_KEY)), image.getHeight()); } else{ Assert.assertEquals(Integer.parseInt(AlvsanandProperties.getProperty(Globals.AVATAR_IMAGE_WIDTH_CONFIG_KEY)), image.getWidth()); } } private byte[] readBigTestImage() throws IOException { InputStream inputStream = ImageAdminServiceTest.class.getResourceAsStream(BIG_PHOTO_DEMO_FILE); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); byte[] buf = new byte[1024]; int length; while ((length = inputStream.read(buf)) > 0) { outputStream.write(buf, 0, length); } inputStream.close(); outputStream.close(); return outputStream.toByteArray(); } }