Skip to content

Commit

Permalink
Variable sets (#305)
Browse files Browse the repository at this point in the history
* Add VariableSets workflow

Co-authored-by: Nick Fagerlund <nick.fagerlund@gmail.com>
  • Loading branch information
rexredinger and nfagerlund committed Mar 24, 2022
1 parent c1df079 commit e004de0
Show file tree
Hide file tree
Showing 8 changed files with 1,203 additions and 1 deletion.
6 changes: 6 additions & 0 deletions errors.go
Expand Up @@ -146,6 +146,8 @@ var (

ErrInvalidNotificationTrigger = errors.New("invalid value for notification trigger")

ErrInvalidVariableSetID = errors.New("invalid variable set ID")

ErrInvalidCommentID = errors.New("invalid value for comment ID")

ErrInvalidCommentBody = errors.New("invalid value for comment body")
Expand Down Expand Up @@ -253,5 +255,9 @@ var (

ErrRequiredUsernameOrMembershipIds = errors.New("usernames or organization membership ids are required")

ErrRequiredGlobalFlag = errors.New("global flag is required")

ErrRequiredWorkspacesList = errors.New("no workspaces list provided")

ErrCommentBody = errors.New("comment body is required")
)
84 changes: 84 additions & 0 deletions helper_test.go
Expand Up @@ -1077,6 +1077,90 @@ func createWorkspaceRunTask(t *testing.T, client *Client, workspace *Workspace,
}
}

func createVariableSet(t *testing.T, client *Client, org *Organization, options VariableSetCreateOptions) (*VariableSet, func()) {
var orgCleanup func()

if org == nil {
org, orgCleanup = createOrganization(t, client)
}

if options.Name == nil {
options.Name = String(randomString(t))
}

if options.Global == nil {
options.Global = Bool(false)
}

ctx := context.Background()
vs, err := client.VariableSets.Create(ctx, org.Name, &options)
if err != nil {
t.Fatal(err)
}

return vs, func() {
if err := client.VariableSets.Delete(ctx, vs.ID); err != nil {
t.Errorf("Error destroying variable set! WARNING: Dangling resources\n"+
"may exist! The full error is shown below.\n\n"+
"VariableSet: %s\nError: %s", vs.Name, err)
}

if orgCleanup != nil {
orgCleanup()
}
}
}

func createVariableSetVariable(t *testing.T, client *Client, vs *VariableSet, options VariableSetVariableCreateOptions) (*VariableSetVariable, func()) {
var vsCleanup func()

if vs == nil {
vs, vsCleanup = createVariableSet(t, client, nil, VariableSetCreateOptions{})
}

if options.Key == nil {
options.Key = String(randomString(t))
}

if options.Value == nil {
options.Value = String(randomString(t))
}

if options.Description == nil {
options.Description = String("")
}

if options.Category == nil {
options.Category = Category(CategoryTerraform)
}

if options.HCL == nil {
options.HCL = Bool(false)
}

if options.Sensitive == nil {
options.Sensitive = Bool(false)
}

ctx := context.Background()
v, err := client.VariableSetVariables.Create(ctx, vs.ID, &options)
if err != nil {
t.Fatal(err)
}

return v, func() {
if err := client.VariableSetVariables.Delete(ctx, vs.ID, v.ID); err != nil {
t.Errorf("Error destroying variable! WARNING: Dangling resources\n"+
"may exist! The full error is shown below.\n\n"+
"Variable: %s\nError: %s", v.Key, err)
}

if vsCleanup != nil {
vsCleanup()
}
}
}

func genSha(t *testing.T, secret, data string) string {
h := hmac.New(sha256.New, []byte(secret))
_, err := h.Write([]byte(data))
Expand Down
4 changes: 4 additions & 0 deletions tfe.go
Expand Up @@ -143,6 +143,8 @@ type Client struct {
Users Users
UserTokens UserTokens
Variables Variables
VariableSets VariableSets
VariableSetVariables VariableSetVariables
Workspaces Workspaces
WorkspaceRunTasks WorkspaceRunTasks

Expand Down Expand Up @@ -284,6 +286,8 @@ func NewClient(cfg *Config) (*Client, error) {
client.Users = &users{client: client}
client.UserTokens = &userTokens{client: client}
client.Variables = &variables{client: client}
client.VariableSets = &variableSets{client: client}
client.VariableSetVariables = &variableSetVariables{client: client}
client.Workspaces = &workspaces{client: client}
client.WorkspaceRunTasks = &workspaceRunTasks{client: client}

Expand Down
2 changes: 1 addition & 1 deletion variable_integration_test.go
Expand Up @@ -128,7 +128,7 @@ func TestVariablesCreate(t *testing.T) {
options := VariableCreateOptions{
Key: String(randomString(t)),
Value: String(randomString(t)),
Description: String("tortor aliquam nulla facilisi cras fermentum odio eu feugiat pretium nibh ipsum consequat nisl vel pretium lectus quam id leo in vitae turpis massa sed elementum tempus egestas sed sed risus pretium quam vulputate dignissim suspendisse in est ante in nibh mauris cursus mattis molestie a iaculis at erat pellentesque adipiscing commodo elit at imperdiet dui accumsan sit amet nulla facilisi morbi tempus iaculis urna id volutpat lacus laoreet non curabitur gravida arcu ac tortor dignissim convallis aenean et tortor"),
Description: String("tortor aliquam nulla go lint is fussy about spelling cras fermentum odio eu feugiat pretium nibh ipsum consequat nisl vel pretium lectus quam id leo in vitae turpis massa sed elementum tempus egestas sed sed risus pretium quam vulputate dignissim suspendisse in est ante in nibh mauris cursus mattis molestie a iaculis at erat pellentesque adipiscing commodo elit at imperdiet dui accumsan sit amet nulla redacted morbi tempus iaculis urna id volutpat lacus laoreet non curabitur gravida arcu ac tortor dignissim convallis aenean et tortor"),
Category: Category(CategoryTerraform),
}

Expand Down

0 comments on commit e004de0

Please sign in to comment.