github.com/hashicorp/packer@v1.14.3/internal/hcp/api/errors_test.go (about)

     1  package api
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"google.golang.org/grpc/codes"
     8  )
     9  
    10  func TestCheckErrorCode(t *testing.T) {
    11  	tests := []struct {
    12  		name          string
    13  		codeString    string
    14  		expectCode    codes.Code
    15  		expectSuccess bool
    16  	}{
    17  		{
    18  			"old format, code matches what is looked for",
    19  			`{Code:5,"details":[],"message":"Error: The bucket etc."}`,
    20  			codes.Code(5),
    21  			true,
    22  		},
    23  		{
    24  			"old format, code doesn't match what is looked for",
    25  			`{Code:55,"details":[],"message":"Error: The bucket etc."}`,
    26  			codes.Code(5),
    27  			false,
    28  		},
    29  		{
    30  			"new format, code matches what is looked for",
    31  			`{"code":5,"details":[],"message":"Error: The bucket etc."}`,
    32  			codes.Code(5),
    33  			true,
    34  		},
    35  		{
    36  			"new format, code doesn't match what is looked for",
    37  			`{"code":55,"details":[],"message":"Error: The bucket etc."}`,
    38  			codes.Code(5),
    39  			false,
    40  		},
    41  		{
    42  			"bad format, should always be false",
    43  			`"ceod":55`,
    44  			codes.Code(5),
    45  			false,
    46  		},
    47  	}
    48  
    49  	for _, tt := range tests {
    50  		t.Run(tt.name, func(t *testing.T) {
    51  			found := CheckErrorCode(fmt.Errorf("%s", tt.codeString), tt.expectCode)
    52  			if found != tt.expectSuccess {
    53  				t.Errorf("check error code returned %t, expected %t", found, tt.expectSuccess)
    54  			}
    55  		})
    56  	}
    57  }