mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2025-02-02 05:41:10 -08:00
131 lines
3.5 KiB
Go
131 lines
3.5 KiB
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestSessionSegmentTemplate(t *testing.T) {
|
|
cases := []struct {
|
|
Case string
|
|
ExpectedEnabled bool
|
|
ExpectedString string
|
|
UserName string
|
|
DefaultUserName string
|
|
ComputerName string
|
|
SSHSession bool
|
|
Root bool
|
|
Template string
|
|
}{
|
|
{
|
|
Case: "user and computer",
|
|
ExpectedString: "john@company-laptop",
|
|
ComputerName: "company-laptop",
|
|
UserName: "john",
|
|
Template: "{{.UserName}}@{{.HostName}}",
|
|
ExpectedEnabled: true,
|
|
},
|
|
{
|
|
Case: "user only",
|
|
ExpectedString: "john",
|
|
UserName: "john",
|
|
Template: "{{.UserName}}",
|
|
ExpectedEnabled: true,
|
|
},
|
|
{
|
|
Case: "user with ssh",
|
|
ExpectedString: "john on remote",
|
|
UserName: "john",
|
|
SSHSession: true,
|
|
ComputerName: "remote",
|
|
Template: "{{.UserName}}{{if .SSHSession}} on {{.HostName}}{{end}}",
|
|
ExpectedEnabled: true,
|
|
},
|
|
{
|
|
Case: "user without ssh",
|
|
ExpectedString: "john",
|
|
UserName: "john",
|
|
SSHSession: false,
|
|
ComputerName: "remote",
|
|
Template: "{{.UserName}}{{if .SSHSession}} on {{.HostName}}{{end}}",
|
|
ExpectedEnabled: true,
|
|
},
|
|
{
|
|
Case: "user with root and ssh",
|
|
ExpectedString: "super john on remote",
|
|
UserName: "john",
|
|
SSHSession: true,
|
|
ComputerName: "remote",
|
|
Root: true,
|
|
Template: "{{if .Root}}super {{end}}{{.UserName}}{{if .SSHSession}} on {{.HostName}}{{end}}",
|
|
ExpectedEnabled: true,
|
|
},
|
|
{
|
|
Case: "no template",
|
|
ExpectedString: "\uf817 john@remote",
|
|
UserName: "john",
|
|
SSHSession: true,
|
|
ComputerName: "remote",
|
|
Root: true,
|
|
ExpectedEnabled: true,
|
|
},
|
|
{
|
|
Case: "default user not equal",
|
|
ExpectedString: "john",
|
|
UserName: "john",
|
|
DefaultUserName: "jack",
|
|
SSHSession: true,
|
|
ComputerName: "remote",
|
|
Root: true,
|
|
Template: "{{if ne .Env.POSH_SESSION_DEFAULT_USER .UserName}}{{.UserName}}{{end}}",
|
|
ExpectedEnabled: true,
|
|
},
|
|
{
|
|
Case: "default user equal",
|
|
ExpectedString: "",
|
|
UserName: "john",
|
|
DefaultUserName: "john",
|
|
SSHSession: true,
|
|
ComputerName: "remote",
|
|
Root: true,
|
|
Template: "{{if ne .Env.POSH_SESSION_DEFAULT_USER .UserName}}{{.UserName}}{{end}}",
|
|
ExpectedEnabled: false,
|
|
},
|
|
}
|
|
|
|
for _, tc := range cases {
|
|
env := new(MockedEnvironment)
|
|
env.On("getCurrentUser").Return(tc.UserName)
|
|
env.On("getRuntimeGOOS").Return("burp")
|
|
env.On("getHostName").Return(tc.ComputerName, nil)
|
|
var SSHSession string
|
|
if tc.SSHSession {
|
|
SSHSession = "zezzion"
|
|
}
|
|
env.On("getenv", "SSH_CONNECTION").Return(SSHSession)
|
|
env.On("getenv", "SSH_CLIENT").Return(SSHSession)
|
|
env.On("getenv", defaultUserEnvVar).Return(tc.DefaultUserName)
|
|
env.On("templateCache").Return(&templateCache{
|
|
UserName: tc.UserName,
|
|
HostName: tc.ComputerName,
|
|
Env: map[string]string{
|
|
"SSH_CONNECTION": SSHSession,
|
|
"SSH_CLIENT": SSHSession,
|
|
defaultUserEnvVar: tc.DefaultUserName,
|
|
},
|
|
Root: tc.Root,
|
|
})
|
|
session := &session{
|
|
env: env,
|
|
props: properties{
|
|
SegmentTemplate: tc.Template,
|
|
},
|
|
}
|
|
assert.Equal(t, tc.ExpectedEnabled, session.enabled(), tc.Case)
|
|
if tc.ExpectedEnabled {
|
|
assert.Equal(t, tc.ExpectedString, session.string(), tc.Case)
|
|
}
|
|
}
|
|
}
|