github.com/jfrog/jfrog-cli-core/v2@v2.51.0/artifactory/commands/transferfiles/filediff_test.go (about)

     1  package transferfiles
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/jfrog/jfrog-cli-core/v2/artifactory/commands/transferfiles/api"
     7  	servicesUtils "github.com/jfrog/jfrog-client-go/artifactory/services/utils"
     8  	"github.com/stretchr/testify/assert"
     9  )
    10  
    11  var convertResultsToFileRepresentationTestCases = []struct {
    12  	input          servicesUtils.ResultItem
    13  	expectedOutput api.FileRepresentation
    14  }{
    15  	{
    16  		servicesUtils.ResultItem{Repo: repo1Key, Path: "path-in-repo", Name: "file-name", Type: "file", Size: 100},
    17  		api.FileRepresentation{Repo: repo1Key, Path: "path-in-repo", Name: "file-name", Size: 100},
    18  	},
    19  	{
    20  		servicesUtils.ResultItem{Repo: repo1Key, Path: "path-in-repo", Name: "folder-name", Type: "folder"},
    21  		api.FileRepresentation{Repo: repo1Key, Path: "path-in-repo/folder-name"},
    22  	},
    23  	{
    24  		servicesUtils.ResultItem{Repo: repo1Key, Path: ".", Name: "folder-name", Type: "folder"},
    25  		api.FileRepresentation{Repo: repo1Key, Path: "folder-name"},
    26  	},
    27  }
    28  
    29  func TestConvertResultsToFileRepresentation(t *testing.T) {
    30  	for _, testCase := range convertResultsToFileRepresentationTestCases {
    31  		files := convertResultsToFileRepresentation([]servicesUtils.ResultItem{testCase.input})
    32  		assert.Equal(t, []api.FileRepresentation{testCase.expectedOutput}, files)
    33  	}
    34  }
    35  
    36  var generateDiffAqlQueryTestCases = []struct {
    37  	paginationOffset       int
    38  	disabledDistinctiveAql bool
    39  	expectedAql            string
    40  }{
    41  	{0, false, "items.find({\"$and\":[{\"modified\":{\"$gte\":\"1\"}},{\"modified\":{\"$lt\":\"2\"}},{\"repo\":\"repo1\",\"type\":\"any\"}]}).include(\"repo\",\"path\",\"name\",\"type\",\"modified\",\"size\").sort({\"$asc\":[\"name\",\"path\"]}).offset(0).limit(10000)"},
    42  	{0, true, "items.find({\"$and\":[{\"modified\":{\"$gte\":\"1\"}},{\"modified\":{\"$lt\":\"2\"}},{\"repo\":\"repo1\",\"type\":\"any\"}]}).include(\"repo\",\"path\",\"name\",\"type\",\"modified\",\"size\").sort({\"$asc\":[\"name\",\"path\"]}).offset(0).limit(10000).distinct(false)"},
    43  	{2, false, "items.find({\"$and\":[{\"modified\":{\"$gte\":\"1\"}},{\"modified\":{\"$lt\":\"2\"}},{\"repo\":\"repo1\",\"type\":\"any\"}]}).include(\"repo\",\"path\",\"name\",\"type\",\"modified\",\"size\").sort({\"$asc\":[\"name\",\"path\"]}).offset(20000).limit(10000)"},
    44  	{2, true, "items.find({\"$and\":[{\"modified\":{\"$gte\":\"1\"}},{\"modified\":{\"$lt\":\"2\"}},{\"repo\":\"repo1\",\"type\":\"any\"}]}).include(\"repo\",\"path\",\"name\",\"type\",\"modified\",\"size\").sort({\"$asc\":[\"name\",\"path\"]}).offset(20000).limit(10000).distinct(false)"},
    45  }
    46  
    47  func TestGenerateDiffAqlQuery(t *testing.T) {
    48  	for _, testCase := range generateDiffAqlQueryTestCases {
    49  		t.Run("", func(*testing.T) {
    50  			results := generateDiffAqlQuery(repo1Key, "1", "2", testCase.paginationOffset, testCase.disabledDistinctiveAql)
    51  			assert.Equal(t, testCase.expectedAql, results)
    52  		})
    53  	}
    54  }
    55  
    56  var generateDockerManifestAqlQueryTestCases = []struct {
    57  	paginationOffset       int
    58  	disabledDistinctiveAql bool
    59  	expectedAql            string
    60  }{
    61  	{0, false, "items.find({\"$and\":[{\"repo\":\"repo1\"},{\"modified\":{\"$gte\":\"1\"}},{\"modified\":{\"$lt\":\"2\"}},{\"$or\":[{\"name\":\"manifest.json\"},{\"name\":\"list.manifest.json\"}]}]}).include(\"repo\",\"path\",\"name\",\"type\",\"modified\").sort({\"$asc\":[\"name\",\"path\"]}).offset(0).limit(10000)"},
    62  	{0, true, "items.find({\"$and\":[{\"repo\":\"repo1\"},{\"modified\":{\"$gte\":\"1\"}},{\"modified\":{\"$lt\":\"2\"}},{\"$or\":[{\"name\":\"manifest.json\"},{\"name\":\"list.manifest.json\"}]}]}).include(\"repo\",\"path\",\"name\",\"type\",\"modified\").sort({\"$asc\":[\"name\",\"path\"]}).offset(0).limit(10000).distinct(false)"},
    63  	{2, false, "items.find({\"$and\":[{\"repo\":\"repo1\"},{\"modified\":{\"$gte\":\"1\"}},{\"modified\":{\"$lt\":\"2\"}},{\"$or\":[{\"name\":\"manifest.json\"},{\"name\":\"list.manifest.json\"}]}]}).include(\"repo\",\"path\",\"name\",\"type\",\"modified\").sort({\"$asc\":[\"name\",\"path\"]}).offset(20000).limit(10000)"},
    64  	{2, true, "items.find({\"$and\":[{\"repo\":\"repo1\"},{\"modified\":{\"$gte\":\"1\"}},{\"modified\":{\"$lt\":\"2\"}},{\"$or\":[{\"name\":\"manifest.json\"},{\"name\":\"list.manifest.json\"}]}]}).include(\"repo\",\"path\",\"name\",\"type\",\"modified\").sort({\"$asc\":[\"name\",\"path\"]}).offset(20000).limit(10000).distinct(false)"},
    65  }
    66  
    67  func TestGenerateDockerManifestAqlQuery(t *testing.T) {
    68  	for _, testCase := range generateDockerManifestAqlQueryTestCases {
    69  		t.Run("", func(*testing.T) {
    70  			results := generateDockerManifestAqlQuery(repo1Key, "1", "2", testCase.paginationOffset, testCase.disabledDistinctiveAql)
    71  			assert.Equal(t, testCase.expectedAql, results)
    72  		})
    73  	}
    74  }