open-nomad/nomad/structs/variables_test.go

74 lines
1.6 KiB
Go

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package structs
import (
"testing"
"time"
"github.com/hashicorp/nomad/ci"
"github.com/stretchr/testify/require"
)
func TestStructs_VariableDecrypted_Copy(t *testing.T) {
ci.Parallel(t)
n := time.Now()
a := VariableMetadata{
Namespace: "a",
Path: "a/b/c",
CreateIndex: 1,
CreateTime: n.UnixNano(),
ModifyIndex: 2,
ModifyTime: n.Add(48 * time.Hour).UnixNano(),
}
sv := VariableDecrypted{
VariableMetadata: a,
Items: VariableItems{
"foo": "bar",
"k1": "v1",
},
}
sv2 := sv.Copy()
require.True(t, sv.Equal(sv2), "sv and sv2 should be equal")
sv2.Items["new"] = "new"
require.False(t, sv.Equal(sv2), "sv and sv2 should not be equal")
}
func TestStructs_VariableDecrypted_Validate(t *testing.T) {
ci.Parallel(t)
sv := VariableDecrypted{
VariableMetadata: VariableMetadata{Namespace: "a"},
Items: VariableItems{"foo": "bar"},
}
testCases := []struct {
path string
ok bool
}{
{path: ""},
{path: "nomad"},
{path: "nomad/other"},
{path: "a/b/c", ok: true},
{path: "nomad/jobs", ok: true},
{path: "nomadjobs", ok: true},
{path: "nomad/jobs/whatever", ok: true},
{path: "example/_-~/whatever", ok: true},
{path: "example/@whatever"},
{path: "example/what.ever"},
{path: "nomad/job-templates"},
{path: "nomad/job-templates/whatever", ok: true},
}
for _, tc := range testCases {
tc := tc
sv.Path = tc.path
err := sv.Validate()
if tc.ok {
require.NoError(t, err, "should not get error for: %s", tc.path)
} else {
require.Error(t, err, "should get error for: %s", tc.path)
}
}
}