/* * Copyright 2014 EMC Corporation. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://www.apache.org/licenses/LICENSE-2.0.txt * * or in the "license" file accompanying this file. This file 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 com.emc.atmos.api.test; import com.emc.atmos.api.AtmosConfig; import com.emc.atmos.api.jersey.EsuApiJerseyAdapter; import com.emc.atmos.util.AtmosClientFactory; import com.emc.esu.api.EsuException; import com.emc.esu.api.rest.AbstractEsuRestApi; import com.emc.esu.test.EsuApiTest; import com.emc.test.util.Concurrent; import com.emc.test.util.ConcurrentJunitRunner; import org.apache.commons.codec.binary.Base64; import org.junit.Assert; import org.junit.Assume; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(ConcurrentJunitRunner.class) @Concurrent public class EsuApiJerseyAdapterTest extends EsuApiTest { private AtmosConfig config; public EsuApiJerseyAdapterTest() throws Exception { config = AtmosClientFactory.getAtmosConfig(); Assume.assumeTrue("Could not load Atmos configuration", config != null); uid = config.getTokenId(); config.setDisableSslValidation( true ); config.setEnableExpect100Continue( false ); config.setEnableRetry( false ); esu = new EsuApiJerseyAdapter( config ); } /** * Test handling signature failures. Should throw an exception with * error code 1032. */ @Test public void testSignatureFailure() throws Exception { byte[] goodSecret = config.getSecretKey(); String secretStr = new String( Base64.encodeBase64( goodSecret ), "UTF-8" ); byte[] badSecret = Base64.decodeBase64( secretStr.toUpperCase().getBytes( "UTF-8" ) ); try { // Fiddle with the secret key config.setSecretKey( badSecret ); testCreateEmptyObject(); Assert.fail( "Expected exception to be thrown" ); } catch ( EsuException e ) { Assert.assertEquals( "Expected error code 1032 for signature failure", 1032, e.getAtmosCode() ); } finally { config.setSecretKey( goodSecret ); } } /** * Test general HTTP errors by generating a 404. */ @Test public void testFourOhFour() throws Exception { String goodContext = config.getContext(); try { // Fiddle with the context config.setContext( "/restttttttttt" ); testCreateEmptyObject(); Assert.fail( "Expected exception to be thrown" ); } catch ( EsuException e ) { Assert.assertEquals( "Expected error code 404 for bad context root", 404, e.getHttpCode() ); } finally { config.setContext( goodContext ); } } @Test public void testServerOffset() throws Exception { long offset = ((AbstractEsuRestApi) esu).calculateServerOffset(); l4j.info( "Server offset: " + offset + " milliseconds" ); } }