github.com/jfrog/jfrog-cli-core@v1.12.1/artifactory/commands/buildinfo/publish_test.go (about)

     1  package buildinfo
     2  
     3  import (
     4  	"github.com/jfrog/jfrog-cli-core/artifactory/utils"
     5  	"github.com/jfrog/jfrog-cli-core/utils/config"
     6  	"github.com/stretchr/testify/assert"
     7  	"reflect"
     8  	"strconv"
     9  	"testing"
    10  	"time"
    11  
    12  	"github.com/jfrog/jfrog-client-go/artifactory/buildinfo"
    13  )
    14  
    15  var envVars = map[string]string{"KeY": "key_val", "INClUdEd_VaR": "included_var", "EXCLUDED_pASSwoRd_var": "excluded_var"}
    16  
    17  func TestIncludeAllPattern(t *testing.T) {
    18  	conf := buildinfo.Configuration{EnvInclude: "*"}
    19  	includeFilter := conf.IncludeFilter()
    20  	filteredKeys, err := includeFilter(envVars)
    21  	if err != nil {
    22  		t.Error(err)
    23  	}
    24  
    25  	equals := reflect.DeepEqual(envVars, filteredKeys)
    26  	if !equals {
    27  		t.Error("expected:", envVars, "got:", filteredKeys)
    28  	}
    29  }
    30  
    31  func TestIncludePartial(t *testing.T) {
    32  	conf := buildinfo.Configuration{EnvInclude: "*ED_V*;EXC*SwoRd_var"}
    33  	includeFilter := conf.IncludeFilter()
    34  	filteredKeys, err := includeFilter(envVars)
    35  	if err != nil {
    36  		t.Error(err)
    37  	}
    38  
    39  	expected := map[string]string{"INClUdEd_VaR": "included_var", "EXCLUDED_pASSwoRd_var": "excluded_var"}
    40  	equals := reflect.DeepEqual(expected, filteredKeys)
    41  	if !equals {
    42  		t.Error("expected:", expected, "got:", filteredKeys)
    43  	}
    44  }
    45  
    46  func TestIncludePartialIgnoreCase(t *testing.T) {
    47  	conf := buildinfo.Configuration{EnvInclude: "*Ed_v*"}
    48  	includeFilter := conf.IncludeFilter()
    49  	filteredKeys, err := includeFilter(envVars)
    50  	if err != nil {
    51  		t.Error(err)
    52  	}
    53  
    54  	expected := map[string]string{"INClUdEd_VaR": "included_var"}
    55  	equals := reflect.DeepEqual(expected, filteredKeys)
    56  	if !equals {
    57  		t.Error("expected:", expected, "got:", filteredKeys)
    58  	}
    59  }
    60  
    61  func TestExcludePasswordsPattern(t *testing.T) {
    62  	conf := buildinfo.Configuration{EnvExclude: "*paSSword*;*PsW*;*seCrEt*;*kEy*;*token*"}
    63  	excludeFilter := conf.ExcludeFilter()
    64  	filteredKeys, err := excludeFilter(envVars)
    65  	if err != nil {
    66  		t.Error(err)
    67  	}
    68  
    69  	expected := map[string]string{"INClUdEd_VaR": "included_var"}
    70  	equals := reflect.DeepEqual(expected, filteredKeys)
    71  	if !equals {
    72  		t.Error("expected:", expected, "got:", filteredKeys)
    73  	}
    74  }
    75  
    76  func TestPrintBuildInfoLink(t *testing.T) {
    77  	buildTime := strconv.FormatInt(time.Now().UnixNano()/1000000, 10)
    78  	var linkTypes = []struct {
    79  		majorVersion  int
    80  		buildTime     time.Time
    81  		buildInfoConf utils.BuildConfiguration
    82  		serverDetails config.ServerDetails
    83  		expected      string
    84  	}{
    85  		{5, time.Now(), utils.BuildConfiguration{BuildName: "test", BuildNumber: "1", Module: "6", Project: "cli"},
    86  			config.ServerDetails{Url: "http://localhost:8081/"}, "http://localhost:8081/artifactory/webapp/#/builds/test/1"},
    87  		{6, time.Now(), utils.BuildConfiguration{BuildName: "test", BuildNumber: "1", Module: "6", Project: "cli"},
    88  			config.ServerDetails{Url: "http://localhost:8081/"}, "http://localhost:8081/artifactory/webapp/#/builds/test/1"},
    89  		{7, time.Now(), utils.BuildConfiguration{BuildName: "test", BuildNumber: "1", Module: "6", Project: ""},
    90  			config.ServerDetails{Url: "http://localhost:8082/"}, "http://localhost:8082/ui/builds/test/1/" + buildTime + "/published?buildRepo=artifactory-build-info"},
    91  		{7, time.Now(), utils.BuildConfiguration{BuildName: "test", BuildNumber: "1", Module: "6", Project: "cli"},
    92  			config.ServerDetails{Url: "http://localhost:8082/"}, "http://localhost:8082/ui/builds/test/1/" + buildTime + "/published?buildRepo=cli-build-info&projectKey=cli"},
    93  	}
    94  
    95  	for _, linkType := range linkTypes {
    96  		buildPubConf := &BuildPublishCommand{
    97  			&linkType.buildInfoConf,
    98  			&linkType.serverDetails,
    99  			nil,
   100  			true,
   101  			nil,
   102  		}
   103  		buildPubComService := buildPubConf.getBuildInfoUiUrl(linkType.majorVersion, linkType.buildTime)
   104  		assert.Equal(t, buildPubComService, linkType.expected)
   105  	}
   106  }