Skip to content

Commit

Permalink
Adding internal tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mchavez committed Jul 12, 2024
1 parent e3353fa commit 9f64a5e
Show file tree
Hide file tree
Showing 28 changed files with 8,613 additions and 0 deletions.
Binary file added connector
Binary file not shown.
3 changes: 3 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ require (
github.com/conductorone/baton-sdk v0.1.38
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0
github.com/spf13/cobra v1.8.0
github.com/stretchr/testify v1.9.0
go.uber.org/zap v1.27.0
golang.org/x/text v0.15.0
)
Expand Down Expand Up @@ -33,6 +34,7 @@ require (
github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 // indirect
github.com/aws/smithy-go v1.20.2 // indirect
github.com/benbjohnson/clock v1.3.5 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/doug-martin/goqu/v9 v9.19.0 // indirect
github.com/dustin/go-humanize v1.0.1 // indirect
github.com/envoyproxy/protoc-gen-validate v1.0.4 // indirect
Expand All @@ -52,6 +54,7 @@ require (
github.com/mitchellh/mapstructure v1.5.0 // indirect
github.com/ncruces/go-strftime v0.1.9 // indirect
github.com/pelletier/go-toml/v2 v2.2.2 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
github.com/pquerna/xjwt v0.2.0 // indirect
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
Expand Down
152 changes: 152 additions & 0 deletions pkg/client/internal_integration_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
package client

import (
"context"
"encoding/json"
"io"
"net/http"
"net/url"
"os"
"testing"

"github.com/stretchr/testify/assert"
)

var (
ctx = context.Background()
clientId, _ = os.LookupEnv("BATON_SERVICE_ACCOUNT_CLIENT_ID")
clientSecret, _ = os.LookupEnv("BATON_SERVICE_ACCOUNT_CLIENT_SECRET")
vaultId, _ = os.LookupEnv("BATON_VAULT")
orgId, _ = os.LookupEnv("BATON_ORGANIZATION_ID")
)

const (
authType = "Bearer "
baseUrl = "https://accounts.apps.verygoodsecurity.com"
)

func TestOrganizationResources(t *testing.T) {
if clientId == "" && clientSecret == "" && orgId == "" && vaultId == "" {
t.Skip()
}

tests := []struct {
name string
resource string
}{
{
name: "Checking Members",
resource: "members",
},
{
name: "Checking Users",
resource: "users",
},
{
name: "Checking Invites",
resource: "invites",
},
}

cli, err := getClientForTesting(ctx, clientId, clientSecret, orgId, vaultId)
assert.Nil(t, err)
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
endpointUrl, err := url.JoinPath(baseUrl, "organizations", orgId, test.resource)
assert.Nil(t, err)

uri, err := url.Parse(endpointUrl)
assert.Nil(t, err)

req, err := getRequestForTesting(cli, uri)
assert.Nil(t, err)

resp, err := cli.httpClient.Do(req)
assert.Nil(t, err)

defer resp.Body.Close()
res, err := io.ReadAll(resp.Body)
assert.Nil(t, err)
assert.NotNil(t, res)

var data any
err = json.Unmarshal(res, &data)
assert.Nil(t, err)
})
}
}

func TestVaultMembers(t *testing.T) {
if clientId == "" && clientSecret == "" && orgId == "" && vaultId == "" {
t.Skip()
}

cli, err := getClientForTesting(ctx, clientId, clientSecret, orgId, vaultId)
assert.Nil(t, err)

endpointUrl, err := url.JoinPath(baseUrl, "vaults", vaultId, "members")
assert.Nil(t, err)

uri, err := url.Parse(endpointUrl)
assert.Nil(t, err)

req, err := getRequestForTesting(cli, uri)
assert.Nil(t, err)

resp, err := cli.httpClient.Do(req)
assert.Nil(t, err)

defer resp.Body.Close()
res, err := io.ReadAll(resp.Body)
assert.Nil(t, err)
assert.NotNil(t, res)

var data any
err = json.Unmarshal(res, &data)
assert.Nil(t, err)
}

