mirror of
				https://github.com/distribution/distribution.git
				synced 2025-11-04 03:40:46 +00:00 
			
		
		
		
	In preparation for removing the common package, the tarsum utilities are being moved to the more relevant digest package. This functionality will probably go away in the future, but it's maintained here for the time being. Signed-off-by: Stephen J Day <stephen.day@docker.com>
		
			
				
	
	
		
			80 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package digest
 | 
						|
 | 
						|
import (
 | 
						|
	"reflect"
 | 
						|
	"testing"
 | 
						|
)
 | 
						|
 | 
						|
func TestParseTarSumComponents(t *testing.T) {
 | 
						|
	for _, testcase := range []struct {
 | 
						|
		input    string
 | 
						|
		expected TarSumInfo
 | 
						|
		err      error
 | 
						|
	}{
 | 
						|
		{
 | 
						|
			input: "tarsum.v1+sha256:220a60ecd4a3c32c282622a625a54db9ba0ff55b5ba9c29c7064a2bc358b6a3e",
 | 
						|
			expected: TarSumInfo{
 | 
						|
				Version:   "v1",
 | 
						|
				Algorithm: "sha256",
 | 
						|
				Digest:    "220a60ecd4a3c32c282622a625a54db9ba0ff55b5ba9c29c7064a2bc358b6a3e",
 | 
						|
			},
 | 
						|
		},
 | 
						|
		{
 | 
						|
			input: "",
 | 
						|
			err:   InvalidTarSumError{},
 | 
						|
		},
 | 
						|
		{
 | 
						|
			input: "purejunk",
 | 
						|
			err:   InvalidTarSumError{TarSum: "purejunk"},
 | 
						|
		},
 | 
						|
		{
 | 
						|
			input: "tarsum.v23+test:12341234123412341effefefe",
 | 
						|
			expected: TarSumInfo{
 | 
						|
				Version:   "v23",
 | 
						|
				Algorithm: "test",
 | 
						|
				Digest:    "12341234123412341effefefe",
 | 
						|
			},
 | 
						|
		},
 | 
						|
 | 
						|
		// The following test cases are ported from docker core
 | 
						|
		{
 | 
						|
			// Version 0 tarsum
 | 
						|
			input: "tarsum+sha256:e58fcf7418d4390dec8e8fb69d88c06ec07039d651fedd3aa72af9972e7d046b",
 | 
						|
			expected: TarSumInfo{
 | 
						|
				Algorithm: "sha256",
 | 
						|
				Digest:    "e58fcf7418d4390dec8e8fb69d88c06ec07039d651fedd3aa72af9972e7d046b",
 | 
						|
			},
 | 
						|
		},
 | 
						|
		{
 | 
						|
			// Dev version tarsum
 | 
						|
			input: "tarsum.dev+sha256:e58fcf7418d4390dec8e8fb69d88c06ec07039d651fedd3aa72af9972e7d046b",
 | 
						|
			expected: TarSumInfo{
 | 
						|
				Version:   "dev",
 | 
						|
				Algorithm: "sha256",
 | 
						|
				Digest:    "e58fcf7418d4390dec8e8fb69d88c06ec07039d651fedd3aa72af9972e7d046b",
 | 
						|
			},
 | 
						|
		},
 | 
						|
	} {
 | 
						|
		tsi, err := ParseTarSum(testcase.input)
 | 
						|
		if err != nil {
 | 
						|
			if testcase.err != nil && err == testcase.err {
 | 
						|
				continue // passes
 | 
						|
			}
 | 
						|
 | 
						|
			t.Fatalf("unexpected error parsing tarsum: %v", err)
 | 
						|
		}
 | 
						|
 | 
						|
		if testcase.err != nil {
 | 
						|
			t.Fatalf("expected error not encountered on %q: %v", testcase.input, testcase.err)
 | 
						|
		}
 | 
						|
 | 
						|
		if !reflect.DeepEqual(tsi, testcase.expected) {
 | 
						|
			t.Fatalf("expected tarsum info: %v != %v", tsi, testcase.expected)
 | 
						|
		}
 | 
						|
 | 
						|
		if testcase.input != tsi.String() {
 | 
						|
			t.Fatalf("input should equal output: %q != %q", tsi.String(), testcase.input)
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |