Skip to content

Commit 64d88c4

Browse files
authored
tests: don't delete my profile when testing (#2795)
1 parent 6a8e6e0 commit 64d88c4

File tree

10 files changed

+249
-77
lines changed

10 files changed

+249
-77
lines changed

internal/cli/atlas/setup/setup_cmd_test.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ func TestBuilder(t *testing.T) {
5959
}
6060

6161
func Test_setupOpts_PreRunWithAPIKeys(t *testing.T) {
62-
t.Cleanup(test.CleanupConfig)
6362
ctrl := gomock.NewController(t)
6463
mockFlow := mocks.NewMockRefresher(ctrl)
6564
ctx := context.TODO()
@@ -99,7 +98,6 @@ func Test_setupOpts_RunSkipRegister(t *testing.T) {
9998
}
10099

101100
func TestCluster_Run(t *testing.T) {
102-
t.Cleanup(test.CleanupConfig)
103101
ctrl := gomock.NewController(t)
104102
mockStore := mocks.NewMockAtlasClusterQuickStarter(ctrl)
105103
mockFlow := mocks.NewMockRefresher(ctrl)
@@ -158,7 +156,6 @@ func TestCluster_Run(t *testing.T) {
158156
}
159157

160158
func TestCluster_Run_CheckFlagsSet(t *testing.T) {
161-
t.Cleanup(test.CleanupConfig)
162159
ctrl := gomock.NewController(t)
163160
mockStore := mocks.NewMockAtlasClusterQuickStarter(ctrl)
164161
mockFlow := mocks.NewMockRefresher(ctrl)

internal/cli/auth/login.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ import (
3939
type LoginConfig interface {
4040
config.SetSaver
4141
AccessTokenSubject() (string, error)
42+
OrgID() string
43+
ProjectID() string
4244
}
4345

4446
var (
@@ -137,11 +139,11 @@ func (opts *LoginOpts) checkProfile(ctx context.Context) error {
137139
if err := opts.InitStore(ctx); err != nil {
138140
return err
139141
}
140-
if config.OrgID() != "" && !opts.OrgExists(config.OrgID()) {
142+
if opts.config.OrgID() != "" && !opts.OrgExists(opts.config.OrgID()) {
141143
opts.config.Set("org_id", "")
142144
}
143145

144-
if config.ProjectID() != "" && !opts.ProjectExists(config.ProjectID()) {
146+
if opts.config.ProjectID() != "" && !opts.ProjectExists(opts.config.ProjectID()) {
145147
opts.config.Set("project_id", "")
146148
}
147149
return nil
@@ -158,15 +160,15 @@ func (opts *LoginOpts) setUpProfile(ctx context.Context) error {
158160
}
159161
}
160162

161-
if config.OrgID() == "" || !opts.OrgExists(config.OrgID()) {
163+
if opts.config.OrgID() == "" || !opts.OrgExists(opts.config.OrgID()) {
162164
if err := opts.AskOrg(); err != nil {
163165
return err
164166
}
165167
}
166168

167169
opts.SetUpOrg()
168170

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

176178
// Only make references to profile if user was asked about org or projects
177179
if opts.AskedOrgsOrProjects && opts.ProjectID != "" && opts.OrgID != "" {
178-
if !opts.ProjectExists(config.ProjectID()) {
180+
if !opts.ProjectExists(opts.config.ProjectID()) {
179181
return ErrProjectIDNotFound
180182
}
181183

182-
if !opts.OrgExists(config.OrgID()) {
184+
if !opts.OrgExists(opts.config.OrgID()) {
183185
return ErrOrgIDNotFound
184186
}
185187

internal/cli/auth/login_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ func Test_loginOpts_Run(t *testing.T) {
133133
mockConfig.EXPECT().Set("access_token", "asdf").Times(1)
134134
mockConfig.EXPECT().Set("refresh_token", "querty").Times(1)
135135
mockConfig.EXPECT().Set("ops_manager_url", gomock.Any()).Times(0)
136+
mockConfig.EXPECT().OrgID().Return("").AnyTimes()
137+
mockConfig.EXPECT().ProjectID().Return("").AnyTimes()
136138
mockConfig.EXPECT().AccessTokenSubject().Return("[email protected]", nil).Times(1)
137139
mockConfig.EXPECT().Save().Return(nil).Times(2)
138140
expectedOrgs := &admin.PaginatedOrganization{

internal/cli/auth/logout.go

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ package auth
1616

1717
import (
1818
"context"
19-
"fmt"
2019
"io"
2120

2221
"github.com/mongodb/mongodb-atlas-cli/atlascli/internal/cli"
@@ -29,24 +28,29 @@ import (
2928
atlas "go.mongodb.org/atlas/mongodbatlas"
3029
)
3130

32-
type logoutOpts struct {
33-
*cli.DeleteOpts
34-
OutWriter io.Writer
35-
config ConfigDeleter
36-
flow Revoker
37-
keepConfig bool
38-
}
39-
4031
//go:generate mockgen -destination=../../mocks/mock_logout.go -package=mocks github.com/mongodb/mongodb-atlas-cli/atlascli/internal/cli/auth Revoker,ConfigDeleter
4132

4233
type ConfigDeleter interface {
4334
Delete() error
35+
SetAccessToken(string)
36+
SetRefreshToken(string)
37+
SetProjectID(string)
38+
SetOrgID(string)
39+
Save() error
4440
}
4541

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

46+
type logoutOpts struct {
47+
*cli.DeleteOpts
48+
OutWriter io.Writer
49+
config ConfigDeleter
50+
flow Revoker
51+
keepConfig bool
52+
}
53+
5054
func (opts *logoutOpts) initFlow() error {
5155
var err error
5256
opts.flow, err = oauth.FlowWithConfig(config.Default())
@@ -62,11 +66,11 @@ func (opts *logoutOpts) Run(ctx context.Context) error {
6266
if !opts.keepConfig {
6367
return opts.Delete(opts.config.Delete)
6468
}
65-
config.SetAccessToken("")
66-
config.SetRefreshToken("")
67-
config.SetProjectID("")
68-
config.SetOrgID("")
69-
return config.Save()
69+
opts.config.SetAccessToken("")
70+
opts.config.SetRefreshToken("")
71+
opts.config.SetProjectID("")
72+
opts.config.SetOrgID("")
73+
return opts.config.Save()
7074
}
7175

7276
func LogoutBuilder() *cobra.Command {
@@ -77,9 +81,9 @@ func LogoutBuilder() *cobra.Command {
7781
cmd := &cobra.Command{
7882
Use: "logout",
7983
Short: "Log out of the CLI.",
80-
Example: fmt.Sprintf(` # To log out from the CLI:
81-
%s auth logout
82-
`, config.BinName()),
84+
Example: ` # To log out from the CLI:
85+
atlas auth logout
86+
`,
8387
PreRunE: func(cmd *cobra.Command, _ []string) error {
8488
opts.OutWriter = cmd.OutOrStdout()
8589
opts.config = config.Default()

internal/cli/auth/logout_test.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,5 +90,27 @@ func Test_logoutOpts_Run_Keep(t *testing.T) {
9090
Return(nil, nil).
9191
Times(1)
9292

93+
mockConfig.
94+
EXPECT().
95+
SetAccessToken("").
96+
Times(1)
97+
mockConfig.
98+
EXPECT().
99+
SetRefreshToken("").
100+
Times(1)
101+
mockConfig.
102+
EXPECT().
103+
SetProjectID("").
104+
Times(1)
105+
mockConfig.
106+
EXPECT().
107+
SetOrgID("").
108+
Times(1)
109+
mockConfig.
110+
EXPECT().
111+
Save().
112+
Return(nil).
113+
Times(1)
114+
93115
require.NoError(t, opts.Run(ctx))
94116
}

internal/cli/auth/register.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,9 @@ func RegisterBuilder() *cobra.Command {
9999
cmd := &cobra.Command{
100100
Use: "register",
101101
Short: "Register with MongoDB Atlas.",
102-
Example: fmt.Sprintf(` # To start the interactive setup:
103-
%s auth register
104-
`, config.BinName()),
102+
Example: ` # To start the interactive setup:
103+
atlas auth register
104+
`,
105105
PreRunE: func(cmd *cobra.Command, _ []string) error {
106106
opts.OutWriter = cmd.OutOrStdout()
107107
defaultProfile := config.Default()

internal/cli/auth/register_test.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ func TestRegisterBuilder(t *testing.T) {
4343
}
4444

4545
func Test_registerOpts_Run(t *testing.T) {
46-
t.Cleanup(test.CleanupConfig)
4746
ctrl := gomock.NewController(t)
4847
mockFlow := mocks.NewMockRefresher(ctrl)
4948
mockConfig := mocks.NewMockLoginConfig(ctrl)
@@ -96,6 +95,8 @@ func Test_registerOpts_Run(t *testing.T) {
9695
mockConfig.EXPECT().Set("access_token", "asdf").Times(1)
9796
mockConfig.EXPECT().Set("refresh_token", "querty").Times(1)
9897
mockConfig.EXPECT().Set("ops_manager_url", gomock.Any()).Times(0)
98+
mockConfig.EXPECT().OrgID().Return("").AnyTimes()
99+
mockConfig.EXPECT().ProjectID().Return("").AnyTimes()
99100
mockConfig.EXPECT().AccessTokenSubject().Return("[email protected]", nil).Times(1)
100101
mockConfig.EXPECT().Save().Return(nil).Times(2)
101102
expectedOrgs := &admin.PaginatedOrganization{
@@ -104,13 +105,21 @@ func Test_registerOpts_Run(t *testing.T) {
104105
{Id: pointer.Get("o1"), Name: "Org1"},
105106
},
106107
}
107-
mockStore.EXPECT().Organizations(gomock.Any()).Return(expectedOrgs, nil).Times(1)
108+
mockStore.
109+
EXPECT().
110+
Organizations(gomock.Any()).
111+
Return(expectedOrgs, nil).
112+
Times(1)
108113
expectedProjects := &admin.PaginatedAtlasGroup{TotalCount: pointer.Get(1),
109114
Results: &[]admin.Group{
110115
{Id: pointer.Get("p1"), Name: "Project1"},
111116
},
112117
}
113-
mockStore.EXPECT().GetOrgProjects("o1", gomock.Any()).Return(expectedProjects, nil).Times(1)
118+
mockStore.
119+
EXPECT().
120+
GetOrgProjects("o1", gomock.Any()).
121+
Return(expectedProjects, nil).
122+
Times(1)
114123

115124
require.NoError(t, opts.RegisterRun(ctx))
116125
assert.Equal(t, `

0 commit comments

Comments
 (0)