func getClientForTesting(ctx context.Context, clientId, clientSecret, orgId, vaultId string) (*VGSClient, error) {
cli, err := New(ctx, clientId, clientSecret, orgId, vaultId)
return cli, err
}

func TestVaults(t *testing.T) {
if clientId == "" && clientSecret == "" && orgId == "" && vaultId == "" {
t.Skip()
}

cli, err := getClientForTesting(ctx, clientId, clientSecret, orgId, vaultId)
assert.Nil(t, err)

endpointUrl, err := url.JoinPath(baseUrl, "vaults")
assert.Nil(t, err)

uri, err := url.Parse(endpointUrl)
assert.Nil(t, err)

req, err := getRequestForTesting(cli, uri)
assert.Nil(t, err)

resp, err := cli.httpClient.Do(req)
assert.Nil(t, err)

defer resp.Body.Close()
res, err := io.ReadAll(resp.Body)
assert.Nil(t, err)
assert.NotNil(t, res)

var data any
err = json.Unmarshal(res, &data)
assert.Nil(t, err)
}

func getRequestForTesting(cli *VGSClient, uri *url.URL) (*http.Request, error) {
req, err := cli.httpClient.NewRequest(ctx,
http.MethodGet,
uri,
WithAcceptVndJSONHeader(),
WithAuthorizationBearerHeader(cli.GetToken()),
)
return req, err
}
148 changes: 148 additions & 0 deletions pkg/connector/internal_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
package connector

import (
"context"
"os"
"testing"

v2 "github.com/conductorone/baton-sdk/pb/c1/connector/v2"
"github.com/conductorone/baton-sdk/pkg/pagination"
"github.com/conductorone/baton-vgs/pkg/client"
"github.com/stretchr/testify/assert"
)

var (
clientId, _ = os.LookupEnv("BATON_SERVICE_ACCOUNT_CLIENT_ID")
clientSecret, _ = os.LookupEnv("BATON_SERVICE_ACCOUNT_CLIENT_SECRET")
vaultId, _ = os.LookupEnv("BATON_VAULT")
orgId, _ = os.LookupEnv("BATON_ORGANIZATION_ID")
ctx = context.Background()
)

func TestUserResourceTypeList(t *testing.T) {
if clientId == "" && clientSecret == "" && orgId == "" && vaultId == "" {
t.Skip()
}

user := &userResourceType{
resourceType: &v2.ResourceType{},
client: getClientForTesting(ctx, clientId, clientSecret, orgId, vaultId),
}
rs, _, _, err := user.List(ctx, &v2.ResourceId{}, &pagination.Token{})
assert.Nil(t, err)
assert.NotNil(t, rs)
}

func TestOrgResourceTypeList(t *testing.T) {
if clientId == "" && clientSecret == "" && orgId == "" && vaultId == "" {
t.Skip()
}

org := &orgResourceType{
resourceType: &v2.ResourceType{},
client: getClientForTesting(ctx, clientId, clientSecret, orgId, vaultId),
}
rs, _, _, err := org.List(ctx, &v2.ResourceId{}, &pagination.Token{})
assert.Nil(t, err)
assert.NotNil(t, rs)
}

func TestVaultResourceTypeList(t *testing.T) {
if clientId == "" && clientSecret == "" && orgId == "" && vaultId == "" {
t.Skip()
}

vault := &vaultResourceType{
resourceType: &v2.ResourceType{},
client: getClientForTesting(ctx, clientId, clientSecret, orgId, vaultId),
}
rs, _, _, err := vault.List(ctx, &v2.ResourceId{}, &pagination.Token{})
assert.Nil(t, err)
assert.NotNil(t, rs)
}

func getClientForTesting(ctx context.Context, clientId, clientSecret, orgId, vaultId string) *client.VGSClient {
cli, _ := client.New(ctx, clientId, clientSecret, orgId, vaultId)
return cli
}

