github.com/bitrise-io/go-steputils/v2@v2.0.0-alpha.30/cache/network/upload_test.go (about)

     1  package network
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  
     7  	"github.com/bitrise-io/go-utils/v2/log"
     8  	"github.com/stretchr/testify/mock"
     9  )
    10  
    11  func Test_validateKey(t *testing.T) {
    12  	tests := []struct {
    13  		name    string
    14  		key     string
    15  		want    string
    16  		wantErr bool
    17  	}{
    18  		{
    19  			name: "valid key",
    20  			key:  "my-cache-key",
    21  			want: "my-cache-key",
    22  		},
    23  		{
    24  			name:    "key with comma",
    25  			key:     "my-cache-k,ey",
    26  			wantErr: true,
    27  		},
    28  		{
    29  			name: "key that is too long",
    30  			key:  strings.Repeat("cache", 103),
    31  			want: "cachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecachecacheca",
    32  		},
    33  	}
    34  	for _, tt := range tests {
    35  		t.Run(tt.name, func(t *testing.T) {
    36  			got, err := validateKey(tt.key, log.NewLogger())
    37  			if (err != nil) != tt.wantErr {
    38  				t.Errorf("validateKey() error = %v, wantErr %v", err, tt.wantErr)
    39  				return
    40  			}
    41  			if got != tt.want {
    42  				t.Errorf("validateKey() got = %v, want %v", got, tt.want)
    43  			}
    44  		})
    45  	}
    46  }
    47  
    48  func Test_logResponseMessage(t *testing.T) {
    49  	tests := []struct {
    50  		name           string
    51  		response       acknowledgeResponse
    52  		wantLogMessage string
    53  		wantLogFn      string
    54  		wantSkip       bool
    55  	}{
    56  		{
    57  			name: "Debug message",
    58  			response: acknowledgeResponse{
    59  				Message:  "Upload acknowledged: 1.6 GB used of 2 GB storage.",
    60  				Severity: "debug",
    61  			},
    62  			wantLogMessage: "Upload acknowledged: 1.6 GB used of 2 GB storage.",
    63  			wantLogFn:      "Debugf",
    64  		},
    65  		{
    66  			name: "Warning message",
    67  			response: acknowledgeResponse{
    68  				Message:  "Upload acknowledged but quota exceeded: 8.6 GB used of 2 GB storage.",
    69  				Severity: "warning",
    70  			},
    71  			wantLogMessage: "Upload acknowledged but quota exceeded: 8.6 GB used of 2 GB storage.",
    72  			wantLogFn:      "Warnf",
    73  		},
    74  		{
    75  			name:     "Empty response",
    76  			response: acknowledgeResponse{},
    77  			wantSkip: true,
    78  		},
    79  		{
    80  			name: "Unrecognized severity",
    81  			response: acknowledgeResponse{
    82  				Message:  "Message from the future!",
    83  				Severity: "fatal",
    84  			},
    85  			wantLogMessage: "Message from the future!",
    86  			wantLogFn:      "Printf",
    87  		},
    88  	}
    89  	for _, tt := range tests {
    90  		t.Run(tt.name, func(t *testing.T) {
    91  			// Given
    92  			mockLogger := new(MockLogger)
    93  			if !tt.wantSkip {
    94  				mockLogger.On(tt.wantLogFn, "\n", mock.Anything).Return()
    95  				mockLogger.On(tt.wantLogFn, tt.wantLogMessage, mock.Anything).Return()
    96  				mockLogger.On(tt.wantLogFn, "\n", mock.Anything).Return()
    97  			}
    98  
    99  			// When
   100  			logResponseMessage(tt.response, mockLogger)
   101  
   102  			// Then
   103  			mockLogger.AssertExpectations(t)
   104  		})
   105  	}
   106  }