Start-RunTestsInBCContainer.ps1

# Version 1.0.0.0
function Start-RunTestsInBCContainer {
  <#
 .Synopsis
  Run a test suite in a NAV/BC Container
 .Description
 .Parameter containerName
  Name of the container in which you want to run a test suite
 .Parameter testAppName
  Name of the test app in the container which you want to run the test for
 .Parameter tenant
  tenant to use if container is multitenant
 .Parameter companyName
  company to use
 .Parameter credential
  Credentials of the SUPER user if using NavUserPassword authentication
 .Parameter XUnitResultFileName
  Filename where the function should place an XUnit compatible result file
 .Parameter AppendToXUnitResultFile
  Specify this switch if you want the function to append to the XUnit compatible result file instead of overwriting it
 .Parameter JUnitResultFileName
  Filename where the function should place an JUnit compatible result file
 .Parameter AppendToJUnitResultFile
  Specify this switch if you want the function to append to the JUnit compatible result file instead of overwriting it
 .Example
  Run-TestsInBcContainer -containerName test -credential $credential
 .Example
  Run-TestsInBcContainer -containerName $containername -credential $credential -XUnitResultFileName "c:\ProgramData\BcContainerHelper\$containername.results.xml"
 .Example
  Run-TestsInBcContainer -containerName $containername -credential $credential -JUnitResultFileName "c:\ProgramData\BcContainerHelper\$containername.results.xml"
#>

  [CmdletBinding()]
  param(
    [string] $containerName = 'bcdev', 
    [Parameter(Mandatory = $true)]
    [string] $testAppName = '', 
    [Parameter(Mandatory = $false)]
    [string] $tenant = "default",
    [Parameter(Mandatory = $false)]
    [string] $companyName = "",
    [Parameter(Mandatory = $false)]
    [string] $profile = "",
    [Parameter(Mandatory = $false)]
    [PSCredential] $credential = $null,
    [Parameter(Mandatory = $false)]
    [PSCredential] $sqlCredential = $credential,
    [string] $XUnitResultFileName,
    [switch] $AppendToXUnitResultFile,
    [string] $JUnitResultFileName,
    [switch] $AppendToJUnitResultFile
  )
  PROCESS {
    try { 
      if ([string]::IsNullOrEmpty($xunitResultsFile)) {
        $xunitResultsFile = "c:\dockershare\results.xml"
      }
    
      $app = Get-NavContainerAppInfo $containerName | Where-Object { $_.Name -eq $testAppName }
      Run-TestsInBCContainer `
        -containerName $containerName `
        -credential $credential `
        -detailed `
        -XUnitResultFileName $xunitResultsFile `
        -extensionId $app.AppId
    }
    catch [Exception] {
      "Start-RunTestsInBCContainer :`n`n " + $_.Exception
    }
    finally {
      # Clean up copied backup file after restore completes successfully
    }
  }
}
Export-ModuleMember -Function Start-RunTestsInBCContainer


# SIG # Begin signature block
# MIIVlQYJKoZIhvcNAQcCoIIVhjCCFYICAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUtNofVUYmzMo1B6U3CZ6nrjD9
# kESgghH1MIIFbzCCBFegAwIBAgIQSPyTtGBVlI02p8mKidaUFjANBgkqhkiG9w0B
# AQwFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVy
# MRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEh
# MB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTIxMDUyNTAwMDAw
# MFoXDTI4MTIzMTIzNTk1OVowVjELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1NlY3Rp
# Z28gTGltaXRlZDEtMCsGA1UEAxMkU2VjdGlnbyBQdWJsaWMgQ29kZSBTaWduaW5n
# IFJvb3QgUjQ2MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAjeeUEiIE
# JHQu/xYjApKKtq42haxH1CORKz7cfeIxoFFvrISR41KKteKW3tCHYySJiv/vEpM7
# fbu2ir29BX8nm2tl06UMabG8STma8W1uquSggyfamg0rUOlLW7O4ZDakfko9qXGr
# YbNzszwLDO/bM1flvjQ345cbXf0fEj2CA3bm+z9m0pQxafptszSswXp43JJQ8mTH
# qi0Eq8Nq6uAvp6fcbtfo/9ohq0C/ue4NnsbZnpnvxt4fqQx2sycgoda6/YDnAdLv
# 64IplXCN/7sVz/7RDzaiLk8ykHRGa0c1E3cFM09jLrgt4b9lpwRrGNhx+swI8m2J
# mRCxrds+LOSqGLDGBwF1Z95t6WNjHjZ/aYm+qkU+blpfj6Fby50whjDoA7NAxg0P
# OM1nqFOI+rgwZfpvx+cdsYN0aT6sxGg7seZnM5q2COCABUhA7vaCZEao9XOwBpXy
# bGWfv1VbHJxXGsd4RnxwqpQbghesh+m2yQ6BHEDWFhcp/FycGCvqRfXvvdVnTyhe
# Be6QTHrnxvTQ/PrNPjJGEyA2igTqt6oHRpwNkzoJZplYXCmjuQymMDg80EY2NXyc
# uu7D1fkKdvp+BRtAypI16dV60bV/AK6pkKrFfwGcELEW/MxuGNxvYv6mUKe4e7id
# FT/+IAx1yCJaE5UZkADpGtXChvHjjuxf9OUCAwEAAaOCARIwggEOMB8GA1UdIwQY
# MBaAFKARCiM+lvEH7OKvKe+CpX/QMKS0MB0GA1UdDgQWBBQy65Ka/zWWSC8oQEJw
# IDaRXBeF5jAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zATBgNVHSUE
# DDAKBggrBgEFBQcDAzAbBgNVHSAEFDASMAYGBFUdIAAwCAYGZ4EMAQQBMEMGA1Ud
# HwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL0FBQUNlcnRpZmlj
# YXRlU2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYYaHR0
# cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3DQEBDAUAA4IBAQASv6Hvi3Sa
# mES4aUa1qyQKDKSKZ7g6gb9Fin1SB6iNH04hhTmja14tIIa/ELiueTtTzbT72ES+
# BtlcY2fUQBaHRIZyKtYyFfUSg8L54V0RQGf2QidyxSPiAjgaTCDi2wH3zUZPJqJ8
# ZsBRNraJAlTH/Fj7bADu/pimLpWhDFMpH2/YGaZPnvesCepdgsaLr4CnvYFIUoQx
# 2jLsFeSmTD1sOXPUC4U5IOCFGmjhp0g4qdE2JXfBjRkWxYhMZn0vY86Y6GnfrDyo
# XZ3JHFuu2PMvdM+4fvbXg50RlmKarkUT2n/cR/vfw1Kf5gZV6Z2M8jpiUbzsJA8p
# 1FiAhORFe1rYMIIGGjCCBAKgAwIBAgIQYh1tDFIBnjuQeRUgiSEcCjANBgkqhkiG
# 9w0BAQwFADBWMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVk
# MS0wKwYDVQQDEyRTZWN0aWdvIFB1YmxpYyBDb2RlIFNpZ25pbmcgUm9vdCBSNDYw
# HhcNMjEwMzIyMDAwMDAwWhcNMzYwMzIxMjM1OTU5WjBUMQswCQYDVQQGEwJHQjEY
# MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMSswKQYDVQQDEyJTZWN0aWdvIFB1Ymxp
# YyBDb2RlIFNpZ25pbmcgQ0EgUjM2MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB
# igKCAYEAmyudU/o1P45gBkNqwM/1f/bIU1MYyM7TbH78WAeVF3llMwsRHgBGRmxD
# eEDIArCS2VCoVk4Y/8j6stIkmYV5Gej4NgNjVQ4BYoDjGMwdjioXan1hlaGFt4Wk
# 9vT0k2oWJMJjL9G//N523hAm4jF4UjrW2pvv9+hdPX8tbbAfI3v0VdJiJPFy/7Xw
# iunD7mBxNtecM6ytIdUlh08T2z7mJEXZD9OWcJkZk5wDuf2q52PN43jc4T9OkoXZ
# 0arWZVeffvMr/iiIROSCzKoDmWABDRzV/UiQ5vqsaeFaqQdzFf4ed8peNWh1OaZX
# nYvZQgWx/SXiJDRSAolRzZEZquE6cbcH747FHncs/Kzcn0Ccv2jrOW+LPmnOyB+t
# AfiWu01TPhCr9VrkxsHC5qFNxaThTG5j4/Kc+ODD2dX/fmBECELcvzUHf9shoFvr
# n35XGf2RPaNTO2uSZ6n9otv7jElspkfK9qEATHZcodp+R4q2OIypxR//YEb3fkDn
# 3UayWW9bAgMBAAGjggFkMIIBYDAfBgNVHSMEGDAWgBQy65Ka/zWWSC8oQEJwIDaR
# XBeF5jAdBgNVHQ4EFgQUDyrLIIcouOxvSK4rVKYpqhekzQwwDgYDVR0PAQH/BAQD
# AgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwEwYDVR0lBAwwCgYIKwYBBQUHAwMwGwYD
# VR0gBBQwEjAGBgRVHSAAMAgGBmeBDAEEATBLBgNVHR8ERDBCMECgPqA8hjpodHRw
# Oi8vY3JsLnNlY3RpZ28uY29tL1NlY3RpZ29QdWJsaWNDb2RlU2lnbmluZ1Jvb3RS
# NDYuY3JsMHsGCCsGAQUFBwEBBG8wbTBGBggrBgEFBQcwAoY6aHR0cDovL2NydC5z
# ZWN0aWdvLmNvbS9TZWN0aWdvUHVibGljQ29kZVNpZ25pbmdSb290UjQ2LnA3YzAj
# BggrBgEFBQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wDQYJKoZIhvcNAQEM
# BQADggIBAAb/guF3YzZue6EVIJsT/wT+mHVEYcNWlXHRkT+FoetAQLHI1uBy/YXK
# ZDk8+Y1LoNqHrp22AKMGxQtgCivnDHFyAQ9GXTmlk7MjcgQbDCx6mn7yIawsppWk
# vfPkKaAQsiqaT9DnMWBHVNIabGqgQSGTrQWo43MOfsPynhbz2Hyxf5XWKZpRvr3d
# MapandPfYgoZ8iDL2OR3sYztgJrbG6VZ9DoTXFm1g0Rf97Aaen1l4c+w3DC+IkwF
# kvjFV3jS49ZSc4lShKK6BrPTJYs4NG1DGzmpToTnwoqZ8fAmi2XlZnuchC4NPSZa
# PATHvNIzt+z1PHo35D/f7j2pO1S8BCysQDHCbM5Mnomnq5aYcKCsdbh0czchOm8b
# kinLrYrKpii+Tk7pwL7TjRKLXkomm5D1Umds++pip8wH2cQpf93at3VDcOK4N7Ew
# oIJB0kak6pSzEu4I64U6gZs7tS/dGNSljf2OSSnRr7KWzq03zl8l75jy+hOds9TW
# SenLbjBQUGR96cFr6lEUfAIEHVC1L68Y1GGxx4/eRI82ut83axHMViw1+sVpbPxg
# 51Tbnio1lB93079WPFnYaOvfGAA0e0zcfF/M9gXr+korwQTh2Prqooq2bYNMvUoU
# KD85gnJ+t0smrWrb8dee2CvYZXD5laGtaAxOfy/VKNmwuWuAh9kcMIIGYDCCBMig
# AwIBAgIRANm8nd1n4WvloMcEQ5z43dkwDQYJKoZIhvcNAQEMBQAwVDELMAkGA1UE
# BhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDErMCkGA1UEAxMiU2VjdGln
# byBQdWJsaWMgQ29kZSBTaWduaW5nIENBIFIzNjAeFw0yMTEwMjIwMDAwMDBaFw0y
# NDEwMjEyMzU5NTlaMEcxCzAJBgNVBAYTAk5PMQ4wDAYDVQQIDAVWaWtlbjETMBEG
# A1UECgwKRHluYXBybyBBUzETMBEGA1UEAwwKRHluYXBybyBBUzCCAiIwDQYJKoZI
# hvcNAQEBBQADggIPADCCAgoCggIBAODd7SFuO0KPfAVdjt1o/NGqrIZXT7qOqrrL
# jI+cheKE/mCHJXFyHWAXgvNz5h++mTAG4bHGDYMYGplt+S3INAm2lnkh3kxerfLP
# +kmjaiQ/cT4nXomJkpAXnlVaoSXcJDcWDBDsmkD1+lFjE9nbEdeJOvQ4Q72Cn7OH
# sXthZchhiVJfPP0wywFG/uQsCMXgOqUFJwrpvOLOIqTUTH4+ZiwelFeGq4T+CEtF
# ic8rL8f6/lYotRv1MoRYsmV7iDnrY7e1drswAiv8bQNi842LfQ62uSCS4cYHpPOt
# b3rbqZHzTuL2o9Nqz2NcffwG4mkrKyYiWCvOKKg868z7/jc8uiMSt500SiJyjQA9
# zM0pqH1EbWIUBufpJuSc0TqnxxI0DG9z3m5xGV5Sydz5zfHVWhXP/nXtsf+8dAIT
# 1zUEC4HfMtVO/X3NVaZYmYwpmAuscVJCxdm786XLMTe3Nh18v1RdTn28uxr0JnoR
# wsmPRoYyJkUb3nbh1q+xMHv75QV3KPlfTe1UwpEs7K9YnOfpXLcJhn0u13ENN5Sm
# FNznnfkGxP0jSI5MZ3f2EI7ks1TsjZNeTSznW94hQz36Ttehm8y7uL5ew4jajYeW
# 6OUu/zGhJCpZNP2Hfyi0f06ISyJFWkog1Q3G0udZhUYf31pJ6G42ZxqS5ihdPLmG
# 1dYLGWd9AgMBAAGjggG4MIIBtDAfBgNVHSMEGDAWgBQPKssghyi47G9IritUpimq
# F6TNDDAdBgNVHQ4EFgQUx2vSVcLaMddlQfJKC3538TBe1ecwDgYDVR0PAQH/BAQD
# AgeAMAwGA1UdEwEB/wQCMAAwEwYDVR0lBAwwCgYIKwYBBQUHAwMwEQYJYIZIAYb4
# QgEBBAQDAgQQMEoGA1UdIARDMEEwNQYMKwYBBAGyMQECAQMCMCUwIwYIKwYBBQUH
# AgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAEEATBJBgNVHR8EQjBA
# MD6gPKA6hjhodHRwOi8vY3JsLnNlY3RpZ28uY29tL1NlY3RpZ29QdWJsaWNDb2Rl
# U2lnbmluZ0NBUjM2LmNybDB5BggrBgEFBQcBAQRtMGswRAYIKwYBBQUHMAKGOGh0
# dHA6Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1B1YmxpY0NvZGVTaWduaW5nQ0FS
# MzYuY3J0MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTAaBgNV
# HREEEzARgQ9wb3N0QGR5bmFwcm8ubm8wDQYJKoZIhvcNAQEMBQADggGBAAe6J7g+
# cJ7iWZ1DyGKy/2Ber7rIqOeiLi16R3xz8l21++ruItAygqW3JBtLj5cAxCAgJJZe
# XlShKQh+fuoSxIWEWCpMC0k8865hZIhjzfX/TKdF4Bs4VsJqha72j412IITjNNnf
# ZxfZninStkY2wA1M7D7YZUYEqnN+9UO8iEVO4SY8aKIm4YCXI5LlpDoonXGqY/yA
# YBUvMRGutUNBoNWToY8xHeavrEZ/S5CUOzaeRByG9NMYtbfLJjV5APo1Aup0hZWj
# 424wSAWt8tkc+wErO/s1yMZqU8lw/ucqXB2WirvJr4zeJMh3RywOscJfxg8WONu0
# UVlHkly6DGurGpqM1ekFIFXVko/RPuaoIhsuTpO9rZTDTcZ5tNej3jzk8scDqOSo
# SsgrEDE3XeVXlyZD2p6P2XJzoSdZwfsHRlY/Ji0gyB9dBuxicOmcKk1fxvVgcjm6
# 6wjiMHOrZa2JiIxYtBVGinEEMU83eyq0deVNO1DqZcuLGAyGH4p96dKEYDGCAwow
# ggMGAgEBMGkwVDELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRl
# ZDErMCkGA1UEAxMiU2VjdGlnbyBQdWJsaWMgQ29kZSBTaWduaW5nIENBIFIzNgIR
# ANm8nd1n4WvloMcEQ5z43dkwCQYFKw4DAhoFAKB4MBgGCisGAQQBgjcCAQwxCjAI
# oAKAAKECgAAwGQYJKoZIhvcNAQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIB
# CzEOMAwGCisGAQQBgjcCARUwIwYJKoZIhvcNAQkEMRYEFAEj80zEDjMHm1+0sAE+
# YiLV4KsNMA0GCSqGSIb3DQEBAQUABIICAC7Qk7enByB6ptyMS2tBbpl9jlBlFBLQ
# ftCGKlcHXzwElLk08daFVi0P1uLnujEJojxIzkcayADoGSkmeQMJhS8SVj39sziF
# VJfkF5APjfNeqYqoXEUNFn4uFZwEo+bmBLfEM5h7jgr/tJxWEQtuLk3jc6qWJD/X
# iHwED1+C2eeQKX5KRQI7QO9LJKYGZyJuDCaDbKkkFeRSAqpFyVAHJv4zDq4JJ8iq
# +/0k0iVLwcLPQrlrOhFmZqwjhCtX4rPwO0rbrMheOyij++M05wFAMm5OKgV1rLbf
# Jm2RbJgesUlZ74eDlMshaqQiYhW1ANQACZk5HUS2vafqimvHqHN4hyA03I1JFZWr
# bH1I6vYZoW2E9Z8gQF41ibyNbq09v8Zxh211m7T0WyDAyEd9fc7qAJ4xdkP6Z/Up
# OJme4lBmh5kba38Nb4pEjbUe4Nlupv4QCdSiTqhD8WHhBZj2rBNFasDWxCdwm6DC
# MDiavn7/r6lsC3zpJCQ6At7K/IMFSoSuG6kUQE+fvh8t0dqgQNk3YwwOm+0NmO1W
# YDjKzNn2j2bdFgidBX687zR8wXZ4EieTv9Aw5AE453l3na2yPnQy87Okv6HmbyUp
# oyat9psayYFWMbMCXgGcHfA/7HLDLkxa2eNB0QwMvumEn879lWgeE6p9qWRzeZ61
# HjpmBLeELjGS
# SIG # End signature block