blob: 79767459ca452bc930df3d86867e284defb3a0d2 [file] [log] [blame]
package org.apache.archiva.checksum;
/*
* 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.
*/
import org.apache.archiva.common.utils.FileUtils;
import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import org.junit.Assert;
/**
* ChecksumTest
*
*
*/
@RunWith( ArchivaBlockJUnit4ClassRunner.class )
public class ChecksumTest
extends AbstractChecksumTestCase
{
private static final String UNSET_SHA1 = "da39a3ee5e6b4b0d3255bfef95601890afd80709";
private static final Charset FILE_ENCODING = Charset.forName( "UTF-8" );
@Test
public void testConstructSha1()
{
Checksum checksum = new Checksum( ChecksumAlgorithm.SHA1 );
Assert.assertEquals( "Checksum.algorithm", checksum.getAlgorithm().getAlgorithm(), ChecksumAlgorithm.SHA1
.getAlgorithm() );
}
@Test
public void testConstructMd5()
{
Checksum checksum = new Checksum( ChecksumAlgorithm.MD5 );
Assert.assertEquals( "Checksum.algorithm", checksum.getAlgorithm().getAlgorithm(), ChecksumAlgorithm.MD5
.getAlgorithm() );
}
@Test
public void testUpdate()
{
Checksum checksum = new Checksum( ChecksumAlgorithm.SHA1 );
byte buf[] = ( "You know, I'm sick of following my dreams, man. "
+ "I'm just going to ask where they're going and hook up with 'em later. - Mitch Hedberg" ).getBytes();
checksum.update( buf, 0, buf.length );
Assert.assertEquals( "Checksum", "e396119ae0542e85a74759602fd2f81e5d36d762", checksum.getChecksum() );
}
@Test
public void testUpdateMany()
throws IOException, ChecksumValidationException
{
Checksum checksumSha1 = new Checksum( ChecksumAlgorithm.SHA1 );
Checksum checksumMd5 = new Checksum( ChecksumAlgorithm.MD5 );
List<Checksum> checksums = new ArrayList<>();
checksums.add( checksumSha1 );
checksums.add( checksumMd5 );
Path checkFile = getTestOutputDir().resolve( "test-file1.txt" );
FileUtils.writeStringToFile( checkFile, FILE_ENCODING, "You know, I'm sick of following my dreams, man. "
+ "I'm just going to ask where they're going and hook up with 'em later. - Mitch Hedberg");
ChecksumUtil.update( checksums, checkFile );
Assert.assertEquals( "Checksum SHA1", "e396119ae0542e85a74759602fd2f81e5d36d762", checksumSha1.getChecksum() );
Assert.assertEquals( "Checksum MD5", "21c2c5ca87ec018adacb2e2fb3432219", checksumMd5.getChecksum() );
}
@Test
public void testUpdateWholeUpdatePartial()
{
Checksum checksum = new Checksum( ChecksumAlgorithm.SHA1 );
Assert.assertEquals( "Checksum unset", UNSET_SHA1, checksum.getChecksum() );
String expected = "066c2cbbc8cdaecb8ff97dcb84502462d6f575f3";
byte reesepieces[] = "eatagramovabits".getBytes();
checksum.update( reesepieces, 0, reesepieces.length );
String actual = checksum.getChecksum();
Assert.assertEquals( "Expected", expected, actual );
// Reset the checksum.
checksum.reset();
Assert.assertEquals( "Checksum unset", UNSET_SHA1, checksum.getChecksum() );
// Now parse it again in 3 pieces.
checksum.update( reesepieces, 0, 5 );
checksum.update( reesepieces, 5, 5 );
checksum.update( reesepieces, 10, reesepieces.length - 10 );
Assert.assertEquals( "Expected", expected, actual );
}
}