Skip to content

Commit

Permalink
SCALRCORE-17735 Add user and team.
Browse files Browse the repository at this point in the history
  • Loading branch information
vaniakov committed May 5, 2021
1 parent fa7ceb2 commit 9e62ca9
Show file tree
Hide file tree
Showing 10 changed files with 981 additions and 4 deletions.
74 changes: 74 additions & 0 deletions examples/teams/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package main

import (
"context"
"log"

scalr "github.com/scalr/go-scalr"
)

func main() {
config := scalr.DefaultConfig()
config.Headers.Set("Prefer", "profile=internal")

client, err := scalr.NewClient(config)
if err != nil {
log.Fatal(err)
}

// Create a context
ctx := context.Background()

users := []*scalr.User{{ID: "user-suh84u6vuvidtbg"}}

// Create a team
opts := scalr.TeamCreateOptions{
IdentityProvider: &scalr.IdentityProvider{ID: "idp-sohkb0o1phrdmr8"},
Account: &scalr.Account{ID: "acc-svrcncgh453bi8g"},
Name: scalr.String("GoTeams4"),
Description: scalr.String("Team created by go-scalr"),
Users: users, // test@scalr.com
}

team, err := client.Teams.Create(ctx, opts)
if err != nil {
log.Fatal(err)
}

log.Printf("Team created %v", team.ID)

// Retrieve a team
team, err = client.Teams.Read(ctx, team.ID)
if err != nil {
log.Fatal(err)
}

log.Printf("Team %v Description: %v", team.ID, team.Description)

// Retrieve all teams
teams, err := client.Teams.List(ctx)
if err != nil {
log.Fatal(err)
}

log.Printf("There are %v teams on the server", len(teams.Items))

// Update the team
team, err = client.Teams.Update(ctx, team.ID, scalr.TeamUpdateOptions{
Description: scalr.String("Edited"),
// Name: scalr.String("Edited"),
// Users: []*scalr.User{},
})
if err != nil {
log.Fatal(err)
}
log.Printf("Update Description of the team %v: %v", team.ID, team.Description)

// Delete the team
err = client.Teams.Delete(ctx, team.ID)
if err != nil {
log.Fatal(err)
}
log.Printf("Deleted team %v", team.ID)

}
70 changes: 70 additions & 0 deletions examples/users/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package main

import (
"context"
"log"
"os"

scalr "github.com/scalr/go-scalr"
)

func main() {
config := scalr.DefaultConfig()
config.Headers.Set("Prefer", "profile=internal")

client, err := scalr.NewClient(config)
if err != nil {
log.Fatal(err)
}

// Create a context
ctx := context.Background()

// Create a user
opts := scalr.UserCreateOptions{
Email: scalr.String("i.kovalkovskyi6@scalr.com"),
IdentityProvider: &scalr.IdentityProvider{ID: os.Getenv("IDP_ID")},
Status: scalr.UserStatusActive,
}

usr, err := client.Users.Create(ctx, opts)
if err != nil {
log.Fatal(err)
}

log.Printf("User created %v", usr.ID)

// Retrieve a user
usr, err = client.Users.Read(ctx, usr.ID)
if err != nil {
log.Fatal(err)
}

log.Printf("User %v was created at: %v", usr.ID, usr.CreatedAt)

// Retrieve all users
users, err := client.Users.List(ctx)
if err != nil {
log.Fatal(err)
}

log.Printf("There are %v users on the server", len(users.Items))

// Update the user
usr, err = client.Users.Update(ctx, usr.ID, scalr.UserUpdateOptions{
FullName: scalr.String("Ivan Kovalkovskyi"),
Status: scalr.UserStatusInactive,
})
if err != nil {
log.Fatal(err)
}
log.Printf("Update status of the user %v: %v", usr.ID, usr.Status)

// Delete the user
err = client.Users.Delete(ctx, usr.ID)
if err != nil {
log.Fatal(err)
}
log.Printf("Deleted user %v", usr.ID)

}
46 changes: 46 additions & 0 deletions helper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import (
)

const defaultAccountID = "acc-svrcncgh453bi8g"
const defaultIdentityProviderID = "idp-sohkb0o1phrdmr8"
const defaultUserID = "user-suh84u6vuvidtbg"
const badIdentifier = "! / nope"

func testClient(t *testing.T) *Client {
Expand Down Expand Up @@ -39,6 +41,50 @@ func createEnvironment(t *testing.T, client *Client) (*Environment, func()) {
}
}

func createUser(t *testing.T, client *Client) (*User, func()) {
ctx := context.Background()
usr, err := client.Users.Create(ctx, UserCreateOptions{
Email: String("tst-" + randomString(t) + "@scalr.com"),
IdentityProvider: &IdentityProvider{ID: defaultIdentityProviderID},
Status: UserStatusActive,
})
if err != nil {
t.Fatal(err)
}

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

func createTeam(t *testing.T, client *Client) (*Team, func()) {
ctx := context.Background()
users := []*User{{ID: defaultUserID}}
team, err := client.Teams.Create(ctx, TeamCreateOptions{
Name: String("tst-" + randomString(t)),
Description: String("Team created by scalr-go tests"),
IdentityProvider: &IdentityProvider{ID: defaultIdentityProviderID},
Account: &Account{ID: defaultAccountID},
Users: users,
})

if err != nil {
t.Fatal(err)
}

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

func createWorkspace(t *testing.T, client *Client, env *Environment) (*Workspace, func()) {
var envCleanup func()

Expand Down
6 changes: 6 additions & 0 deletions identity_provider.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package scalr

// IdentityProvider represents a Scalr IACP IdentityProvider.
type IdentityProvider struct {
ID string `jsonapi:"primary,identity-providers"`
}
4 changes: 4 additions & 0 deletions scalr.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,8 @@ type Client struct {
Environments Environments
ConfigurationVersions ConfigurationVersions
VcsRevisions VcsRevisions
Users Users
Teams Teams
}

// NewClient creates a new Scalr API client.
Expand Down Expand Up @@ -181,6 +183,8 @@ func NewClient(cfg *Config) (*Client, error) {
client.Webhooks = &webhooks{client: client}
client.ConfigurationVersions = &configurationVersions{client: client}
client.VcsRevisions = &vcs_revisions{client: client}
client.Users = &users{client: client}
client.Teams = &teams{client: client}

return client, nil
}
Expand Down
Loading

0 comments on commit 9e62ca9

Please sign in to comment.