tests/MonkeyCloudUtils.Tests.ps1

# PSScriptAnalyzer - ignore test file
Import-Module Pester
Set-StrictMode -Version Latest

Describe 'MonkeyCloudUtils' {
    BeforeAll {
        #Import module monkeymsal
        #Import monkeycloudutils
        $Module = Get-ChildItem ("{0}/core/modules/monkeymsal" -f (Split-Path $PSScriptRoot -Parent)) -Filter '*.psm1'
        $MyModule = $Module.DirectoryName
        Import-Module $MyModule -Force
        $Module = Get-ChildItem ("{0}/core/modules/monkeycloudutils" -f (Split-Path $PSScriptRoot -Parent)) -Filter '*.psm1'
        $MyModule = $Module.DirectoryName
        Import-Module $MyModule -Force
    }
    It 'Read Token' {
        $token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJNb25rZXkzNjUiLCJpYXQiOjE3MTE2NTI5NjIsImV4cCI6MjA1ODcyMTc2MiwiYXVkIjoiaHR0cHM6Ly9zaWx2ZXJoYWNrLmdpdGh1Yi5pby9tb25rZXkzNjUvIiwic3ViIjoiaGVsbG9AbW9ua2V5MzY1IiwiR2l2ZW5OYW1lIjoiSnVhbiIsIlN1cm5hbWUiOiJHYXJyaWRvIiwiRW1haWwiOiJqZ2Fycmlkb0B0cmlhbmEuY29tIiwiUm9sZSI6WyJQcmluY2lwYWwgU2VjdXJpdHkgQ29uc3VsdGFudCIsIkNsb3VkIEFkbWluaXN0cmF0b3IiXX0.f5yXZdMaI7z2ueev7YbzTnty8K3N2kLN5XlzpGLOnsk'
        $decoded = Read-JWTtoken -token $token
        $decoded.Email | Should -Be 'jgarrido@triana.com'
    }
    It 'Get Environment' {
        InModuleScope monkeycloudutils {
            $environment = Get-MonkeyEnvironment -Environment AzureUSGovernment
            $environment.Graphv2 | Should -Be 'https://graph.microsoft.us/'
        }
    }
    It 'Get Tenant name' {
        InModuleScope monkeycloudutils {
            $tenant = [pscustomobject]@{
                verifiedDomains = @(@{
                        "Name" = "Monkey365"
                        "Capabilities" = "OfficeCommunicationsOnline"
                        "isInitial" = $true
                    }
                );
            }
            $default = Get-DefaultTenantName -TenantDetails $tenant
            $default | Should -Be 'Monkey365'
        }
    }
    It 'Get Exo Redirect Uri' {
        InModuleScope monkeycloudutils {
            $uri = Get-MonkeyExoRedirectUri
            $uri | Should -Be 'https://login.microsoftonline.com/common/oauth2/nativeclient'
        }
    }
    It 'Get Exo application' {
        InModuleScope monkeycloudutils {
            $app = New-MsalApplicationForExo
            $app | Should -BeOfType [Microsoft.Identity.Client.PublicClientApplication]
        }
    }
    It 'Get PnP application' {
        InModuleScope monkeycloudutils {
            $app = New-MsalApplicationForPnP
            $app | Should -BeOfType [Microsoft.Identity.Client.PublicClientApplication]
        }
    }
    It 'Get SPO application' {
        InModuleScope monkeycloudutils {
            $app = New-MsalApplicationForSPO
            $app | Should -BeOfType [Microsoft.Identity.Client.PublicClientApplication]
        }
    }
    It 'Test Tenant Id' {
        InModuleScope monkeycloudutils {
            Test-IsValidTenantId -TenantId ([System.Guid]::NewGuid()) | Should -Be $true
        }
    }
    It 'Test Audience' {
        InModuleScope monkeycloudutils {
            $token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJNb25rZXkzNjUiLCJpYXQiOjE3MTE2NTI5NjIsImV4cCI6MjA1ODcyMTc2MiwiYXVkIjoiaHR0cHM6Ly9zaWx2ZXJoYWNrLmdpdGh1Yi5pby9tb25rZXkzNjUvIiwic3ViIjoiaGVsbG9AbW9ua2V5MzY1IiwiR2l2ZW5OYW1lIjoiSnVhbiIsIlN1cm5hbWUiOiJHYXJyaWRvIiwiRW1haWwiOiJqZ2Fycmlkb0B0cmlhbmEuY29tIiwiUm9sZSI6WyJQcmluY2lwYWwgU2VjdXJpdHkgQ29uc3VsdGFudCIsIkNsb3VkIEFkbWluaXN0cmF0b3IiXX0.f5yXZdMaI7z2ueev7YbzTnty8K3N2kLN5XlzpGLOnsk'
            Test-IsValidAudience -token $token -audience silverhack.github.io | Should -Be $true
        }
    }
    It 'OneDrive Url' {
        InModuleScope monkeycloudutils {
            Get-OneDriveUrl -Endpoint "silverhack" | Should -Be "https://silverhack-my.sharepoint.com"
        }
    }
    It 'SharePoint Url' {
        InModuleScope monkeycloudutils {
            Get-SharepointUrl -Endpoint "silverhack" | Should -Be "https://silverhack.sharepoint.com"
        }
    }
    It 'SharePoint Admin Url' {
        InModuleScope monkeycloudutils {
            Get-SharepointAdminUrl -Endpoint "silverhack" | Should -Be "https://silverhack-admin.sharepoint.com"
        }
    }
    It 'Public Tenant Info' {
        InModuleScope monkeycloudutils {
            $tinfo = Get-PublicTenantInformation -Domain "fbi.gov"
            $tinfo.TenantRegionScope | Should -Be "USGov"
        }
    }
}