/** * Copyright 2014 Comcast Cable Communications Management, LLC * * This file is part of CATS. * * CATS is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * CATS is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with CATS. If not, see <http://www.gnu.org/licenses/>. */ package com.comcast.cats.domain.converter; import static org.easymock.EasyMock.expect; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import junit.framework.Assert; import org.easymock.EasyMock; import org.junit.Test; import org.junit.runner.RunWith; import org.powermock.api.easymock.PowerMock; import org.powermock.api.easymock.annotation.Mock; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import org.springframework.http.HttpInputMessage; import org.springframework.http.MediaType; import org.springframework.http.converter.HttpMessageNotReadableException; import org.springframework.http.converter.HttpMessageNotWritableException; import com.comcast.cats.domain.Allocation; import com.comcast.cats.domain.Component; import com.comcast.cats.domain.Domain; import com.comcast.cats.domain.Environment; import com.comcast.cats.domain.HardwareConnection; import com.comcast.cats.domain.HardwareDevice; import com.comcast.cats.domain.Location; import com.comcast.cats.domain.Rack; import com.comcast.cats.domain.Reservation; import com.comcast.cats.domain.Server; import com.comcast.cats.domain.Service; import com.comcast.cats.domain.SettopDesc; import com.comcast.cats.domain.SettopGroup; import com.comcast.cats.domain.User; import com.comcast.cats.domain.UserGroup; import com.comcast.cats.domain.util.ContentType; import com.comcast.cats.domain.util.JAXBHelper; import com.comcast.cats.domain.util.SimpleListWrapper; /** * Test case for {@link JaxbListHttpMessageConverter}. * * @author subinsugunan */ @SuppressWarnings( "deprecation" ) @RunWith( PowerMockRunner.class ) @PrepareForTest( JAXBHelper.class ) @PowerMockIgnore( "org.apache.log4j.*" ) public class JaxbListHttpMessageConverterTest { private JaxbListHttpMessageConverter jaxbListHttpMessageConverter = new JaxbListHttpMessageConverter(); @Mock private JAXBHelper jaxbHelper; @Test public void testMediaTypes() { List< MediaType > supportedMediaTypes = jaxbListHttpMessageConverter.getSupportedMediaTypes(); Assert.assertEquals( 1, supportedMediaTypes.size() ); for ( MediaType mediaType : supportedMediaTypes ) { Assert.assertEquals( ContentType.APPLICATION_JAXB_SERIALIZED_LIST.toString(), mediaType.toString() ); } } @Test public void testIsSupportedClass() { Assert.assertTrue( jaxbListHttpMessageConverter.supports( Domain.class ) ); Assert.assertTrue( jaxbListHttpMessageConverter.supports( SettopDesc.class ) ); Assert.assertTrue( jaxbListHttpMessageConverter.supports( Rack.class ) ); Assert.assertTrue( jaxbListHttpMessageConverter.supports( Server.class ) ); Assert.assertTrue( jaxbListHttpMessageConverter.supports( Allocation.class ) ); Assert.assertTrue( jaxbListHttpMessageConverter.supports( Component.class ) ); Assert.assertTrue( jaxbListHttpMessageConverter.supports( Environment.class ) ); Assert.assertTrue( jaxbListHttpMessageConverter.supports( HardwareConnection.class ) ); Assert.assertTrue( jaxbListHttpMessageConverter.supports( HardwareDevice.class ) ); Assert.assertTrue( jaxbListHttpMessageConverter.supports( Location.class ) ); Assert.assertTrue( jaxbListHttpMessageConverter.supports( Reservation.class ) ); Assert.assertTrue( jaxbListHttpMessageConverter.supports( Service.class ) ); Assert.assertTrue( jaxbListHttpMessageConverter.supports( SettopGroup.class ) ); Assert.assertTrue( jaxbListHttpMessageConverter.supports( User.class ) ); Assert.assertTrue( jaxbListHttpMessageConverter.supports( UserGroup.class ) ); Assert.assertFalse( jaxbListHttpMessageConverter.supports( String.class ) ); Assert.assertFalse( jaxbListHttpMessageConverter.supports( SimpleListWrapper.class ) ); } @SuppressWarnings( "static-access" ) @Test public void testReadInternal() throws HttpMessageNotReadableException, IOException { Assert.assertNotNull( jaxbHelper ); List< Object > list = new ArrayList< Object >(); list.add( new SettopDesc() ); InputStream inputStream = EasyMock.createMock( InputStream.class ); HttpInputMessage inputMessage = EasyMock.createMock( HttpInputMessage.class ); expect( inputMessage.getBody() ).andReturn( inputStream ); EasyMock.replay( inputStream, inputMessage ); PowerMock.mockStatic( JAXBHelper.class ); EasyMock.expect( jaxbHelper.readExternalList( inputStream, SettopDesc.class ) ).andReturn( list ); PowerMock.replayAll(); @SuppressWarnings( "unchecked" ) List< Object > result = ( List< Object > ) jaxbListHttpMessageConverter.readInternal( SettopDesc.class, inputMessage ); EasyMock.verify( inputMessage ); PowerMock.verifyAll(); Assert.assertNotNull( result ); } @Test( expected = UnsupportedOperationException.class ) public void testWriteInternal() { try { jaxbListHttpMessageConverter.writeInternal( null, null ); } catch ( HttpMessageNotWritableException e ) { Assert.fail( e.getMessage() ); } catch ( IOException e ) { Assert.fail( e.getMessage() ); } } }