blob: 6ea15b537abc44d612d358535fe51c8d99cbbe31 [file] [log] [blame]
#######################################################################################
# Copyright ETSI Contributors and Others.
#
# 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.
#######################################################################################
# Module with custom functions to manage KSUs and their renderization of the corresponding ResourceList into a given target folder.
# Imports
use std assert
use ../location.nu *
### to path components tests ###
export def "test location to path components repo-path with base-path" [] {
let input: record = {
"repo-path": ["/custom/repo"],
"base-path": ["base/dir"], # Now unused in base construction
"relative-path": ["file.txt"]
}
let actual: list<string> = ($input | to path components)
let expected: list<string> = [ "/custom/repo" "base/dir" "file.txt" ]
assert equal $actual $expected
}
export def "test location to path components repo-path with base-path with strings" [] {
let input: record = {
"repo-path": "/custom/repo",
"base-path": "base/dir", # Now unused in base construction
"relative-path": "file.txt"
}
let actual: list<string> = ($input | to path components)
let expected: list<string> = [ "/custom/repo" "base/dir" "file.txt" ]
assert equal $actual $expected
}
export def "test location to path components explicit base-path usage" [] {
let input: record = {
"repo-name": "my_repo",
"base-path": "explicit/base",
"relative-path": "data.csv"
}
let actual: list<string> = ($input | to path components)
let expected: list<string> = [ "/repos/my_repo" "explicit/base" "data.csv" ]
assert equal $actual $expected
}
export def "test location to path components empty repo-name errors" [] {
let input: record = {
"repo-name": "",
"relative-path": "file.txt"
}
assert error { $input | to path components }
}
export def "test location to path components partial profile spec errors" [] {
let input: record = {
"repo-path": "/valid/repo",
"profile-type": "dev",
"relative-path": "file.txt"
}
assert error { $input | to path components }
}
export def "test location to path components mixed spec priorities" [] {
let input: record = {
"repo-path": "/primary/repo",
"repo-name": "secondary",
"base-path": "explicit_base",
"oka-type": "models",
"oka-name": "ai",
"relative-path": "config.yaml"
}
let actual: list<string> = ($input | to path components)
let expected: list<string> = [ "/primary/repo" "explicit_base" "config.yaml" ]
assert equal $actual $expected
}
# Updated existing tests with clearer names
export def "test location to path components profile-based with normalization" [] {
let input: record = {
"repo-name": "profile_repo",
"profile-type": "PROD",
"profile-name": "EU_Cluster",
"relative-path": "secrets.env"
}
let actual: list<string> = ($input | to path components)
let expected: list<string> = [ "/repos/profile_repo" "osm_admin/PROD/EU_Cluster" "secrets.env" ]
assert equal $actual $expected
}
export def "test location to path components oka-based with normalization" [] {
let input: record = {
"repo-path": "/repos/oka_repo",
"oka-type": "DATA",
"oka-name": "Census2025",
"relative-path": "demographics.csv"
}
let actual: list<string> = ($input | to path components)
let expected: list<string> = [ "/repos/oka_repo" "DATA/Census2025" "demographics.csv" ]
assert equal $actual $expected
}
# TODO:
### to absolute path tests ###
export def "test location to absolute path basic repo-path" [] {
let input: record = {
"repo-path": ["/main/repo", "sw-catalogs"],
"base-path": ["apps", "example1"],
"relative-path": ["manifests", "main-pattern", "main-brick-manifests"]
}
let actual: string = ($input | to absolute path)
let expected: string = "/main/repo/sw-catalogs/apps/example1/manifests/main-pattern/main-brick-manifests"
assert equal $actual $expected
}
export def "test location to absolute path profile-based with defaults" [] {
let input: record = {
"repo-name": "fleet",
"profile-type": "dev",
"profile-name": "TestEnv",
"relative-path": ["app_instance01", "main"]
}
let actual = ($input | to absolute path)
let expected = "/repos/fleet/osm_admin/dev/TestEnv/app_instance01/main"
assert equal $actual $expected
}
export def "test location to absolute path oka-based with custom defaults" [] {
let input: record = {
"repo-name": "data_repo",
"oka-type": "app", # It should be converted to "apps"
"oka-name": "upf",
"relative-path": ["2024", "main"]
}
let actual: string = ($input | to absolute path "geo" "/data")
let expected: string = "/data/data_repo/apps/upf/2024/main"
assert equal $actual $expected
}
export def "test location to absolute path mixed specifications priority" [] {
let input: record = {
"repo-name": "fleet",
"base-path": ["my_oka"],
"relative-path": ["manifests"]
}
let actual: string = ($input | to absolute path)
let expected: string = "/repos/fleet/my_oka/manifests"
assert equal $actual $expected
}
export def "test location to absolute path special characters handling" [] {
let input: record = {
"repo-name": "fleet",
"profile-type": "apps", # Should become "app-profiles"
"profile-name": "mycluster01",
"relative-path": ["configs/prod"]
}
let actual: string = ($input | to absolute path)
let expected: string = "/repos/fleet/osm_admin/app-profiles/mycluster01/configs/prod"
assert equal $actual $expected
}
export def "test location to absolute path error missing relative-path" [] {
let input: record = {
"repo-path": ["/valid/repo"],
"base-path": ["valid/base"]
}
assert error { $input | to absolute path }
}
export def "test location to absolute path nested relative path" [] {
let input: record = {
"repo-path": ["/repos/core"],
"oka-type": "infra-controllers",
"oka-name": "predictive",
"relative-path": ["mobile", "serverless-web"]
}
let actual: string = ($input | to absolute path)
let expected: string = "/repos/core/infra-controllers/predictive/mobile/serverless-web"
assert equal $actual $expected
}
export def "test location to absolute path empty repo-name error" [] {
let input: record = {
"repo-name": "",
"relative-path": ["file.txt"]
}
assert error { $input | to absolute path }
}
export def "test location to absolute path minimal valid input" [] {
let input: record = {
"repo-name": "fleet",
"base-path": ["apps"],
"relative-path": ["test-app"]
}
let actual: string = ($input | to absolute path)
let expected: string = "/repos/fleet/apps/test-app"
assert equal $actual $expected
}