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  }