1011 строки
37 KiB
PowerShell
1011 строки
37 KiB
PowerShell
# Copyright (c) Microsoft Corporation. All rights reserved.
|
|
# Licensed under the MIT License.
|
|
|
|
<#
|
|
.Synopsis
|
|
Tests for GitHubTeams.ps1 module
|
|
#>
|
|
|
|
[CmdletBinding()]
|
|
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '',
|
|
Justification = 'Suppress false positives in Pester code blocks')]
|
|
param()
|
|
|
|
BeforeAll {
|
|
# This is common test code setup logic for all Pester test files
|
|
$moduleRootPath = Split-Path -Path $PSScriptRoot -Parent
|
|
. (Join-Path -Path $moduleRootPath -ChildPath 'Tests\Common.ps1')
|
|
|
|
# Define Script-scoped, readonly, hidden variables.
|
|
@{
|
|
defaultRepoDesc = "This is a description."
|
|
defaultRepoHomePage = "https://www.microsoft.com/"
|
|
defaultRepoTopic = "microsoft"
|
|
}.GetEnumerator() | ForEach-Object {
|
|
Set-Variable -Force -Scope Script -Option ReadOnly -Visibility Private -Name $_.Key -Value $_.Value
|
|
}
|
|
}
|
|
Describe 'GitHubTeams\Get-GitHubTeam' {
|
|
BeforeAll {
|
|
$organizationName = $script:organizationName
|
|
}
|
|
|
|
Context 'When getting a GitHub Team by organization' {
|
|
BeforeAll {
|
|
$teamName = [Guid]::NewGuid().Guid
|
|
$description = 'Team Description'
|
|
$privacy = 'closed'
|
|
$MaintainerName = $script:ownerName
|
|
|
|
$newGithubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamName = $teamName
|
|
Description = $description
|
|
Privacy = $privacy
|
|
MaintainerName = $MaintainerName
|
|
}
|
|
|
|
New-GitHubTeam @newGithubTeamParms | Out-Null
|
|
|
|
$orgTeams = Get-GitHubTeam -OrganizationName $organizationName
|
|
|
|
$team = $orgTeams | Where-Object -Property name -eq $teamName
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$team.PSObject.TypeNames[0] | Should -Be 'GitHub.TeamSummary'
|
|
$team.name | Should -Be $teamName
|
|
$team.description | Should -Be $description
|
|
$team.parent | Should -BeNullOrEmpty
|
|
$team.privacy | Should -Be $privacy
|
|
$team.TeamName | Should -Be $team.name
|
|
$team.TeamId | Should -Be $team.id
|
|
$team.OrganizationName | Should -Be $organizationName
|
|
}
|
|
|
|
Context 'When specifying the "TeamName" parameter' {
|
|
BeforeAll {
|
|
$team = Get-GitHubTeam -OrganizationName $organizationName -TeamName $teamName
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$team.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$team.name | Should -Be $teamName
|
|
$team.description | Should -Be $description
|
|
$team.parent | Should -BeNullOrEmpty
|
|
$team.privacy | Should -Be $privacy
|
|
$team.created_at | Should -Not -BeNullOrEmpty
|
|
$team.updated_at | Should -Not -BeNullOrEmpty
|
|
$team.members_count | Should -Be 1
|
|
$team.repos_count | Should -Be 0
|
|
$team.TeamName | Should -Be $team.name
|
|
$team.TeamId | Should -Be $team.id
|
|
$team.OrganizationName | Should -Be $organizationName
|
|
}
|
|
}
|
|
|
|
Context 'When specifying the "OrganizationName" and "TeamSlug" through the pipeline' {
|
|
BeforeAll {
|
|
$orgTeams = $team | Get-GitHubTeam
|
|
$team = $orgTeams | Where-Object -Property name -eq $teamName
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$team.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$team.name | Should -Be $teamName
|
|
$team.description | Should -Be $description
|
|
$team.parent | Should -BeNullOrEmpty
|
|
$team.privacy | Should -Be $privacy
|
|
$team.TeamName | Should -Be $team.name
|
|
$team.TeamId | Should -Be $team.id
|
|
$team.OrganizationName | Should -Be $organizationName
|
|
}
|
|
}
|
|
|
|
AfterAll {
|
|
if (Get-Variable -Name team -ErrorAction SilentlyContinue)
|
|
{
|
|
$team | Remove-GitHubTeam -Force
|
|
}
|
|
}
|
|
}
|
|
|
|
Context 'When getting a GitHub Team by repository' {
|
|
BeforeAll {
|
|
$repoName = [Guid]::NewGuid().Guid
|
|
|
|
$repo = New-GitHubRepository -RepositoryName $repoName -OrganizationName $organizationName
|
|
|
|
$teamName = [Guid]::NewGuid().Guid
|
|
$description = 'Team Description'
|
|
$privacy = 'closed'
|
|
|
|
$newGithubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamName = $teamName
|
|
Description = $description
|
|
RepositoryName = $repoName
|
|
Privacy = $privacy
|
|
}
|
|
|
|
New-GitHubTeam @newGithubTeamParms | Out-Null
|
|
|
|
$orgTeams = Get-GitHubTeam -OwnerName $organizationName -RepositoryName $repoName
|
|
$team = $orgTeams | Where-Object -Property name -eq $teamName
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$team.PSObject.TypeNames[0] | Should -Be 'GitHub.TeamSummary'
|
|
$team.name | Should -Be $teamName
|
|
$team.description | Should -Be $description
|
|
$team.parent | Should -BeNullOrEmpty
|
|
$team.privacy | Should -Be $privacy
|
|
$team.TeamName | Should -Be $team.name
|
|
$team.TeamId | Should -Be $team.id
|
|
$team.OrganizationName | Should -Be $organizationName
|
|
}
|
|
|
|
Context 'When specifying the "TeamName" parameter' {
|
|
BeforeAll {
|
|
$getGitHubTeamParms = @{
|
|
OwnerName = $organizationName
|
|
RepositoryName = $repoName
|
|
TeamName = $teamName
|
|
}
|
|
|
|
$team = Get-GitHubTeam @getGitHubTeamParms
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$team.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$team.name | Should -Be $teamName
|
|
$team.description | Should -Be $description
|
|
$team.parent | Should -BeNullOrEmpty
|
|
$team.privacy | Should -Be $privacy
|
|
$team.created_at | Should -Not -BeNullOrEmpty
|
|
$team.updated_at | Should -Not -BeNullOrEmpty
|
|
$team.members_count | Should -Be 1
|
|
$team.repos_count | Should -Be 1
|
|
$team.TeamName | Should -Be $team.name
|
|
$team.TeamId | Should -Be $team.id
|
|
$team.OrganizationName | Should -Be $organizationName
|
|
}
|
|
}
|
|
|
|
Context 'When specifying the "Uri" parameter through the pipeline' {
|
|
BeforeAll {
|
|
$orgTeams = $repo | Get-GitHubTeam -TeamName $teamName
|
|
$team = $orgTeams | Where-Object -Property name -eq $teamName
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$team.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$team.name | Should -Be $teamName
|
|
$team.description | Should -Be $description
|
|
$team.organization.login | Should -Be $organizationName
|
|
$team.parent | Should -BeNullOrEmpty
|
|
$team.created_at | Should -Not -BeNullOrEmpty
|
|
$team.updated_at | Should -Not -BeNullOrEmpty
|
|
$team.members_count | Should -Be 1
|
|
$team.repos_count | Should -Be 1
|
|
$team.privacy | Should -Be $privacy
|
|
$team.TeamName | Should -Be $team.name
|
|
$team.TeamId | Should -Be $team.id
|
|
$team.OrganizationName | Should -Be $organizationName
|
|
}
|
|
}
|
|
|
|
AfterAll {
|
|
if (Get-Variable -Name repo -ErrorAction SilentlyContinue)
|
|
{
|
|
$repo | Remove-GitHubRepository -Force
|
|
}
|
|
|
|
if (Get-Variable -Name team -ErrorAction SilentlyContinue)
|
|
{
|
|
$team | Remove-GitHubTeam -Force
|
|
}
|
|
}
|
|
}
|
|
|
|
Context 'When getting a GitHub Team by TeamSlug' {
|
|
BeforeAll {
|
|
$teamName = [Guid]::NewGuid().Guid
|
|
$description = 'Team Description'
|
|
$privacy = 'closed'
|
|
$MaintainerName = $script:ownerName
|
|
|
|
$newGithubTeamParms = @{
|
|
OrganizationName = $script:organizationName
|
|
TeamName = $teamName
|
|
Description = $description
|
|
Privacy = $privacy
|
|
MaintainerName = $MaintainerName
|
|
}
|
|
|
|
$newTeam = New-GitHubTeam @newGithubTeamParms
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties as a parameter' {
|
|
$team = Get-GitHubTeam -OrganizationName $script:organizationName -TeamSlug $newTeam.slug
|
|
$team.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$team.name | Should -Be $teamName
|
|
$team.description | Should -Be $description
|
|
$team.organization.login | Should -Be $organizationName
|
|
$team.parent | Should -BeNullOrEmpty
|
|
$team.created_at | Should -Not -BeNullOrEmpty
|
|
$team.updated_at | Should -Not -BeNullOrEmpty
|
|
$team.members_count | Should -Be 1
|
|
$team.repos_count | Should -Be 0
|
|
$team.privacy | Should -Be $privacy
|
|
$team.TeamName | Should -Be $team.name
|
|
$team.TeamId | Should -Be $team.id
|
|
$team.OrganizationName | Should -Be $organizationName
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties via the pipeline' {
|
|
$team = $newTeam | Get-GitHubTeam
|
|
$team.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$team.name | Should -Be $teamName
|
|
$team.description | Should -Be $description
|
|
$team.organization.login | Should -Be $organizationName
|
|
$team.parent | Should -BeNullOrEmpty
|
|
$team.created_at | Should -Not -BeNullOrEmpty
|
|
$team.updated_at | Should -Not -BeNullOrEmpty
|
|
$team.members_count | Should -Be 1
|
|
$team.repos_count | Should -Be 0
|
|
$team.privacy | Should -Be $privacy
|
|
$team.TeamName | Should -Be $team.name
|
|
$team.TeamId | Should -Be $team.id
|
|
$team.OrganizationName | Should -Be $organizationName
|
|
}
|
|
|
|
AfterAll {
|
|
if (Get-Variable -Name newTeam -ErrorAction SilentlyContinue)
|
|
{
|
|
$newTeam | Remove-GitHubTeam -Force
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Describe 'GitHubTeams\New-GitHubTeam' {
|
|
BeforeAll {
|
|
$organizationName = $script:organizationName
|
|
}
|
|
|
|
Context 'When creating a new GitHub team with default settings' {
|
|
BeforeAll {
|
|
$teamName = [Guid]::NewGuid().Guid
|
|
$newGithubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamName = $teamName
|
|
}
|
|
|
|
$team = New-GitHubTeam @newGithubTeamParms
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$team.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$team.name | Should -Be $teamName
|
|
$team.description | Should -BeNullOrEmpty
|
|
$team.organization.login | Should -Be $organizationName
|
|
$team.parent | Should -BeNullOrEmpty
|
|
$team.members_count | Should -Be 1
|
|
$team.repos_count | Should -Be 0
|
|
$team.TeamName | Should -Be $team.name
|
|
$team.TeamId | Should -Be $team.id
|
|
$team.OrganizationName | Should -Be $organizationName
|
|
}
|
|
|
|
AfterAll {
|
|
if (Get-Variable -Name team -ErrorAction SilentlyContinue)
|
|
{
|
|
$team | Remove-GitHubTeam -Force
|
|
}
|
|
}
|
|
}
|
|
|
|
Context 'When creating a new GitHub team with all possible settings' {
|
|
BeforeAll {
|
|
$repoName = [Guid]::NewGuid().Guid
|
|
|
|
$newGithubRepositoryParms = @{
|
|
RepositoryName = $repoName
|
|
OrganizationName = $organizationName
|
|
}
|
|
|
|
$repo = New-GitHubRepository @newGitHubRepositoryParms
|
|
|
|
$maintainer = Get-GitHubUser -UserName $script:ownerName
|
|
|
|
$teamName = [Guid]::NewGuid().Guid
|
|
$description = 'Team Description'
|
|
$privacy = 'closed'
|
|
|
|
$newGithubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamName = $teamName
|
|
Description = $description
|
|
RepositoryName = $repoName
|
|
Privacy = $privacy
|
|
MaintainerName = $maintainer.UserName
|
|
}
|
|
|
|
$team = New-GitHubTeam @newGithubTeamParms
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$team.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$team.name | Should -Be $teamName
|
|
$team.description | Should -Be $description
|
|
$team.organization.login | Should -Be $organizationName
|
|
$team.parent | Should -BeNullOrEmpty
|
|
$team.members_count | Should -Be 1
|
|
$team.repos_count | Should -Be 1
|
|
$team.privacy | Should -Be $privacy
|
|
$team.TeamName | Should -Be $team.name
|
|
$team.TeamId | Should -Be $team.id
|
|
$team.OrganizationName | Should -Be $organizationName
|
|
}
|
|
|
|
AfterAll {
|
|
if (Get-Variable -Name repo -ErrorAction SilentlyContinue)
|
|
{
|
|
$repo | Remove-GitHubRepository -Force
|
|
}
|
|
|
|
if (Get-Variable -Name team -ErrorAction SilentlyContinue)
|
|
{
|
|
$team | Remove-GitHubTeam -Force
|
|
}
|
|
}
|
|
}
|
|
|
|
Context 'When creating a child GitHub team using the Parent TeamName' {
|
|
BeforeAll {
|
|
$parentTeamName = [Guid]::NewGuid().Guid
|
|
$privacy = 'Closed'
|
|
|
|
$newGithubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamName = $parentTeamName
|
|
Privacy = $privacy
|
|
}
|
|
|
|
$parentTeam = New-GitHubTeam @newGithubTeamParms
|
|
|
|
$childTeamName = [Guid]::NewGuid().Guid
|
|
|
|
$newGithubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamName = $childTeamName
|
|
ParentTeamName = $parentTeamName
|
|
Privacy = $privacy
|
|
}
|
|
|
|
$childTeam = New-GitHubTeam @newGithubTeamParms
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$childTeam.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$childTeam.name | Should -Be $childTeamName
|
|
$childTeam.organization.login | Should -Be $organizationName
|
|
$childTeam.parent.name | Should -Be $parentTeamName
|
|
$childTeam.privacy | Should -Be $privacy
|
|
$childTeam.TeamName | Should -Be $childTeam.name
|
|
$childTeam.TeamId | Should -Be $childTeam.id
|
|
$childTeam.OrganizationName | Should -Be $organizationName
|
|
}
|
|
|
|
AfterAll {
|
|
if (Get-Variable -Name childTeam -ErrorAction SilentlyContinue)
|
|
{
|
|
$childTeam | Remove-GitHubTeam -Force
|
|
}
|
|
|
|
if (Get-Variable -Name parentTeam -ErrorAction SilentlyContinue)
|
|
{
|
|
$parentTeam | Remove-GitHubTeam -Force
|
|
}
|
|
}
|
|
}
|
|
|
|
Context 'When creating a child GitHub team using the Parent TeamId' {
|
|
BeforeAll {
|
|
$parentTeamName = [Guid]::NewGuid().Guid
|
|
$privacy = 'Closed'
|
|
|
|
$newGithubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamName = $parentTeamName
|
|
Privacy = $privacy
|
|
}
|
|
|
|
$parentTeam = New-GitHubTeam @newGithubTeamParms
|
|
|
|
$childTeamName = [Guid]::NewGuid().Guid
|
|
|
|
$newGithubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamName = $childTeamName
|
|
ParentTeamId = $parentTeam.id
|
|
Privacy = $privacy
|
|
}
|
|
|
|
$childTeam = New-GitHubTeam @newGithubTeamParms
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$childTeam.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$childTeam.name | Should -Be $childTeamName
|
|
$childTeam.organization.login | Should -Be $organizationName
|
|
$childTeam.parent.name | Should -Be $parentTeamName
|
|
$childTeam.privacy | Should -Be $privacy
|
|
$childTeam.TeamName | Should -Be $childTeam.name
|
|
$childTeam.TeamId | Should -Be $childTeam.id
|
|
$childTeam.OrganizationName | Should -Be $organizationName
|
|
}
|
|
|
|
AfterAll {
|
|
if (Get-Variable -Name childTeam -ErrorAction SilentlyContinue)
|
|
{
|
|
$childTeam | Remove-GitHubTeam -Force
|
|
}
|
|
|
|
if (Get-Variable -Name parentTeam -ErrorAction SilentlyContinue)
|
|
{
|
|
$parentTeam | Remove-GitHubTeam -Force
|
|
}
|
|
}
|
|
}
|
|
|
|
Context 'When creating a child GitHub team using the Parent TeamId on the pipeline' {
|
|
BeforeAll {
|
|
$parentTeamName = [Guid]::NewGuid().Guid
|
|
$privacy = 'Closed'
|
|
|
|
$newGithubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamName = $parentTeamName
|
|
Privacy = $privacy
|
|
}
|
|
|
|
$parentTeam = New-GitHubTeam @newGithubTeamParms
|
|
|
|
$childTeamName = [Guid]::NewGuid().Guid
|
|
|
|
$newGithubTeamParms = @{
|
|
TeamName = $childTeamName
|
|
Privacy = $privacy
|
|
}
|
|
|
|
$childTeam = $parentTeam | New-GitHubTeam @newGithubTeamParms
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$childTeam.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$childTeam.name | Should -Be $childTeamName
|
|
$childTeam.organization.login | Should -Be $organizationName
|
|
$childTeam.parent.name | Should -Be $parentTeamName
|
|
$childTeam.privacy | Should -Be $privacy
|
|
$childTeam.TeamName | Should -Be $childTeam.name
|
|
$childTeam.TeamId | Should -Be $childTeam.id
|
|
$childTeam.OrganizationName | Should -Be $organizationName
|
|
}
|
|
|
|
AfterAll {
|
|
if (Get-Variable -Name childTeam -ErrorAction SilentlyContinue)
|
|
{
|
|
$childTeam | Remove-GitHubTeam -Force
|
|
}
|
|
|
|
if (Get-Variable -Name parentTeam -ErrorAction SilentlyContinue)
|
|
{
|
|
$parentTeam | Remove-GitHubTeam -Force
|
|
}
|
|
}
|
|
}
|
|
|
|
Context 'When specifying the "TeamName" parameter through the pipeline' {
|
|
BeforeAll {
|
|
$teamName = [Guid]::NewGuid().Guid
|
|
|
|
$team = $teamName | New-GitHubTeam -OrganizationName $organizationName
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$team.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$team.name | Should -Be $teamName
|
|
$team.organization.login | Should -Be $organizationName
|
|
$team.parent | Should -BeNullOrEmpty
|
|
$team.created_at | Should -Not -BeNullOrEmpty
|
|
$team.updated_at | Should -Not -BeNullOrEmpty
|
|
$team.members_count | Should -Be 1
|
|
$team.repos_count | Should -Be 0
|
|
$team.TeamName | Should -Be $team.name
|
|
$team.TeamId | Should -Be $team.id
|
|
$team.OrganizationName | Should -Be $organizationName
|
|
}
|
|
|
|
AfterAll {
|
|
if (Get-Variable -Name team -ErrorAction SilentlyContinue)
|
|
{
|
|
$team | Remove-GitHubTeam -Force
|
|
}
|
|
}
|
|
}
|
|
|
|
Context 'When specifying the "MaintainerName" parameter through the pipeline' {
|
|
BeforeAll {
|
|
$teamName = [Guid]::NewGuid().Guid
|
|
$maintainer = Get-GitHubUser -UserName $script:ownerName
|
|
|
|
$team = $maintainer | New-GitHubTeam -OrganizationName $organizationName -TeamName $teamName
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$team.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$team.name | Should -Be $teamName
|
|
$team.organization.login | Should -Be $organizationName
|
|
$team.parent | Should -BeNullOrEmpty
|
|
$team.created_at | Should -Not -BeNullOrEmpty
|
|
$team.updated_at | Should -Not -BeNullOrEmpty
|
|
$team.members_count | Should -Be 1
|
|
$team.repos_count | Should -Be 0
|
|
$team.TeamName | Should -Be $team.name
|
|
$team.TeamId | Should -Be $team.id
|
|
$team.OrganizationName | Should -Be $organizationName
|
|
}
|
|
|
|
AfterAll {
|
|
if (Get-Variable -Name team -ErrorAction SilentlyContinue)
|
|
{
|
|
$team | Remove-GitHubTeam -Force
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Describe 'GitHubTeams\Set-GitHubTeam' {
|
|
BeforeAll {
|
|
$organizationName = $script:organizationName
|
|
}
|
|
|
|
Context 'When updating a Child GitHub team' {
|
|
BeforeAll {
|
|
$teamName = [Guid]::NewGuid().Guid
|
|
$parentTeamName = [Guid]::NewGuid().Guid
|
|
$description = 'Team Description'
|
|
$privacy = 'Closed'
|
|
|
|
$newGithubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamName = $parentTeamName
|
|
Privacy = $privacy
|
|
}
|
|
|
|
$parentTeam = New-GitHubTeam @newGithubTeamParms
|
|
|
|
$newGithubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamName = $teamName
|
|
Privacy = $privacy
|
|
}
|
|
|
|
$team = New-GitHubTeam @newGithubTeamParms
|
|
|
|
$updateGitHubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamName = $teamName
|
|
Description = $description
|
|
Privacy = $privacy
|
|
ParentTeamName = $parentTeamName
|
|
}
|
|
|
|
$updatedTeam = Set-GitHubTeam @updateGitHubTeamParms -PassThru
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$updatedTeam.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$updatedTeam.name | Should -Be $teamName
|
|
$updatedTeam.organization.login | Should -Be $organizationName
|
|
$updatedTeam.description | Should -Be $description
|
|
$updatedTeam.parent.name | Should -Be $parentTeamName
|
|
$updatedTeam.privacy | Should -Be $privacy
|
|
$updatedTeam.TeamName | Should -Be $team.name
|
|
$updatedTeam.TeamId | Should -Be $team.id
|
|
$updatedTeam.OrganizationName | Should -Be $organizationName
|
|
}
|
|
|
|
AfterAll {
|
|
if (Get-Variable -Name team -ErrorAction SilentlyContinue)
|
|
{
|
|
$team | Remove-GitHubTeam -Force
|
|
}
|
|
|
|
if (Get-Variable -Name parentTeam -ErrorAction SilentlyContinue)
|
|
{
|
|
$parentTeam | Remove-GitHubTeam -Force
|
|
}
|
|
}
|
|
}
|
|
|
|
Context 'When updating a non-child GitHub team' {
|
|
BeforeAll {
|
|
$teamName = [Guid]::NewGuid().Guid
|
|
$description = 'Team Description'
|
|
$privacy = 'Closed'
|
|
|
|
$newGithubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamName = $teamName
|
|
Privacy = 'Secret'
|
|
}
|
|
|
|
$team = New-GitHubTeam @newGithubTeamParms
|
|
|
|
$updateGitHubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamName = $teamName
|
|
Description = $description
|
|
Privacy = $privacy
|
|
}
|
|
|
|
$updatedTeam = Set-GitHubTeam @updateGitHubTeamParms -PassThru
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$updatedTeam.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$updatedTeam.name | Should -Be $teamName
|
|
$updatedTeam.organization.login | Should -Be $OrganizationName
|
|
$updatedTeam.description | Should -Be $description
|
|
$updatedTeam.parent.name | Should -BeNullOrEmpty
|
|
$updatedTeam.privacy | Should -Be $privacy
|
|
$updatedTeam.created_at | Should -Not -BeNullOrEmpty
|
|
$updatedTeam.updated_at | Should -Not -BeNullOrEmpty
|
|
$updatedTeam.members_count | Should -Be 1
|
|
$updatedTeam.repos_count | Should -Be 0
|
|
$updatedTeam.TeamName | Should -Be $team.name
|
|
$updatedTeam.TeamId | Should -Be $team.id
|
|
$updatedTeam.OrganizationName | Should -Be $organizationName
|
|
}
|
|
|
|
AfterAll {
|
|
if (Get-Variable -Name team -ErrorAction SilentlyContinue)
|
|
{
|
|
$team | Remove-GitHubTeam -Force
|
|
}
|
|
}
|
|
}
|
|
|
|
Context 'When updating a GitHub team to be a child using the Parent TeamId' {
|
|
BeforeAll {
|
|
$teamName = [Guid]::NewGuid().Guid
|
|
$parentTeamName = [Guid]::NewGuid().Guid
|
|
$description = 'Team Description'
|
|
$privacy = 'Closed'
|
|
|
|
$newGithubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamName = $parentTeamName
|
|
Privacy = $privacy
|
|
}
|
|
|
|
$parentTeam = New-GitHubTeam @newGithubTeamParms
|
|
|
|
$newGithubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamName = $teamName
|
|
Privacy = $privacy
|
|
}
|
|
|
|
$team = New-GitHubTeam @newGithubTeamParms
|
|
|
|
$updateGitHubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamName = $teamName
|
|
Description = $description
|
|
Privacy = $privacy
|
|
ParentTeamId = $parentTeam.id
|
|
}
|
|
|
|
$updatedTeam = Set-GitHubTeam @updateGitHubTeamParms -PassThru
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$updatedTeam.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$updatedTeam.name | Should -Be $teamName
|
|
$updatedTeam.organization.login | Should -Be $organizationName
|
|
$updatedTeam.description | Should -Be $description
|
|
$updatedTeam.parent.name | Should -Be $parentTeamName
|
|
$updatedTeam.privacy | Should -Be $privacy
|
|
$updatedTeam.TeamName | Should -Be $team.name
|
|
$updatedTeam.TeamId | Should -Be $team.id
|
|
$updatedTeam.OrganizationName | Should -Be $organizationName
|
|
}
|
|
|
|
AfterAll {
|
|
if (Get-Variable -Name team -ErrorAction SilentlyContinue)
|
|
{
|
|
$team | Remove-GitHubTeam -Force
|
|
}
|
|
|
|
if (Get-Variable -Name parentTeam -ErrorAction SilentlyContinue)
|
|
{
|
|
$parentTeam | Remove-GitHubTeam -Force
|
|
}
|
|
}
|
|
}
|
|
|
|
Context 'When specifying the "Organization" and "TeamName" parameters through the pipeline' {
|
|
BeforeAll {
|
|
$teamName = [Guid]::NewGuid().Guid
|
|
$description = 'Team Description'
|
|
|
|
$newGithubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamName = $teamName
|
|
}
|
|
|
|
$team = New-GitHubTeam @newGithubTeamParms
|
|
|
|
$updatedTeam = $team | Set-GitHubTeam -Description $description -PassThru
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$updatedTeam.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$updatedTeam.name | Should -Be $teamName
|
|
$updatedTeam.organization.login | Should -Be $OrganizationName
|
|
$updatedTeam.description | Should -Be $description
|
|
$updatedTeam.parent.name | Should -BeNullOrEmpty
|
|
$updatedTeam.created_at | Should -Not -BeNullOrEmpty
|
|
$updatedTeam.updated_at | Should -Not -BeNullOrEmpty
|
|
$updatedTeam.members_count | Should -Be 1
|
|
$updatedTeam.repos_count | Should -Be 0
|
|
$updatedTeam.TeamName | Should -Be $team.name
|
|
$updatedTeam.TeamId | Should -Be $updatedTeam.id
|
|
$updatedTeam.OrganizationName | Should -Be $organizationName
|
|
}
|
|
|
|
AfterAll {
|
|
if (Get-Variable -Name team -ErrorAction SilentlyContinue)
|
|
{
|
|
$team | Remove-GitHubTeam -Force
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Describe 'GitHubTeams\Rename-GitHubTeam' {
|
|
BeforeAll {
|
|
$organizationName = $script:organizationName
|
|
$teamName = [Guid]::NewGuid().Guid
|
|
$newTeamName = [Guid]::NewGuid().Guid
|
|
}
|
|
|
|
Context 'When renaming a GitHub team with the TeamName' {
|
|
BeforeAll {
|
|
$team = New-GitHubTeam -OrganizationName $organizationName -TeamName $teamName
|
|
$updatedTeam = Rename-GitHubTeam -OrganizationName $organizationName -TeamName $teamName -NewTeamName $newTeamName -PassThru
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$updatedTeam.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$updatedTeam.name | Should -Be $newTeamName
|
|
$updatedTeam.organization.login | Should -Be $OrganizationName
|
|
$updatedTeam.description | Should -BeNullOrEmpty
|
|
$updatedTeam.parent.name | Should -BeNullOrEmpty
|
|
$updatedTeam.created_at | Should -Not -BeNullOrEmpty
|
|
$updatedTeam.updated_at | Should -Not -BeNullOrEmpty
|
|
$updatedTeam.members_count | Should -Be 1
|
|
$updatedTeam.repos_count | Should -Be 0
|
|
$updatedTeam.TeamName | Should -Be $updatedTeam.name
|
|
$updatedTeam.TeamId | Should -Be $updatedTeam.id
|
|
$updatedTeam.OrganizationName | Should -Be $organizationName
|
|
}
|
|
|
|
It 'Should find the renamed team' {
|
|
{ Get-GitHubTeam -OrganizationName $organizationName -TeamName $newTeamName } |
|
|
Should -Not -Throw
|
|
}
|
|
|
|
AfterAll {
|
|
Remove-GitHubTeam -OrganizationName $organizationName -TeamName $newTeamName -Force
|
|
}
|
|
}
|
|
|
|
Context 'When renaming a GitHub team with the TeamSlug' {
|
|
BeforeAll {
|
|
$team = New-GitHubTeam -OrganizationName $organizationName -TeamName $teamName
|
|
$updatedTeam = Rename-GitHubTeam -OrganizationName $organizationName -TeamSlug $team.slug -NewTeamName $newTeamName -PassThru
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$updatedTeam.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$updatedTeam.name | Should -Be $newTeamName
|
|
$updatedTeam.organization.login | Should -Be $OrganizationName
|
|
$updatedTeam.description | Should -BeNullOrEmpty
|
|
$updatedTeam.parent.name | Should -BeNullOrEmpty
|
|
$updatedTeam.created_at | Should -Not -BeNullOrEmpty
|
|
$updatedTeam.updated_at | Should -Not -BeNullOrEmpty
|
|
$updatedTeam.members_count | Should -Be 1
|
|
$updatedTeam.repos_count | Should -Be 0
|
|
$updatedTeam.TeamName | Should -Be $updatedTeam.name
|
|
$updatedTeam.TeamId | Should -Be $updatedTeam.id
|
|
$updatedTeam.OrganizationName | Should -Be $organizationName
|
|
}
|
|
|
|
It 'Should find the renamed team' {
|
|
{ Get-GitHubTeam -OrganizationName $organizationName -TeamName $newTeamName } |
|
|
Should -Not -Throw
|
|
}
|
|
|
|
AfterAll {
|
|
Remove-GitHubTeam -OrganizationName $organizationName -TeamName $newTeamName -Force
|
|
}
|
|
}
|
|
|
|
Context 'When renaming a GitHub team with the TeamSlug on the pipeline' {
|
|
BeforeAll {
|
|
$team = New-GitHubTeam -OrganizationName $organizationName -TeamName $teamName
|
|
$updatedTeam = $team | Rename-GitHubTeam -NewTeamName $newTeamName -PassThru
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$updatedTeam.PSObject.TypeNames[0] | Should -Be 'GitHub.Team'
|
|
$updatedTeam.name | Should -Be $newTeamName
|
|
$updatedTeam.organization.login | Should -Be $OrganizationName
|
|
$updatedTeam.description | Should -BeNullOrEmpty
|
|
$updatedTeam.parent.name | Should -BeNullOrEmpty
|
|
$updatedTeam.created_at | Should -Not -BeNullOrEmpty
|
|
$updatedTeam.updated_at | Should -Not -BeNullOrEmpty
|
|
$updatedTeam.members_count | Should -Be 1
|
|
$updatedTeam.repos_count | Should -Be 0
|
|
$updatedTeam.TeamName | Should -Be $updatedTeam.name
|
|
$updatedTeam.TeamId | Should -Be $updatedTeam.id
|
|
$updatedTeam.OrganizationName | Should -Be $organizationName
|
|
}
|
|
|
|
It 'Should find the renamed team' {
|
|
{ Get-GitHubTeam -OrganizationName $organizationName -TeamName $newTeamName } |
|
|
Should -Not -Throw
|
|
}
|
|
|
|
AfterAll {
|
|
Remove-GitHubTeam -OrganizationName $organizationName -TeamName $newTeamName -Force
|
|
}
|
|
}
|
|
}
|
|
|
|
Describe 'GitHubTeams\Remove-GitHubTeam' {
|
|
BeforeAll {
|
|
$organizationName = $script:organizationName
|
|
}
|
|
|
|
Context 'When removing a GitHub team with the TeamName' {
|
|
BeforeAll {
|
|
$teamName = [Guid]::NewGuid().Guid
|
|
|
|
$team = New-GitHubTeam -OrganizationName $organizationName -TeamName $teamName
|
|
}
|
|
|
|
It 'Should not throw an exception' {
|
|
$removeGitHubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamName = $teamName
|
|
Confirm = $false
|
|
}
|
|
|
|
{ Remove-GitHubTeam @RemoveGitHubTeamParms } | Should -Not -Throw
|
|
}
|
|
|
|
It 'Should have removed the team' {
|
|
{ Get-GitHubTeam -OrganizationName $organizationName -TeamName $teamName } |
|
|
Should -Throw
|
|
}
|
|
}
|
|
|
|
Context 'When removing a GitHub team with the TeamSlug' {
|
|
BeforeAll {
|
|
$teamName = [Guid]::NewGuid().Guid
|
|
|
|
$team = New-GitHubTeam -OrganizationName $organizationName -TeamName $teamName
|
|
}
|
|
|
|
It 'Should not throw an exception' {
|
|
$removeGitHubTeamParms = @{
|
|
OrganizationName = $organizationName
|
|
TeamSlug = $team.slug
|
|
Confirm = $false
|
|
}
|
|
|
|
{ Remove-GitHubTeam @RemoveGitHubTeamParms } | Should -Not -Throw
|
|
}
|
|
|
|
It 'Should have removed the team' {
|
|
{ Get-GitHubTeam -OrganizationName $organizationName -TeamSlug $team.slug } |
|
|
Should -Throw
|
|
}
|
|
}
|
|
|
|
Context 'When removing a GitHub team with the TeamSlug on the pipeline' {
|
|
BeforeAll {
|
|
$teamName = [Guid]::NewGuid().Guid
|
|
|
|
$team = New-GitHubTeam -OrganizationName $organizationName -TeamName $teamName
|
|
}
|
|
|
|
It 'Should not throw an exception' {
|
|
{ $team | Remove-GitHubTeam -Force } | Should -Not -Throw
|
|
}
|
|
|
|
It 'Should have removed the team' {
|
|
{ $team | Get-GitHubTeam } | Should -Throw
|
|
}
|
|
}
|
|
}
|
|
|
|
Describe 'GitHubTeams\Get-GitHubTeamMember' {
|
|
BeforeAll {
|
|
$organizationName = $script:organizationName
|
|
$teamName = [Guid]::NewGuid().Guid
|
|
$team = New-GitHubTeam -OrganizationName $organizationName -TeamName $teamName
|
|
}
|
|
|
|
AfterAll {
|
|
$team | Remove-GitHubTeam -Force
|
|
}
|
|
|
|
Context 'Getting team members using TeamName' {
|
|
BeforeAll {
|
|
$members = @(Get-GitHubTeamMember -OrganizationName $organizationName -TeamName $teamName)
|
|
}
|
|
|
|
It 'Should have the expected type number of members' {
|
|
$members.Count | Should -Be 1
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$members[0].PSObject.TypeNames[0] | Should -Be 'GitHub.User'
|
|
}
|
|
}
|
|
|
|
Context 'Getting team members using TeamSlug' {
|
|
BeforeAll {
|
|
$members = @(Get-GitHubTeamMember -OrganizationName $organizationName -TeamSlug $team.slug)
|
|
}
|
|
|
|
It 'Should have the expected type number of members' {
|
|
$members.Count | Should -Be 1
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$members[0].PSObject.TypeNames[0] | Should -Be 'GitHub.User'
|
|
}
|
|
}
|
|
|
|
Context 'Getting team members using TeamSlug on the pipeline' {
|
|
BeforeAll {
|
|
$members = @($team | Get-GitHubTeamMember)
|
|
}
|
|
|
|
It 'Should have the expected type number of members' {
|
|
$members.Count | Should -Be 1
|
|
}
|
|
|
|
It 'Should have the expected type and additional properties' {
|
|
$members[0].PSObject.TypeNames[0] | Should -Be 'GitHub.User'
|
|
}
|
|
}
|
|
}
|
|
|
|
AfterAll {
|
|
if (Test-Path -Path $script:originalConfigFile -PathType Leaf)
|
|
{
|
|
# Restore the user's configuration to its pre-test state
|
|
Restore-GitHubConfiguration -Path $script:originalConfigFile
|
|
$script:originalConfigFile = $null
|
|
}
|
|
}
|