Skip to content

Commit

Permalink
tests: don't delete my profile when testing (#2795)
Browse files Browse the repository at this point in the history
  • Loading branch information
gssbzn committed Mar 22, 2024
1 parent 6a8e6e0 commit 64d88c4
Show file tree
Hide file tree
Showing 10 changed files with 249 additions and 77 deletions.
3 changes: 0 additions & 3 deletions internal/cli/atlas/setup/setup_cmd_test.go
Expand Up @@ -59,7 +59,6 @@ func TestBuilder(t *testing.T) {
}

func Test_setupOpts_PreRunWithAPIKeys(t *testing.T) {
t.Cleanup(test.CleanupConfig)
ctrl := gomock.NewController(t)
mockFlow := mocks.NewMockRefresher(ctrl)
ctx := context.TODO()
Expand Down Expand Up @@ -99,7 +98,6 @@ func Test_setupOpts_RunSkipRegister(t *testing.T) {
}

func TestCluster_Run(t *testing.T) {
t.Cleanup(test.CleanupConfig)
ctrl := gomock.NewController(t)
mockStore := mocks.NewMockAtlasClusterQuickStarter(ctrl)
mockFlow := mocks.NewMockRefresher(ctrl)
Expand Down Expand Up @@ -158,7 +156,6 @@ func TestCluster_Run(t *testing.T) {
}

func TestCluster_Run_CheckFlagsSet(t *testing.T) {
t.Cleanup(test.CleanupConfig)
ctrl := gomock.NewController(t)
mockStore := mocks.NewMockAtlasClusterQuickStarter(ctrl)
mockFlow := mocks.NewMockRefresher(ctrl)
Expand Down
14 changes: 8 additions & 6 deletions internal/cli/auth/login.go
Expand Up @@ -39,6 +39,8 @@ import (
type LoginConfig interface {
config.SetSaver
AccessTokenSubject() (string, error)
OrgID() string
ProjectID() string
}

var (
Expand Down Expand Up @@ -137,11 +139,11 @@ func (opts *LoginOpts) checkProfile(ctx context.Context) error {
if err := opts.InitStore(ctx); err != nil {
return err
}
if config.OrgID() != "" && !opts.OrgExists(config.OrgID()) {
if opts.config.OrgID() != "" && !opts.OrgExists(opts.config.OrgID()) {
opts.config.Set("org_id", "")
}

if config.ProjectID() != "" && !opts.ProjectExists(config.ProjectID()) {
if opts.config.ProjectID() != "" && !opts.ProjectExists(opts.config.ProjectID()) {
opts.config.Set("project_id", "")
}
return nil
Expand All @@ -158,15 +160,15 @@ func (opts *LoginOpts) setUpProfile(ctx context.Context) error {
}
}

if config.OrgID() == "" || !opts.OrgExists(config.OrgID()) {
if opts.config.OrgID() == "" || !opts.OrgExists(opts.config.OrgID()) {
if err := opts.AskOrg(); err != nil {
return err
}
}

opts.SetUpOrg()

if config.ProjectID() == "" || !opts.ProjectExists(config.ProjectID()) {
if opts.config.ProjectID() == "" || !opts.ProjectExists(opts.config.ProjectID()) {
if err := opts.AskProject(); err != nil {
return err
}
Expand All @@ -175,11 +177,11 @@ func (opts *LoginOpts) setUpProfile(ctx context.Context) error {

// Only make references to profile if user was asked about org or projects
if opts.AskedOrgsOrProjects && opts.ProjectID != "" && opts.OrgID != "" {
if !opts.ProjectExists(config.ProjectID()) {
if !opts.ProjectExists(opts.config.ProjectID()) {
return ErrProjectIDNotFound
}

if !opts.OrgExists(config.OrgID()) {
if !opts.OrgExists(opts.config.OrgID()) {
return ErrOrgIDNotFound
}

Expand Down
2 changes: 2 additions & 0 deletions internal/cli/auth/login_test.go
Expand Up @@ -133,6 +133,8 @@ func Test_loginOpts_Run(t *testing.T) {
mockConfig.EXPECT().Set("access_token", "asdf").Times(1)
mockConfig.EXPECT().Set("refresh_token", "querty").Times(1)
mockConfig.EXPECT().Set("ops_manager_url", gomock.Any()).Times(0)
mockConfig.EXPECT().OrgID().Return("").AnyTimes()
mockConfig.EXPECT().ProjectID().Return("").AnyTimes()
mockConfig.EXPECT().AccessTokenSubject().Return("test@10gen.com", nil).Times(1)
mockConfig.EXPECT().Save().Return(nil).Times(2)
expectedOrgs := &admin.PaginatedOrganization{
Expand Down
38 changes: 21 additions & 17 deletions internal/cli/auth/logout.go
Expand Up @@ -16,7 +16,6 @@ package auth

import (
"context"
"fmt"
"io"

"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/cli"
Expand All @@ -29,24 +28,29 @@ import (
atlas "go.mongodb.org/atlas/mongodbatlas"
)

type logoutOpts struct {
*cli.DeleteOpts
OutWriter io.Writer
config ConfigDeleter
flow Revoker
keepConfig bool
}

//go:generate mockgen -destination=../../mocks/mock_logout.go -package=mocks github.com/mongodb/mongodb-atlas-cli/atlascli/internal/cli/auth Revoker,ConfigDeleter

type ConfigDeleter interface {
Delete() error
SetAccessToken(string)
SetRefreshToken(string)
SetProjectID(string)
SetOrgID(string)
Save() error
}

type Revoker interface {
RevokeToken(context.Context, string, string) (*atlas.Response, error)
}

type logoutOpts struct {
*cli.DeleteOpts
OutWriter io.Writer
config ConfigDeleter
flow Revoker
keepConfig bool
}

func (opts *logoutOpts) initFlow() error {
var err error
opts.flow, err = oauth.FlowWithConfig(config.Default())
Expand All @@ -62,11 +66,11 @@ func (opts *logoutOpts) Run(ctx context.Context) error {
if !opts.keepConfig {
return opts.Delete(opts.config.Delete)
}
config.SetAccessToken("")
config.SetRefreshToken("")
config.SetProjectID("")
config.SetOrgID("")
return config.Save()
opts.config.SetAccessToken("")
opts.config.SetRefreshToken("")
opts.config.SetProjectID("")
opts.config.SetOrgID("")
return opts.config.Save()
}

func LogoutBuilder() *cobra.Command {
Expand All @@ -77,9 +81,9 @@ func LogoutBuilder() *cobra.Command {
cmd := &cobra.Command{
Use: "logout",
Short: "Log out of the CLI.",
Example: fmt.Sprintf(` # To log out from the CLI:
%s auth logout
`, config.BinName()),
Example: ` # To log out from the CLI:
atlas auth logout
`,
PreRunE: func(cmd *cobra.Command, _ []string) error {
opts.OutWriter = cmd.OutOrStdout()
opts.config = config.Default()
Expand Down
22 changes: 22 additions & 0 deletions internal/cli/auth/logout_test.go
Expand Up @@ -90,5 +90,27 @@ func Test_logoutOpts_Run_Keep(t *testing.T) {
Return(nil, nil).
Times(1)

mockConfig.
EXPECT().
SetAccessToken("").
Times(1)
mockConfig.
EXPECT().
SetRefreshToken("").
Times(1)
mockConfig.
EXPECT().
SetProjectID("").
Times(1)
mockConfig.
EXPECT().
SetOrgID("").
Times(1)
mockConfig.
EXPECT().
Save().
Return(nil).
Times(1)

require.NoError(t, opts.Run(ctx))
}
6 changes: 3 additions & 3 deletions internal/cli/auth/register.go
Expand Up @@ -99,9 +99,9 @@ func RegisterBuilder() *cobra.Command {
cmd := &cobra.Command{
Use: "register",
Short: "Register with MongoDB Atlas.",
Example: fmt.Sprintf(` # To start the interactive setup:
%s auth register
`, config.BinName()),
Example: ` # To start the interactive setup:
atlas auth register
`,
PreRunE: func(cmd *cobra.Command, _ []string) error {
opts.OutWriter = cmd.OutOrStdout()
defaultProfile := config.Default()
Expand Down
15 changes: 12 additions & 3 deletions internal/cli/auth/register_test.go
Expand Up @@ -43,7 +43,6 @@ func TestRegisterBuilder(t *testing.T) {
}

func Test_registerOpts_Run(t *testing.T) {
t.Cleanup(test.CleanupConfig)
ctrl := gomock.NewController(t)
mockFlow := mocks.NewMockRefresher(ctrl)
mockConfig := mocks.NewMockLoginConfig(ctrl)
Expand Down Expand Up @@ -96,6 +95,8 @@ func Test_registerOpts_Run(t *testing.T) {
mockConfig.EXPECT().Set("access_token", "asdf").Times(1)
mockConfig.EXPECT().Set("refresh_token", "querty").Times(1)
mockConfig.EXPECT().Set("ops_manager_url", gomock.Any()).Times(0)
mockConfig.EXPECT().OrgID().Return("").AnyTimes()
mockConfig.EXPECT().ProjectID().Return("").AnyTimes()
mockConfig.EXPECT().AccessTokenSubject().Return("test@10gen.com", nil).Times(1)
mockConfig.EXPECT().Save().Return(nil).Times(2)
expectedOrgs := &admin.PaginatedOrganization{
Expand All @@ -104,13 +105,21 @@ func Test_registerOpts_Run(t *testing.T) {
{Id: pointer.Get("o1"), Name: "Org1"},
},
}
mockStore.EXPECT().Organizations(gomock.Any()).Return(expectedOrgs, nil).Times(1)
mockStore.
EXPECT().
Organizations(gomock.Any()).
Return(expectedOrgs, nil).
Times(1)
expectedProjects := &admin.PaginatedAtlasGroup{TotalCount: pointer.Get(1),
Results: &[]admin.Group{
{Id: pointer.Get("p1"), Name: "Project1"},
},
}
mockStore.EXPECT().GetOrgProjects("o1", gomock.Any()).Return(expectedProjects, nil).Times(1)
mockStore.
EXPECT().
GetOrgProjects("o1", gomock.Any()).
Return(expectedProjects, nil).
Times(1)

require.NoError(t, opts.RegisterRun(ctx))
assert.Equal(t, `
Expand Down

0 comments on commit 64d88c4

Please sign in to comment.