github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/worker/uniter/runner/jujuc/jujuctesting/secrets.go (about)

     1  // Copyright 2021 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package jujuctesting
     5  
     6  import (
     7  	"github.com/juju/names/v5"
     8  
     9  	"github.com/juju/juju/core/secrets"
    10  	"github.com/juju/juju/worker/uniter/runner/jujuc"
    11  )
    12  
    13  // ContextSecrets is a test double for jujuc.ContextSecrets.
    14  type ContextSecrets struct {
    15  	contextBase
    16  
    17  	SecretValue secrets.SecretValue
    18  	Access      []secrets.AccessInfo
    19  }
    20  
    21  // GetSecret implements jujuc.ContextSecrets.
    22  func (c *ContextSecrets) GetSecret(uri *secrets.URI, label string, refresh, peek bool) (secrets.SecretValue, error) {
    23  	c.stub.AddCall("GetSecret", uri.String(), label, refresh, peek)
    24  	return c.SecretValue, nil
    25  }
    26  
    27  // CreateSecret implements jujuc.ContextSecrets.
    28  func (c *ContextSecrets) CreateSecret(args *jujuc.SecretCreateArgs) (*secrets.URI, error) {
    29  	c.stub.AddCall("CreateSecret", args)
    30  	uri, _ := secrets.ParseURI("secret:9m4e2mr0ui3e8a215n4g")
    31  	return uri, nil
    32  }
    33  
    34  // UpdateSecret implements jujuc.ContextSecrets.
    35  func (c *ContextSecrets) UpdateSecret(uri *secrets.URI, args *jujuc.SecretUpdateArgs) error {
    36  	c.stub.AddCall("UpdateSecret", uri.String(), args)
    37  	return nil
    38  }
    39  
    40  // RemoveSecret implements jujuc.ContextSecrets.
    41  func (c *ContextSecrets) RemoveSecret(uri *secrets.URI, revision *int) error {
    42  	c.stub.AddCall("RemoveSecret", uri.String(), revision)
    43  	return nil
    44  }
    45  
    46  // SecretMetadata gets the metadata for secrets created by the charm.
    47  func (c *ContextSecrets) SecretMetadata() (map[string]jujuc.SecretMetadata, error) {
    48  	c.stub.AddCall("SecretMetadata")
    49  	return map[string]jujuc.SecretMetadata{
    50  		"9m4e2mr0ui3e8a215n4g": {
    51  			LatestRevision: 666,
    52  			Label:          "label",
    53  			Owner:          names.NewApplicationTag("mariadb"),
    54  			Description:    "description",
    55  			RotatePolicy:   secrets.RotateHourly,
    56  			Access:         c.Access,
    57  		},
    58  	}, nil
    59  }
    60  
    61  // GrantSecret implements jujuc.ContextSecrets.
    62  func (c *ContextSecrets) GrantSecret(uri *secrets.URI, args *jujuc.SecretGrantRevokeArgs) error {
    63  	c.stub.AddCall("GrantSecret", uri.String(), args)
    64  	return nil
    65  }
    66  
    67  // RevokeSecret implements jujuc.ContextSecrets.
    68  func (c *ContextSecrets) RevokeSecret(uri *secrets.URI, args *jujuc.SecretGrantRevokeArgs) error {
    69  	c.stub.AddCall("RevokeSecret", uri.String(), args)
    70  	return nil
    71  }