/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.hadoop.gateway.descriptor;
import org.junit.Test;
import java.io.IOException;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.core.IsNull.notNullValue;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
public class GatewayDescriptorTest {
@Test
public void testGatewayDescriptorConstruction() {
GatewayDescriptor descriptor = GatewayDescriptorFactory.create()
.addParam().name( "cluster-param1-name" ).value( "cluster-param1-value" ).up()
.addParam().name( "cluster-param2-name" ).value( "cluster-param2-value" ).up()
.addResource()
.pattern( "resource1-source" )
//.target( "resource1-target" )
//.param().name( "resource1-param1-name" ).value( "resource-param1-value" ).up()
//.param().name( "resource1-param2-name" ).value( "resource-param2-value" ).up()
.addFilter()
.role( "resource1-filter1-role" )
.impl( "resource1-filter1-impl" )
.param()
.name( "resource1-filter1-param1-name" )
.value( "resource1-filter1-param1-value" ).up()
.param()
.name( "resource1-filter1-param2-name" )
.value( "resource1-filter1-param2-value" ).up().up()
.addFilter()
.role( "resource1-filter2-role" )
.impl( "resource1-filter2-impl" ).up().up()
.addResource()
.pattern( "resource2-source" )
//.target( "resource2-target" )
.addFilter()
.param().up().up().up();
assertThat( descriptor, notNullValue() );
assertThat( descriptor.resources().size(), is( 2 ) );
ResourceDescriptor resource1 = descriptor.resources().get( 0 );
assertThat( resource1, notNullValue() );
assertThat( resource1.pattern(), is( "resource1-source" ) );
//assertThat( resource1.target(), is( "resource1-target" ) );
assertThat( resource1.filters().size(), is( 2 ) );
FilterDescriptor filter1 = resource1.filters().get( 0 );
assertThat( filter1, notNullValue() );
assertThat( filter1.role(), is( "resource1-filter1-role" ) );
assertThat( filter1.impl(), is( "resource1-filter1-impl" ) );
assertThat( filter1.params().size(), is( 2 ) );
FilterParamDescriptor param1 = filter1.params().get( 0 );
assertThat( param1, notNullValue() );
assertThat( param1.name(), is( "resource1-filter1-param1-name" ) );
assertThat( param1.value(), is( "resource1-filter1-param1-value" ) );
FilterParamDescriptor param2 = filter1.params().get( 1 );
assertThat( param2, notNullValue() );
assertThat( param2.name(), is( "resource1-filter1-param2-name" ) );
assertThat( param2.value(), is( "resource1-filter1-param2-value" ) );
FilterDescriptor filter2 = resource1.filters().get( 1 );
assertThat( filter2, notNullValue() );
assertThat( filter2.role(), is( "resource1-filter2-role" ) );
assertThat( filter2.impl(), is( "resource1-filter2-impl" ) );
ResourceDescriptor resource2 = descriptor.resources().get( 1 );
assertThat( resource2, notNullValue() );
assertThat( resource2.pattern(), is( "resource2-source" ) );
//assertThat( resource2.target(), is( "resource2-target" ) );
}
@Test
public void testInvalidImportExportFormats() throws IOException {
try {
GatewayDescriptorFactory.load( "INVALID", null );
fail( "Expected IllegalArgumentException" );
} catch( IllegalArgumentException e ) {
assertThat( e.getMessage(), containsString( "INVALID" ) );
}
try {
GatewayDescriptorFactory.store( GatewayDescriptorFactory.create(), "INVALID", null );
fail( "Expected IllegalArgumentException" );
} catch( IllegalArgumentException e ) {
assertThat( e.getMessage(), containsString( "INVALID" ) );
}
}
}