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
4 changes: 2 additions & 2 deletions Test/public/getRepoAccess.test.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ function Test_GetRepoAccessAll_SUCCESS{

$result = Get-RepoAccess -owner $owner -repo $repo

Assert-AreEqual -Expected $result.raulgeu -Presented 'write'
Assert-AreEqual -Expected $result.raulgeu -Presented 'write (invitation Pending)'
Assert-AreEqual -Expected $result.MagnusTim -Presented 'admin'
Assert-AreEqual -Expected $result.rulasg -Presented 'admin'
Assert-AreEqual -Expected $result.raulgeukk -Presented 'write'
Expand Down Expand Up @@ -46,7 +46,7 @@ function Test_GetRepoAccess_Success_FromInvites{

$result = Get-RepoAccess -Owner $owner -Repo $repo

Assert-AreEqual -Expected 'write' -Presented $result.$user
Assert-AreEqual -Expected 'write (invitation Pending)' -Presented $result.$user
}


Expand Down
4 changes: 2 additions & 2 deletions Test/public/getRepoAccessInvitation.test.ps1
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
function Test_GetRepoInvitations_SUCCESS{

$owner = 'solidifycustomers' ; $repo = 'bit21' ; $user = 'raulgeu' ; $role = 'write'
$owner = 'solidifycustomers' ; $repo = 'bit21' ; $user = 'raulgeu' ; $role = 'write'

Check warning

Code scanning / PSScriptAnalyzer

The variable 'role' is assigned but never used. Warning

The variable 'role' is assigned but never used.

$GetAccessAllSuccess = $PSScriptRoot | Join-Path -ChildPath 'testData' -AdditionalChildPath 'getAccessInvitationsSuccess.json'
Set-InvokeCommandMock -Alias "gh api repos/$owner/$repo/invitations --paginate" -Command "Get-Content -Path $(($GetAccessAllSuccess | Get-Item).FullName)"

$result = Get-RepoAccessInvitations -owner $owner -repo $repo

Assert-AreEqual -Expected $result.$user -Presented $role
Assert-AreEqual -Expected $result.$user -Presented "write (invitation Pending)"
}

function Test_GetRepoInvitations_SUCCESS_Ids{
Expand Down
18 changes: 9 additions & 9 deletions Test/public/getRepoAccessTeam.Test.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,16 @@ Test_GetRepoAccessTeam_Success{
Assert-Contains -Presented $result -Expected "| Photo | Name | Access | Email | Handle | Company |"
Assert-Contains -Presented $result -Expected "|----------------------------|--------|----------|---------|--------|------------|"

Assert-Contains -Presented $result -Expected '| <img alt="" width="100" height="100" class="avatar width-full height-full avatar-before-user-status" src="https://avatars.githubusercontent.com/MagnusTim"> | Magnus Timner | admin | MagnusTim@github.com | [@MagnusTim](https://https://github.com/MagnusTim) | Contoso |'
Assert-Contains -Presented $result -Expected '| <img alt="" width="100" height="100" class="avatar width-full height-full avatar-before-user-status" src="https://avatars.githubusercontent.com/rulasg"> | Raul Gonzalez | admin | rulasg@github.com | [@rulasg](https://https://github.com/rulasg) | Contoso |'
Assert-Contains -Presented $result -Expected '| <img alt="" width="100" height="100" class="avatar width-full height-full avatar-before-user-status" src="https://avatars.githubusercontent.com/raulgeukk"> | Raul Dibildos kk | write | raulgeukk@github.com | [@raulgeukk](https://https://github.com/raulgeukk) | Contoso |'
Assert-Contains -Presented $result -Expected '| <img alt="" width="100" height="100" class="avatar width-full height-full avatar-before-user-status" src="https://avatars.githubusercontent.com/raulgeu"> | Raul Dibildos | write | raulgeu@github.com | [@raulgeu](https://https://github.com/raulgeu) | Contoso |'
Assert-Contains -Presented $result -Expected '| <img alt="" width="100" height="100" class="avatar width-full height-full avatar-before-user-status" src="https://avatars.githubusercontent.com/MagnusTim"> | Magnus Timner | admin | MagnusTim@github.com | [@MagnusTim](https://github.com/MagnusTim) | Contoso |'
Assert-Contains -Presented $result -Expected '| <img alt="" width="100" height="100" class="avatar width-full height-full avatar-before-user-status" src="https://avatars.githubusercontent.com/rulasg"> | Raul Gonzalez | admin | rulasg@github.com | [@rulasg](https://github.com/rulasg) | Contoso |'
Assert-Contains -Presented $result -Expected '| <img alt="" width="100" height="100" class="avatar width-full height-full avatar-before-user-status" src="https://avatars.githubusercontent.com/raulgeukk"> | Raul Dibildos kk | write | raulgeukk@github.com | [@raulgeukk](https://github.com/raulgeukk) | Contoso |'
Assert-Contains -Presented $result -Expected '| <img alt="" width="100" height="100" class="avatar width-full height-full avatar-before-user-status" src="https://avatars.githubusercontent.com/raulgeu"> | Raul Dibildos | write (invitation Pending) | raulgeu@github.com | [@raulgeu](https://github.com/raulgeu) | Contoso |'

# Assert Sorted by Access
Assert-IsTrue -Condition ($result[2] -like '*| admin |*' )
Assert-IsTrue -Condition ($result[3] -like '*| admin |*' )
Assert-IsTrue -Condition ($result[4] -like '*| write |*' )
Assert-IsTrue -Condition ($result[5] -like '*| write |*' )
Assert-IsTrue -Condition ($result[5] -like '*| write (invitation Pending) |*' )
}

function Test_GetRepoAccessTeam_Success_NoHead{
Expand All @@ -59,8 +59,8 @@ function Test_GetRepoAccessTeam_Success_NoHead{

Assert-Count -Expected 4 -Presented $result

Assert-Contains -Presented $result -Expected '| <img alt="" width="100" height="100" class="avatar width-full height-full avatar-before-user-status" src="https://avatars.githubusercontent.com/MagnusTim"> | Magnus Timner | admin | MagnusTim@github.com | [@MagnusTim](https://https://github.com/MagnusTim) | Contoso |'
Assert-Contains -Presented $result -Expected '| <img alt="" width="100" height="100" class="avatar width-full height-full avatar-before-user-status" src="https://avatars.githubusercontent.com/rulasg"> | Raul Gonzalez | admin | rulasg@github.com | [@rulasg](https://https://github.com/rulasg) | Contoso |'
Assert-Contains -Presented $result -Expected '| <img alt="" width="100" height="100" class="avatar width-full height-full avatar-before-user-status" src="https://avatars.githubusercontent.com/raulgeukk"> | Raul Dibildos kk | write | raulgeukk@github.com | [@raulgeukk](https://https://github.com/raulgeukk) | Contoso |'
Assert-Contains -Presented $result -Expected '| <img alt="" width="100" height="100" class="avatar width-full height-full avatar-before-user-status" src="https://avatars.githubusercontent.com/raulgeu"> | Raul Dibildos | write | raulgeu@github.com | [@raulgeu](https://https://github.com/raulgeu) | Contoso |'
Assert-Contains -Presented $result -Expected '| <img alt="" width="100" height="100" class="avatar width-full height-full avatar-before-user-status" src="https://avatars.githubusercontent.com/MagnusTim"> | Magnus Timner | admin | MagnusTim@github.com | [@MagnusTim](https://github.com/MagnusTim) | Contoso |'
Assert-Contains -Presented $result -Expected '| <img alt="" width="100" height="100" class="avatar width-full height-full avatar-before-user-status" src="https://avatars.githubusercontent.com/rulasg"> | Raul Gonzalez | admin | rulasg@github.com | [@rulasg](https://github.com/rulasg) | Contoso |'
Assert-Contains -Presented $result -Expected '| <img alt="" width="100" height="100" class="avatar width-full height-full avatar-before-user-status" src="https://avatars.githubusercontent.com/raulgeukk"> | Raul Dibildos kk | write | raulgeukk@github.com | [@raulgeukk](https://github.com/raulgeukk) | Contoso |'
Assert-Contains -Presented $result -Expected '| <img alt="" width="100" height="100" class="avatar width-full height-full avatar-before-user-status" src="https://avatars.githubusercontent.com/raulgeu"> | Raul Dibildos | write (invitation Pending) | raulgeu@github.com | [@raulgeu](https://github.com/raulgeu) | Contoso |'
}
4 changes: 2 additions & 2 deletions Test/public/syncRepoAccess.test.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ rulasg

Assert-AreEqual -Expected '=' -Presented $result.rulasg

Assert-AreEqual -Expected '+ (write)' -Presented $result.raulgeu
Assert-AreEqual -Expected '+ (write (invitation Pending))' -Presented $result.raulgeu

Assert-AreEqual -Expected '-' -Presented $result.MagnusTim

Expand Down Expand Up @@ -125,7 +125,7 @@ rulasg

Assert-AreEqual -Expected '=' -Presented $result.rulasg

Assert-AreEqual -Expected '+ (write)' -Presented $result.raulgeu
Assert-AreEqual -Expected '+ (write (invitation Pending))' -Presented $result.raulgeu

Assert-AreEqual -Expected '-' -Presented $result.MagnusTim

Expand Down
7 changes: 4 additions & 3 deletions public/getRepoAccess.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -66,16 +66,17 @@ function Get-RepoAccessUser{

if($permissions.$user -eq $role){
"Found user $user with access role $role" | Write-Verbose
return $permissions.$user
return $role
}

$invitations = Get-RepoAccessInvitations -Owner $owner -Repo $repo

"Found $($invitations.Count) users with invitations" | Write-Verbose

if($invitations.$user -eq $role){
# Invitation start with Role. Allow Pending tag
if($invitations.$user -Like "$role *"){
"Found user $user with invitation role $role" | Write-Verbose
return $invitations.$user
return $role
}

"User $user not found with access or invitation" | Write-Verbose
Expand Down
25 changes: 24 additions & 1 deletion public/getRepoAccessInvitation.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,36 @@
foreach ($item in $result) {

$ret += @{
$item.invitee.login = $Ids ? $result.id : $result.permissions
# return the id or the login of the permissions depending on Ids switch
$item.invitee.login = $Ids ? $result.id : $(Get-Permissions $result.permissions)
}
}

return $ret
} Export-ModuleMember -Function Get-RepoAccessInvitations

function Get-Permissions{
[CmdletBinding()]
param(
[Parameter(Mandatory,Position=0)][object]$Permissions
)

switch ($Permissions.Count) {
0 { $ret = $null }
1 { $ret = $Permissions }
{ $_ -gt 1 } { $ret = $Permissions[0] }

Default {
throw "This should not reach this issue"
}
}

$ret = $ret + " (invitation Pending)"

return $ret

}

function Remove-RepoAccessInvitation{
[CmdletBinding()]
param(
Expand Down
64 changes: 53 additions & 11 deletions public/getRepoAccessTeam.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
param(
[Parameter()] [string]$Owner,
[Parameter()] [string]$Repo,
[Parameter()] [switch]$NoHeaders
[Parameter()] [switch]$NoHeaders,
[Parameter()] [string]$Role
)

# Resolve repo name from parameters or environment
Expand All @@ -31,34 +32,75 @@
$ret += "|----------------------------|--------|----------|---------|--------|------------|"
}

$templateLine ="| {avatar} | {name} | {access} | {email} | [@{login}](https://https://github.com/{login}) | {company} |"
# Get access Control
$accessList = Get-RepoAccess -Owner $owner -Repo $repo


if($Role){
"Filtering by role: $Role" | Write-Verbose
$accessList = $accessList.GetEnumerator() | Where-Object { $_.Value -like "$Role*" }
}

# Sort by access
$accessList = $accessList.GetEnumerator() | Sort-Object -Property Value

# Create lines for each access
Foreach($access in $accessList){
$login = $access.Name
$value = $access.Value
# Foreach($access in $accessList){
# $login = $access.Name
# $value = $access.Value

# $templateLine ="| {avatar} | {name} | {access} | {email} | [@{login}](https://https://github.com/{login}) | {company} |"
# $user = Get-RepoUser -Login $login
# $avatar = '<img alt="" width="100" height="100" class="avatar width-full height-full avatar-before-user-status" src="https://avatars.githubusercontent.com/{login}">' -replace '{login}',$login

# $userline = $templateLine
# $userline = $userline -replace '{login}', $user.login
# $userline = $userline -replace '{avatar}', $avatar
# $userline = $userline -replace '{name}', $user.name
# $userline = $userline -replace '{access}', $value
# $userline = $userline -replace '{email}', $user.email
# $userline = $userline -replace '{company}', $user.company

# $ret+= $userline
# }

$ret+= $accessList | ForEach-Object {New-UserAccessLine -Login $_.Name -Access $_.Value}

return $ret
} Export-ModuleMember -Function Get-RepoAccessTeam

function New-UserAccessLine{

Check notice

Code scanning / PSScriptAnalyzer

The cmdlet 'New-UserAccessLine' does not have a help comment. Note

The cmdlet 'New-UserAccessLine' does not have a help comment.

Check warning

Code scanning / PSScriptAnalyzer

Function 'New-UserAccessLine' has verb that could change system state. Therefore, the function has to support 'ShouldProcess'. Warning

Function 'New-UserAccessLine' has verb that could change system state. Therefore, the function has to support 'ShouldProcess'.
[CmdletBinding()]
param(
[Parameter(Position=0,ValueFromPipeline)][string]$Login,
[Parameter(Position=1,ValueFromPipeline)][string]$Access
)

process{

$user = Get-RepoUser -Login $login

if($null -eq $user){
"Error: $login not found" | Write-Error
return
}

$user | Write-Verbose

$templateLine ="| {avatar} | {name} | {access} | {email} | [@{login}](https://github.com/{login}) | {company} |"

$avatar = '<img alt="" width="100" height="100" class="avatar width-full height-full avatar-before-user-status" src="https://avatars.githubusercontent.com/{login}">' -replace '{login}',$login

$userline = $templateLine
$userline = $userline -replace '{login}', $user.login
$userline = $userline -replace '{avatar}', $avatar
$userline = $userline -replace '{name}', $user.name
$userline = $userline -replace '{access}', $value
$userline = $userline -replace '{access}', $Access
$userline = $userline -replace '{email}', $user.email
$userline = $userline -replace '{company}', $user.company

$ret+= $userline
return $userline
}

return $ret
} Export-ModuleMember -Function Get-RepoAccessTeam
} Export-ModuleMember -Function New-UserAccessLine

function Get-RepoUser{
[CmdletBinding()]
Expand Down
2 changes: 1 addition & 1 deletion public/syncRepoAccess.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ function Sync-RepoAccess{
"Processing $user for role $role" | Write-Verbose

# Already invited to this role
if($invitations.$user -eq $role){
if($invitations.$user -Like "$role *"){
"User $user has an invitation pending" | Write-Verbose
$ret.$user = "?"
continue
Expand Down
Loading