Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Test/public/sfAuth.test.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ function Test_SaveSfAuthInfoToSecret{

Reset-InvokeCommandMock
$filename = "sforgdisplayVerbose.json"
$base64 = Get-MockFileContent -filename $filename | ConvertTo-Base64
$base64 = Get-MockFileContent -filename $filename | out-string | ConvertTo-Base64
MockCallToString -Command "gh api user --jq '.email'" -OutString "me@contoso.com"
MockCall -Command "sf org display --target-org me@contoso.com --verbose --json" -filename $filename
MockCallToNull -Command "gh secret set SFDX_AUTH_URL --body '$base64' -u -r 'ownername/reponame'"
Expand Down
15 changes: 15 additions & 0 deletions Test/public/sfEnvironment.test.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
function Test_InitializeSfEnvironment{

Assert-SkipTest

Reset-InvokeCommandMock
Enable-InvokeCommandAliasModule

$email = Resolve-Email

$result = Initialize-SfEnvironment

Assert-IsNotNull -Object $result

Assert-AreEqual -Presented $result -Expected $email
}
17 changes: 10 additions & 7 deletions public/sfAuth.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ function Get-SfAuthInfoUser {
# Create the authentication file content
$json = Invoke-MyCommand -Command sforgdisplayuser -Parameter @{ email = $Email} -ErrorAction SilentlyContinue

$ret = $json
$ret = $json | Out-String

return $ret
} Export-ModuleMember -Function Get-SfAuthInfoUser
Expand All @@ -99,6 +99,8 @@ function Get-SfAuthInfoBase64{
$base64 = $text | ConvertTo-Base64
#-ErrorAction SilentlyContinue

"Generated base 64 with length $($base64.Length)" | Write-MyVerbose

return $base64
} Export-ModuleMember -Function Get-SfAuthInfoBase64

Expand Down Expand Up @@ -137,14 +139,16 @@ function Connect-SfAuthBase64 {
# sf org login sfdx-url --sfdx-url-file authFile.json

if([string]::IsNullOrWhiteSpace($Base64)){
throw "Base64 string is null or empty."
"Base64 string is null or empty." | Write-MyVerbose
return $null
}

$result = $Base64 | ConvertFrom-Base64 | ConvertFrom-Json
$sfdxAuthUrl = $result.result.sfdxAuthUrl

if([string]::IsNullOrWhiteSpace($sfdxAuthUrl)){
throw "sfdxAuthUrl is null or empty."
"sfdxAuthUrl is null or empty." | Write-MyVerbose
return $null
}

$json = Invoke-MyCommand -Command sfLoginWithSFDX -Parameter @{sfdxAuthUrl = $sfdxAuthUrl } -ErrorAction SilentlyContinue
Expand All @@ -154,7 +158,8 @@ function Connect-SfAuthBase64 {
$result = $json | ConvertFrom-Json -Depth 10 -AsHashtable

if($result.status -ne 0){
throw "Status $($result.status)"
"Status call to sfLoginWithSFDX is not 0 [$($result.status)]" | Write-MyVerbose
return $null
}

return $result.result.username
Expand All @@ -167,16 +172,14 @@ function Connect-SfAuthWeb{
[Parameter()][string]$InstanceUrl = "https://github.my.salesforce.com"
)

$email = Resolve-Email

$json = Invoke-MyCommand -Command sforgloginweb -Parameters @{ instanceUrl = $InstanceUrl } -ErrorAction SilentlyContinue

$json | Write-MyVerbose

$result = $json | ConvertFrom-Json -Depth 10 -AsHashtable

if($result.status -ne 0){
"Login failed. Login invocation result: $json" | Write-MyError
"Login failed. Login invocation result: $json" | Write-MyVerbose
return $null
}

Expand Down
51 changes: 36 additions & 15 deletions public/sfEnvironment.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,7 @@

function Initialize-SfEnvironment{
[CmdletBinding(SupportsShouldProcess)]
param(
[Parameter()][string]$Email
)
param()

# 0. NPM setup check
if(-not (Test-NpmSetup)){return}
Expand All @@ -18,10 +16,13 @@
if(-not (Install-SfClient)){return}

# 2. Test Sf Login
if(-not (Set-SfConnection)){return}
$email = Initialize-SfConnection
if(-not $email){return}

# 3. Sf Config
if(-not(Set-SfConfig -Email:$Email)){return}
if(-not(Set-SfConfig -Email:$email)){return}

return $email

} Export-ModuleMember -Function Initialize-SfEnvironment

Expand Down Expand Up @@ -61,24 +62,44 @@
}
} Export-ModuleMember -Function Install-SfClient

function Set-SfConnection{
function Initialize-SfConnection{

Check notice

Code scanning / PSScriptAnalyzer

The cmdlet 'Initialize-SfConnection' does not have a help comment. Note

The cmdlet 'Initialize-SfConnection' does not have a help comment.
[CmdletBinding()]
param()

$result = Connect-sfauthbase64
# Check already connected
$userName = Get-SfAuthUser
if($userName){
"2. Salesforce CLI already connected with user $($userName)" | Write-ToConsole -Color "Green"
return $userName
}

if($result){
"2. Salesforce CLI connected with user $($result)" | Write-ToConsole -Color "Green"
return $result
} else {
"2. Salesforce CLI not connected. Set environment variable SFDX_AUTH_URL. Use Get-SfAuthInfoBase64 on an Sf connected environment to get the value. Use ""sf org login device"" to connect to Sf." | Write-ToConsole -Color "Magenta"
return $null
# Connect using base64
$userName = Connect-SfAuthBase64 -ErrorAction SilentlyContinue
if($userName){
"2. Salesforce Cli connected usin base64 with user $($userName)" | Write-ToConsole -Color "Green"
return $userName
}
# Connect using web
$userName = Connect-SfAuthWeb -ErrorAction SilentlyContinue
if($userName){
"2. Salesforce CLI connected using web with user $($userName)" | Write-ToConsole -Color "Green"
return $userName
}

} Export-ModuleMember -Function Set-SfConnection
# Not Connected
$message = @"
2. Salesforce CLI not connected. Please connect or set environment to allow connection.
1. Set environment variable SFDX_AUTH_URL. Use Get-SfAuthInfoBase64 on an already Sf connected environment to get the value.
2. Login manually through the web. Use Connect-SfAuthWeb or Sf command 'sf org login web'
3. Login manually through the device. Use Sf command 'sf org login device'
"@

$message | Write-ToConsole -Color "Magenta"

} Export-ModuleMember -Function Initialize-SfConnection

function Test-SfConnect{
[CmdletBinding(SupportsShouldProcess)]
[CmdletBinding()]
param(
[Parameter()][string]$Email
)
Expand Down
Loading