fix(ansible): clear become state when disabled
Co-Authored-By: Virgil <virgil@lethean.io>
This commit is contained in:
parent
fe0ed9b2ee
commit
82c7c73d50
7 changed files with 54 additions and 3 deletions
|
|
@ -58,6 +58,11 @@ func (c *becomeRecordingClient) SetBecome(become bool, user, password string) {
|
|||
c.mu.Lock()
|
||||
defer c.mu.Unlock()
|
||||
c.become = become
|
||||
if !become {
|
||||
c.becomeUser = ""
|
||||
c.becomePass = ""
|
||||
return
|
||||
}
|
||||
if user != "" {
|
||||
c.becomeUser = user
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,6 +35,11 @@ func (c *localClient) SetBecome(become bool, user, password string) {
|
|||
c.mu.Lock()
|
||||
defer c.mu.Unlock()
|
||||
c.become = become
|
||||
if !become {
|
||||
c.becomeUser = ""
|
||||
c.becomePass = ""
|
||||
return
|
||||
}
|
||||
if user != "" {
|
||||
c.becomeUser = user
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,3 +78,19 @@ func TestExecutor_GatherFacts_Good_LocalConnection(t *testing.T) {
|
|||
assert.NotEmpty(t, facts.Hostname)
|
||||
assert.NotEmpty(t, facts.Kernel)
|
||||
}
|
||||
|
||||
func TestLocalClient_Good_SetBecomeResetsStateWhenDisabled(t *testing.T) {
|
||||
client := newLocalClient()
|
||||
|
||||
client.SetBecome(true, "admin", "secret")
|
||||
become, user, password := client.BecomeState()
|
||||
assert.True(t, become)
|
||||
assert.Equal(t, "admin", user)
|
||||
assert.Equal(t, "secret", password)
|
||||
|
||||
client.SetBecome(false, "", "")
|
||||
become, user, password = client.BecomeState()
|
||||
assert.False(t, become)
|
||||
assert.Empty(t, user)
|
||||
assert.Empty(t, password)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -258,6 +258,11 @@ func (m *MockSSHClient) SetBecome(become bool, user, password string) {
|
|||
m.mu.Lock()
|
||||
defer m.mu.Unlock()
|
||||
m.become = become
|
||||
if !become {
|
||||
m.becomeUser = ""
|
||||
m.becomePass = ""
|
||||
return
|
||||
}
|
||||
if user != "" {
|
||||
m.becomeUser = user
|
||||
}
|
||||
|
|
|
|||
|
|
@ -741,9 +741,8 @@ func TestModulesInfra_Become_Good_DisableAfterEnable(t *testing.T) {
|
|||
|
||||
client.SetBecome(false, "", "")
|
||||
assert.False(t, client.become)
|
||||
// becomeUser and becomePass are only updated if non-empty
|
||||
assert.Equal(t, "root", client.becomeUser)
|
||||
assert.Equal(t, "secret", client.becomePass)
|
||||
assert.Empty(t, client.becomeUser)
|
||||
assert.Empty(t, client.becomePass)
|
||||
}
|
||||
|
||||
func TestModulesInfra_Become_Good_MockBecomeTracking(t *testing.T) {
|
||||
|
|
|
|||
5
ssh.go
5
ssh.go
|
|
@ -498,6 +498,11 @@ func (c *SSHClient) SetBecome(become bool, user, password string) {
|
|||
c.mu.Lock()
|
||||
defer c.mu.Unlock()
|
||||
c.become = become
|
||||
if !become {
|
||||
c.becomeUser = ""
|
||||
c.becomePass = ""
|
||||
return
|
||||
}
|
||||
if user != "" {
|
||||
c.becomeUser = user
|
||||
}
|
||||
|
|
|
|||
16
ssh_test.go
16
ssh_test.go
|
|
@ -34,3 +34,19 @@ func TestSSH_NewSSHClient_Good_Defaults(t *testing.T) {
|
|||
assert.Equal(t, "root", client.user)
|
||||
assert.Equal(t, 30*time.Second, client.timeout)
|
||||
}
|
||||
|
||||
func TestSSH_SetBecome_Good_DisablesAndClearsState(t *testing.T) {
|
||||
client := &SSHClient{}
|
||||
|
||||
client.SetBecome(true, "admin", "secret")
|
||||
become, user, password := client.BecomeState()
|
||||
assert.True(t, become)
|
||||
assert.Equal(t, "admin", user)
|
||||
assert.Equal(t, "secret", password)
|
||||
|
||||
client.SetBecome(false, "", "")
|
||||
become, user, password = client.BecomeState()
|
||||
assert.False(t, become)
|
||||
assert.Empty(t, user)
|
||||
assert.Empty(t, password)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue