github.com/hashicorp/nomad/api@v0.0.0-20240306165712-3193ac204f65/sentinel_test.go (about) 1 // Copyright (c) HashiCorp, Inc. 2 // SPDX-License-Identifier: MPL-2.0 3 4 //go:build ent 5 6 package api 7 8 import ( 9 "testing" 10 11 "github.com/hashicorp/nomad/api/internal/testutil" 12 "github.com/shoenig/test/must" 13 ) 14 15 func TestSentinelPolicies_ListUpsert(t *testing.T) { 16 testutil.Parallel(t) 17 c, s, _ := makeACLClient(t, nil, nil) 18 defer s.Stop() 19 ap := c.SentinelPolicies() 20 21 // Listing when nothing exists returns empty 22 result, qm, err := ap.List(nil) 23 must.NoError(t, err) 24 must.Positive(t, qm.LastIndex) 25 must.SliceEmpty(t, result) 26 27 // Register a policy 28 policy := &SentinelPolicy{ 29 Name: "test", 30 Description: "test", 31 EnforcementLevel: "advisory", 32 Scope: "submit-job", 33 Policy: "main = rule { true }", 34 } 35 wm, err := ap.Upsert(policy, nil) 36 must.NoError(t, err) 37 assertWriteMeta(t, wm) 38 39 // Check the list again 40 result, qm, err = ap.List(nil) 41 must.NoError(t, err) 42 assertQueryMeta(t, qm) 43 must.Len(t, 1, result) 44 } 45 46 func TestSentinelPolicies_Delete(t *testing.T) { 47 testutil.Parallel(t) 48 49 c, s, _ := makeACLClient(t, nil, nil) 50 defer s.Stop() 51 ap := c.SentinelPolicies() 52 53 // Register a policy 54 policy := &SentinelPolicy{ 55 Name: "test", 56 Description: "test", 57 EnforcementLevel: "advisory", 58 Scope: "submit-job", 59 Policy: "main = rule { true } ", 60 } 61 wm, err := ap.Upsert(policy, nil) 62 must.NoError(t, err) 63 assertWriteMeta(t, wm) 64 65 // Delete the policy 66 wm, err = ap.Delete(policy.Name, nil) 67 must.NoError(t, err) 68 assertWriteMeta(t, wm) 69 70 // Check the list again 71 result, qm, err := ap.List(nil) 72 must.NoError(t, err) 73 assertQueryMeta(t, qm) 74 must.SliceEmpty(t, result) 75 } 76 77 func TestSentinelPolicies_Info(t *testing.T) { 78 testutil.Parallel(t) 79 80 c, s, _ := makeACLClient(t, nil, nil) 81 defer s.Stop() 82 ap := c.SentinelPolicies() 83 84 // Register a policy 85 policy := &SentinelPolicy{ 86 Name: "test", 87 Description: "test", 88 EnforcementLevel: "advisory", 89 Scope: "submit-job", 90 Policy: "main = rule { true }", 91 } 92 wm, err := ap.Upsert(policy, nil) 93 must.NoError(t, err) 94 assertWriteMeta(t, wm) 95 96 // Query the policy 97 out, qm, err := ap.Info(policy.Name, nil) 98 must.NoError(t, err) 99 assertQueryMeta(t, qm) 100 must.Eq(t, policy.Name, out.Name) 101 }