Functions/Compare-ActiveDirectoryGroups.Tests.ps1

describe "BitTitan.Runbooks.ActiveDirectory/Compare-ActiveDirectoryGroups" -Tag "module", "unit" {

    # Import the function to test
    . "$($PSScriptRoot)\Compare-ActiveDirectoryGroups.ps1"

    it "returns true for two identical groups" {
        # Declare the task inputs
        $referenceGroup = [PSCustomObject]@{
            Name          = "Group Name"
            GroupCategory = "Group Category"
            GroupScope    = "Group Scope"
            Members       = @(
                "Member 1",
                "Member 2"
            )
        }
        $comparisonGroup = [PSCustomObject]@{
            Name          = "Group Name"
            GroupCategory = "Group Category"
            GroupScope    = "Group Scope"
            Members       = @(
                "Member 1",
                "Member 2"
            )
        }

        # Call the function
        Compare-ActiveDirectoryGroups -ReferenceGroup $referenceGroup -ComparisonGroup $comparisonGroup -OutputStream "None" | Should Be $true
    }

    it "returns false for two groups with different property values" {
        # Declare the task inputs
        $referenceGroup = [PSCustomObject]@{
            Name          = "Group Name"
            GroupCategory = "Group Category"
            GroupScope    = "Group Scope"
            Members       = @(
                "Member 1",
                "Member 2"
            )
        }
        $comparisonGroup = [PSCustomObject]@{
            Name          = "Group Name2"
            GroupCategory = "Group Category"
            GroupScope    = "Group Scope"
            Members       = @(
                "Member 1",
                "Member 2"
            )
        }

        # Call the function
        Compare-ActiveDirectoryGroups -ReferenceGroup $referenceGroup -ComparisonGroup $comparisonGroup -OutputStream "None" | Should Be $false
    }

    it "returns false for two groups with different members" {
        # Declare the task inputs
        $referenceGroup = [PSCustomObject]@{
            Name          = "Group Name"
            GroupCategory = "Group Category"
            GroupScope    = "Group Scope"
            Members       = @(
                "Member 1",
                "Member 2"
            )
        }
        $comparisonGroup = [PSCustomObject]@{
            Name          = "Group Name"
            GroupCategory = "Group Category"
            GroupScope    = "Group Scope"
            Members       = @(
                "Member 1"
            )
        }

        # Call the function
        Compare-ActiveDirectoryGroups -ReferenceGroup $referenceGroup -ComparisonGroup $comparisonGroup -OutputStream "None" | Should Be $false
    }
}