func TestClient(t *testing.T) {
cli, err := client.New(ctx, clientId, clientSecret, orgId, vaultId)
assert.Nil(t, err)

Check failure on line 71 in pkg/connector/internal_test.go

View workflow job for this annotation

GitHub Actions / go-test (1.22.x, ubuntu-latest)

internal_test.go:71: Error Trace: /home/runner/work/baton-vgs/baton-vgs/pkg/connector/internal_test.go:71 Error: Expected nil, but got: &status.Error{s:(*status.Status)(0xc000528038)} Test: TestClient
assert.NotNil(t, cli)

Check failure on line 72 in pkg/connector/internal_test.go

View workflow job for this annotation

GitHub Actions / go-test (1.22.x, ubuntu-latest)

internal_test.go:72: Error Trace: /home/runner/work/baton-vgs/baton-vgs/pkg/connector/internal_test.go:72 Error: Expected value not to be nil. Test: TestClient
}

func TestListVaults(t *testing.T) {
if clientId == "" && clientSecret == "" && orgId == "" && vaultId == "" {
t.Skip()
}

cliTest := getClientForTesting(ctx, clientId, clientSecret, orgId, vaultId)
lv, err := cliTest.ListVaults(ctx)
assert.Nil(t, err)
assert.NotNil(t, lv)
}

func TestListVaultUsers(t *testing.T) {
if clientId == "" && clientSecret == "" && orgId == "" && vaultId == "" {
t.Skip()
}

cliTest := getClientForTesting(ctx, clientId, clientSecret, orgId, vaultId)
lvu, err := cliTest.ListVaultUsers(ctx, vaultId)
assert.Nil(t, err)
assert.NotNil(t, lvu)
}

func TestListUsers(t *testing.T) {
if clientId == "" && clientSecret == "" && orgId == "" && vaultId == "" {
t.Skip()
}

cliTest := getClientForTesting(ctx, clientId, clientSecret, orgId, vaultId)
lu, err := cliTest.ListUsers(ctx, orgId, vaultId)
assert.Nil(t, err)
assert.NotNil(t, lu)
}

func TestListUserInvites(t *testing.T) {
if clientId == "" && clientSecret == "" && orgId == "" && vaultId == "" {
t.Skip()
}

cliTest := getClientForTesting(ctx, clientId, clientSecret, orgId, vaultId)
lui, err := cliTest.ListUserInvites(ctx, orgId)
assert.Nil(t, err)
assert.NotNil(t, lui)
}

func TestListOrganizations(t *testing.T) {
if clientId == "" && clientSecret == "" && orgId == "" && vaultId == "" {
t.Skip()
}

cliTest := getClientForTesting(ctx, clientId, clientSecret, orgId, vaultId)
lo, err := cliTest.ListOrganizations(ctx)
assert.Nil(t, err)
assert.NotNil(t, lo)
}

func TestUpdateVault(t *testing.T) {
if clientId == "" && clientSecret == "" && orgId == "" && vaultId == "" {
t.Skip()
}

cliTest := getClientForTesting(ctx, clientId, clientSecret, orgId, vaultId)
err := cliTest.UpdateUserAccessVault(ctx, vaultId, "ID9hRKLhcc6RWBvaHQ7L1Uan", "write")
assert.Nil(t, err)
}

func TestRevokeVault(t *testing.T) {
if clientId == "" && clientSecret == "" && orgId == "" && vaultId == "" {
t.Skip()
}

cliTest := getClientForTesting(ctx, clientId, clientSecret, orgId, vaultId)
err := cliTest.RevokeUserAccessVault(ctx, vaultId, "IDjSP9BVbJ3RnPr2FonGxXp5")
assert.Nil(t, err)
}
15 changes: 15 additions & 0 deletions vendor/github.com/davecgh/go-spew/LICENSE

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 9f64a5e

Please sign in to comment.