mirror of https://github.com/harness/drone.git
162 lines
5.0 KiB
Go
162 lines
5.0 KiB
Go
// Copyright 2023 Harness, Inc.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package metadata
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/harness/gitness/registry/app/api/openapi/contracts/artifact"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestValidatePackageTypes_ValidTypes(t *testing.T) {
|
|
err := ValidatePackageTypes([]string{"DOCKER", "HELM"})
|
|
assert.NoError(t, err)
|
|
}
|
|
|
|
func TestValidatePackageTypes_InvalidTypes(t *testing.T) {
|
|
err := ValidatePackageTypes([]string{"INVALID"})
|
|
assert.Error(t, err)
|
|
assert.Equal(t, "invalid package type", err.Error())
|
|
}
|
|
|
|
func TestValidatePackageType_ValidType(t *testing.T) {
|
|
err := ValidatePackageType("DOCKER")
|
|
assert.NoError(t, err)
|
|
}
|
|
|
|
func TestValidatePackageType_InvalidType(t *testing.T) {
|
|
err := ValidatePackageType("INVALID")
|
|
assert.Error(t, err)
|
|
assert.Equal(t, "invalid package type", err.Error())
|
|
}
|
|
|
|
func TestValidateIdentifier_ValidIdentifier(t *testing.T) {
|
|
err := ValidateIdentifier("valid-identifier")
|
|
assert.NoError(t, err)
|
|
}
|
|
|
|
func TestValidateIdentifier_InvalidIdentifier(t *testing.T) {
|
|
err := ValidateIdentifier("Invalid Identifier")
|
|
assert.Error(t, err)
|
|
assert.Equal(t, RegistryIdentifierErrorMsg, err.Error())
|
|
}
|
|
|
|
func TestCleanURLPath_ValidURL(t *testing.T) {
|
|
input := "https://example.com/path/"
|
|
expected := "https://example.com/path"
|
|
CleanURLPath(&input)
|
|
assert.Equal(t, expected, input)
|
|
}
|
|
|
|
func TestCleanURLPath_InvalidURL(t *testing.T) {
|
|
input := "://invalid-url"
|
|
expected := "://invalid-url"
|
|
CleanURLPath(&input)
|
|
assert.Equal(t, expected, input)
|
|
}
|
|
|
|
func TestGetTimeInMs_ValidTime(t *testing.T) {
|
|
tm := time.Date(2023, 1, 1, 0, 0, 0, 0, time.UTC)
|
|
expected := "1672531200000"
|
|
result := GetTimeInMs(tm)
|
|
assert.Equal(t, expected, result)
|
|
}
|
|
|
|
func TestGetErrorResponse_ValidError(t *testing.T) {
|
|
code := 404
|
|
message := "Not Found"
|
|
expected := &artifact.Error{
|
|
Code: "404",
|
|
Message: message,
|
|
}
|
|
result := GetErrorResponse(code, message)
|
|
assert.Equal(t, expected, result)
|
|
}
|
|
|
|
func TestGetSortByOrder_ValidOrder(t *testing.T) {
|
|
assert.Equal(t, "ASC", GetSortByOrder(""))
|
|
assert.Equal(t, "DESC", GetSortByOrder("DESC"))
|
|
assert.Equal(t, "ASC", GetSortByOrder("INVALID"))
|
|
}
|
|
|
|
func TestGetSortByField_ValidField(t *testing.T) {
|
|
assert.Equal(t, "name", GetSortByField("identifier", RepositoryResource))
|
|
assert.Equal(t, "created_at", GetSortByField("invalid", RepositoryResource))
|
|
}
|
|
|
|
func TestGetPageLimit_ValidPageSize(t *testing.T) {
|
|
pageSize := artifact.PageSize(20)
|
|
assert.Equal(t, 20, GetPageLimit(&pageSize))
|
|
assert.Equal(t, 10, GetPageLimit(nil))
|
|
}
|
|
|
|
func TestGetOffset_ValidOffset(t *testing.T) {
|
|
pageSize := artifact.PageSize(20)
|
|
pageNumber := artifact.PageNumber(2)
|
|
assert.Equal(t, 40, GetOffset(&pageSize, &pageNumber))
|
|
assert.Equal(t, 0, GetOffset(nil, nil))
|
|
}
|
|
|
|
func TestGetPageNumber_ValidPageNumber(t *testing.T) {
|
|
pageNumber := artifact.PageNumber(2)
|
|
assert.Equal(t, int64(2), GetPageNumber(&pageNumber))
|
|
assert.Equal(t, int64(1), GetPageNumber(nil))
|
|
}
|
|
|
|
func TestGetSuccessResponse_ValidResponse(t *testing.T) {
|
|
expected := &artifact.Success{
|
|
Status: artifact.StatusSUCCESS,
|
|
}
|
|
result := GetSuccessResponse()
|
|
assert.Equal(t, expected, result)
|
|
}
|
|
|
|
func TestGetPageCount_ValidCount(t *testing.T) {
|
|
assert.Equal(t, int64(5), GetPageCount(50, 10))
|
|
assert.Equal(t, int64(0), GetPageCount(0, 10))
|
|
}
|
|
|
|
func TestGetRegistryRef_ValidRef(t *testing.T) {
|
|
assert.Equal(t, "root/registry", GetRegistryRef("root", "registry"))
|
|
}
|
|
|
|
func TestGetRepoURLWithoutProtocol_ValidURL(t *testing.T) {
|
|
assert.Equal(t, "example.com/path", GetRepoURLWithoutProtocol("https://example.com/path"))
|
|
assert.Equal(t, "", GetRepoURLWithoutProtocol("://invalid-url"))
|
|
}
|
|
|
|
func TestGetTagURL_ValidURL(t *testing.T) {
|
|
assert.Equal(t, "https://example.com/artifact/version", GetTagURL("artifact", "version", "https://example.com"))
|
|
}
|
|
|
|
func TestGetPullCommand_ValidCommand(t *testing.T) {
|
|
assert.Equal(t, "docker pull example.com/image:tag",
|
|
GetPullCommand("image", "tag", "DOCKER", "https://example.com"))
|
|
assert.Equal(t, "helm pull oci://example.com/image:tag",
|
|
GetPullCommand("image", "tag", "HELM", "https://example.com"))
|
|
assert.Equal(t, "", GetPullCommand("image", "tag", "INVALID", "https://example.com"))
|
|
}
|
|
|
|
func TestGetDockerPullCommand_ValidCommand(t *testing.T) {
|
|
assert.Equal(t, "docker pull example.com/image:tag", GetDockerPullCommand("image", "tag", "https://example.com"))
|
|
}
|
|
|
|
func TestGetHelmPullCommand_ValidCommand(t *testing.T) {
|
|
assert.Equal(t, "helm pull oci://example.com/image:tag", GetHelmPullCommand("image", "tag", "https://example.com"))
|
|
}
|