github.com/shopify/docker@v1.13.1/api/types/reference/image_reference_test.go (about)

     1  package reference
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  func TestParse(t *testing.T) {
     8  	testCases := []struct {
     9  		ref           string
    10  		expectedName  string
    11  		expectedTag   string
    12  		expectedError bool
    13  	}{
    14  		{
    15  			ref:           "",
    16  			expectedName:  "",
    17  			expectedTag:   "",
    18  			expectedError: true,
    19  		},
    20  		{
    21  			ref:           "repository",
    22  			expectedName:  "repository",
    23  			expectedTag:   "latest",
    24  			expectedError: false,
    25  		},
    26  		{
    27  			ref:           "repository:tag",
    28  			expectedName:  "repository",
    29  			expectedTag:   "tag",
    30  			expectedError: false,
    31  		},
    32  		{
    33  			ref:           "test.com/repository",
    34  			expectedName:  "test.com/repository",
    35  			expectedTag:   "latest",
    36  			expectedError: false,
    37  		},
    38  		{
    39  			ref:           "test.com:5000/test/repository",
    40  			expectedName:  "test.com:5000/test/repository",
    41  			expectedTag:   "latest",
    42  			expectedError: false,
    43  		},
    44  		{
    45  			ref:           "test.com:5000/repo@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    46  			expectedName:  "test.com:5000/repo",
    47  			expectedTag:   "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    48  			expectedError: false,
    49  		},
    50  		{
    51  			ref:           "test.com:5000/repo:tag@sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    52  			expectedName:  "test.com:5000/repo",
    53  			expectedTag:   "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
    54  			expectedError: false,
    55  		},
    56  	}
    57  
    58  	for _, c := range testCases {
    59  		name, tag, err := Parse(c.ref)
    60  		if err != nil && c.expectedError {
    61  			continue
    62  		} else if err != nil {
    63  			t.Fatalf("error with %s: %s", c.ref, err.Error())
    64  		}
    65  		if name != c.expectedName {
    66  			t.Fatalf("expected name %s, got %s", c.expectedName, name)
    67  		}
    68  		if tag != c.expectedTag {
    69  			t.Fatalf("expected tag %s, got %s", c.expectedTag, tag)
    70  		}
    71  	}
    72  }