From bfb09b324d295bd4f0dd349f8c8e9f6b79d68595 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mia=20M=C3=B6bes?= <mia_moebes@gmx.de> Date: Fri, 9 Jul 2021 16:03:43 +0200 Subject: [PATCH] Pester-Tests auf APIv05_1 aktualisiert --- Beispielprojekt/Connect-Webservice.ps1 | 2 +- PesterTests/MailAdm-Doku.Tests.ps1 | 85 ++++++++++++++++++-------- PesterTests/distributionlist.ps1 | 30 +++++---- PesterTests/mailaccounts.ps1 | 9 ++- 4 files changed, 85 insertions(+), 41 deletions(-) diff --git a/Beispielprojekt/Connect-Webservice.ps1 b/Beispielprojekt/Connect-Webservice.ps1 index 544e0cc..1e0f89d 100644 --- a/Beispielprojekt/Connect-Webservice.ps1 +++ b/Beispielprojekt/Connect-Webservice.ps1 @@ -11,7 +11,7 @@ function Connect-WebService # Verbinden mit dem WebServices $Cred = New-Object System.Management.Automation.PSCredential -ArgumentList $Username, $PwdSecureString # Mit API verbinden - $uri = "https://ws.rc.rwth-ad.de/ex-cache-ws/APIv04.asmx?WSDL" + $uri = "https://ws.rc.rwth-ad.de/ex-cache-ws/APIv05_1.asmx?WSDL" # Hier wird eine Do-Schleife verwendet, weil das verbinden mit dem ws.rwth-ad.de manchmal nicht klappt diff --git a/PesterTests/MailAdm-Doku.Tests.ps1 b/PesterTests/MailAdm-Doku.Tests.ps1 index df47a84..e8023d7 100644 --- a/PesterTests/MailAdm-Doku.Tests.ps1 +++ b/PesterTests/MailAdm-Doku.Tests.ps1 @@ -1,18 +1,18 @@ # These are the Pester Tests in order to demonstrate how the API works and -# reflects the following versions API04 MailADM 3.0.3 +# reflects the following versions API05_1 MailADM 3.0.4 # If you need further documentation please check our doku-portal [0] # or contact our IT-ServiceDesk (servicedesk@itc.rwth-aachen.de) -# [0] https://doc.itc.rwth-aachen.de/dosearchsite.action?queryString=MailAdm +# [0] https://help.itc.rwth-aachen.de/service/1jefzdccuvuch/article/31c9d912142143d0a9740fa5e55f9701 # initializing # connection settings -$user = "<Service Account>" # e.g. srv123456@rwth-ad.de -$password = "<Password>" -$uri = "https://ws.rwth-ad.de/ex-cache-ws/APIv04.asmx?wsDL" +$user = "srv129521@rwth-ad.de" # e.g. srv123456@rwth-ad.de +$password = "NT62o96Zg33oH6GFjh" +$uri = "https://ws.rwth-ad.de/ex-cache-ws/APIv05_1.asmx?wsDL" # set variables # please change the following variables -$existingUPN = "<existing user logon name>" # e.g. ab123456@mustereinrichtung.rwth-aachen.de +$existingUPN = "lg802991@mustereinrichtung.rwth-aachen.de" # e.g. ab123456@mustereinrichtung.rwth-aachen.de # these variables should work $Primarydomain = "mustereinrichtung.rwth-aachen.de" @@ -22,15 +22,15 @@ $existingfunctionalMailbox = "rudirentier@mustereinrichtung.rwth-aachen.de" $externalmailaddress = "hugo@mueller.de" $localpartpersonalmailmox = "hugodertierpfleger" $distributionlist = "zoo@mustereinrichtung.rwth-aachen.de" +$seconddistributionlist = "tiergehege@mustereinrichtung.rwth-aachen.de" $newdistributionmailaddress = "alletiere2@mustereinrichtung.rwth-aachen.de" $newmailaddress = "zebra@mustereinrichtung.rwth-aachen.de" # import functions -. .\connect.ps1 -. .\listquota.ps1 -. .\mailaccounts.ps1 -. .\distributionlist.ps1 - +. "C:\temp\MailADM-API\mailadm-api\PesterTests\connect.ps1" +. "C:\temp\MailADM-API\mailadm-api\PesterTests\listquota.ps1" +. "C:\temp\MailADM-API\mailadm-api\PesterTests\mailaccounts.ps1" +. "C:\temp\MailADM-API\mailadm-api\PesterTests\distributionlist.ps1" @@ -66,7 +66,7 @@ Describe "MailAdm-Doku" { It "Remove-Mailboxinvitation: dummy test in order to remove all invitations to get a defined infrastructure" { $result = remove-allmailboxinvitation -webserviceconnection $global:ws - # check if alll invitations could be deleted + # check if all invitations could be deleted $invitations = get-mailboxinvitations -webserviceconnection $global:ws $invitations.count | should -Be 0 } @@ -76,6 +76,7 @@ Describe "MailAdm-Doku" { $givenname = "Hugo" $primaryMailaddress = "$localpartpersonalmailmox@$Primarydomain" $MailaddressAliasList = @() + $DistributionGroupAddresses = @() $quota = 10 # Mailboxtype: # 0 : personal mailbox @@ -90,7 +91,7 @@ Describe "MailAdm-Doku" { $quotapool = get-quotapool -Domain mustereinrichtung.rwth-aachen.de -WebServiceConnection $global:ws [int32]$quotapoolid = $quotapool[0].id - $invitation = add-mailboxinvitation -webserviceconnection $global:ws -quotaPoolID $quotapoolid -primaryEMailAddress $primaryMailaddress -givenname $givenname -Surname $surname -QuotaInMB $quota -Aliasaddresses $MailaddressAliasList -Mailboxtype $Mailboxtype -DeliverToMailBoxAndforward $DeliverMailboxAndForward -ForwardingEmailaddress $ForwardingEmailaddress -Owner $Owner + $invitation = add-mailboxinvitation -webserviceconnection $global:ws -quotaPoolID $quotapoolid -primaryEMailAddress $primaryMailaddress -givenname $givenname -surname $Surname -QuotaInMB $quota -Aliasaddresses $MailaddressAliasList -DistributionGroupAddresses $DistributionGroupAddresses -Mailboxtype $Mailboxtype -DeliverToMailBoxAndforward $DeliverMailboxAndForward -ForwardingEmailaddress $ForwardingEmailaddress -Owner $Owner $invitation.returncode | should -Be 0 } @@ -99,6 +100,7 @@ Describe "MailAdm-Doku" { $givenname = "" $primaryMailaddress = "zooleitung@$Primarydomain" $MailaddressAliasList = @() + $DistributionGroupAddresses = @() $quota = 10 # Mailboxtype: # 0 : personal mailbox @@ -113,7 +115,7 @@ Describe "MailAdm-Doku" { $quotapool = get-quotapool -Domain mustereinrichtung.rwth-aachen.de -WebServiceConnection $global:ws $quotapoolid = $quotapool[0].id - $invitation = add-mailboxinvitation -webserviceconnection $global:ws -quotaPoolID $quotapoolid -primaryEMailAddress $primaryMailaddress -givenname $givenname -Surname $surname -QuotaInMB $quota -Aliasaddresses $MailaddressAliasList -Mailboxtype $Mailboxtype -DeliverToMailBoxAndforward $DeliverMailboxAndForward -ForwardingEmailaddress $ForwardingEmailaddress -Owner $Owner + $invitation = add-mailboxinvitation -webserviceconnection $global:ws -quotaPoolID $quotapoolid -primaryEMailAddress $primaryMailaddress -givenname $givenname -Surname $surname -QuotaInMB $quota -Aliasaddresses $MailaddressAliasList -DistributionGroupAddresses $DistributionGroupAddresses -Mailboxtype $Mailboxtype -DeliverToMailBoxAndforward $DeliverMailboxAndForward -ForwardingEmailaddress $ForwardingEmailaddress -Owner $Owner $invitation.returncode | should -Be 0 } @@ -122,6 +124,7 @@ Describe "MailAdm-Doku" { $givenname = "" $primaryMailaddress = "eisbaergehege@$Primarydomain" $MailaddressAliasList = @() + $DistributionGroupAddresses = @() $quota = 10 # Mailboxtype: # 0 : personal mailbox @@ -136,7 +139,7 @@ Describe "MailAdm-Doku" { $quotapool = get-quotapool -Domain mustereinrichtung.rwth-aachen.de -WebServiceConnection $global:ws $quotapoolid = $quotapool[0].id - $invitation = add-mailboxinvitation -webserviceconnection $global:ws -quotaPoolID $quotapoolid -primaryEMailAddress $primaryMailaddress -givenname $givenname -Surname $surname -QuotaInMB $quota -Aliasaddresses $MailaddressAliasList -Mailboxtype $Mailboxtype -DeliverToMailBoxAndforward $DeliverMailboxAndForward -ForwardingEmailaddress $ForwardingEmailaddress -Owner $Owner + $invitation = add-mailboxinvitation -webserviceconnection $global:ws -quotaPoolID $quotapoolid -primaryEMailAddress $primaryMailaddress -givenname $givenname -Surname $surname -QuotaInMB $quota -Aliasaddresses $MailaddressAliasList -DistributionGroupAddresses $DistributionGroupAddresses -Mailboxtype $Mailboxtype -DeliverToMailBoxAndforward $DeliverMailboxAndForward -ForwardingEmailaddress $ForwardingEmailaddress -Owner $Owner $invitation.returncode | should -Be 0 } @@ -145,6 +148,7 @@ Describe "MailAdm-Doku" { $givenname = "" $primaryMailaddress = "knutsspielzeug@$Primarydomain" $MailaddressAliasList = @() + $DistributionGroupAddresses = @() $quota = 10 # Mailboxtype: # 0 : personal mailbox @@ -159,7 +163,7 @@ Describe "MailAdm-Doku" { $quotapool = get-quotapool -Domain mustereinrichtung.rwth-aachen.de -WebServiceConnection $global:ws $quotapoolid = $quotapool[0].id - $invitation = add-mailboxinvitation -webserviceconnection $global:ws -quotaPoolID $quotapoolid -primaryEMailAddress $primaryMailaddress -givenname $givenname -Surname $surname -QuotaInMB $quota -Aliasaddresses $MailaddressAliasList -Mailboxtype $Mailboxtype -DeliverToMailBoxAndforward $DeliverMailboxAndForward -ForwardingEmailaddress $ForwardingEmailaddress -Owner $Owner + $invitation = add-mailboxinvitation -webserviceconnection $global:ws -quotaPoolID $quotapoolid -primaryEMailAddress $primaryMailaddress -givenname $givenname -Surname $surname -QuotaInMB $quota -Aliasaddresses $MailaddressAliasList -DistributionGroupAddresses $DistributionGroupAddresses -Mailboxtype $Mailboxtype -DeliverToMailBoxAndforward $DeliverMailboxAndForward -ForwardingEmailaddress $ForwardingEmailaddress -Owner $Owner $invitation.returncode | should -Be 0 } @@ -203,10 +207,14 @@ Describe "MailAdm-Doku" { } #> +<# + + # Es gibt in Version 05_1 keine Moeglichkeit mehr, Weiterleitungsadressen zu konfigurieren. It "change: forwardingaddress" { $result = change-mailboxforwardingaddress -webserviceconnection $global:ws -mailbox $existingfunctionalMailbox -newforwardingmailaddress $externalmaladdress $result | should -Be $true } +#> It "change: emailaddresses" { $result = change-emailaddresses -webserviceconnection $global:ws -mailbox $existingPersonalMailaccount -primaryEmailaddress $existingPersonalMailaccount -secondaryemailaddress $newmailaddress @@ -223,9 +231,9 @@ Describe "MailAdm-Doku" { # get mailboxinformation $mailboxes = $global:ws.getMailboxList() - $mailboxtochange = $mailboxes | ? { $_.emailaddress -like $existingfunctionalMailbox } + $mailboxtochange = $mailboxes | Where-Object { $_.emailaddress -like $existingfunctionalMailbox } $quotapoolIds = get-quotapool -Domain $Primarydomain -WebserviceConnection $global:ws - $quotapoolid = ($quotapoolIds | ? { $_.id -ne $($mailboxtochange.quotapool.id) } | select -first 1).id + $quotapoolid = ($quotapoolIds | Where-Object { $_.id -ne $($mailboxtochange.quotapool.id) } | Select-Object -first 1).id $result = change-mailboxquotapool -webserviceconnection $global:ws -mailbox $($mailboxtochange.upn) -newquotapool $quotapoolid $result | should -Be $true @@ -261,6 +269,8 @@ Describe "MailAdm-Doku" { # 1 Funktionsaccount (in Exchange: UserMailbox) # 2 RoomMailbox # 3 EquipmentMailbox + # Der Vollzugriff ist eine notwendige Voraussetzung für das Wandeln in eine Ressourcen-Mailbox + change-addfullaccesspermission -webserviceconnection $global:ws -mailbox $existingfunctionalMailbox -user $existingPersonalMailaccount $upn = "fkt_$existingfunctionalmailbox" $result = change-mailboxtype -webserviceConnection $global:ws -upn $upn -newmailboxtype 2 $result | should -Be $true @@ -295,13 +305,21 @@ Describe "MailAdm-Doku" { # 3 EquipmentMailbox $upn = "fkt_$existingfunctionalmailbox" $result = change-mailboxtype -webserviceConnection $global:ws -upn $upn -newmailboxtype 0 + # Der Vollzugriff wird für den nächsten Skriptdurchlauf entfernt + change-removefullaccesspermission -webserviceconnection $global:ws -mailbox $existingfunctionalMailbox -user $existingPersonalMailaccount $result | should -Be $false } It "create: distribution list" { $displayname = "Zoo" - $distributionlist = create-distributionlist -WebserviceConnection $global:ws -displayname $displayname -mailaddress $distributionlist - $distributionlist | should -Be 0 + $dl = create-distributionlist -WebserviceConnection $global:ws -displayname $displayname -mailaddress $distributionlist + $dl | should -Be 0 + } + + It "create: second distribution list" { + $secondlistdisplayname = "Tiergehege" + $dl = create-distributionlist -WebserviceConnection $global:ws -displayname $secondlistdisplayname -mailaddress $seconddistributionlist + $dl | should -Be 0 } It "Get distribution list" { @@ -325,23 +343,38 @@ Describe "MailAdm-Doku" { $result | should -Be $true } - It "cahnge: Distributionlist Mailaddress" { + It "change: Distributionlist Mailaddress" { $result = change-distributionlistemailaddresses -WebserviceConnection $global:ws -mailaddress $distributionlist -newmailaddress $newdistributionmailaddress $($result.Returncode) | should -Be 0 } - It "add member to distributionlist" { - $result = add-distributiongroupmember -WebserviceConnection $global:ws -distributionlist $distributionlist -newmember $existingfunctionalMailbox + It "add member mailbox to distributionlist" { + $result = add-distributiongroupmember -WebserviceConnection $global:ws -maillistEMail $distributionlist -newmember $existingfunctionalMailbox + $result.Returncode | Should -Be 0 + } + + It "add member maillist to distributionlist" { + $result = add-distributiongroupmember -WebserviceConnection $global:ws -maillistEMail $distributionlist -newmember $seconddistributionlist $result.Returncode | Should -Be 0 } - It "remove member from distributionlist" { - $result = remove-distributiongroupmember -WebserviceConnection $global:ws -distributionlist $distributionlist -member $existingfunctionalMailbox + It "remove member mailbox from distributionlist" { + $result = remove-distributiongroupmember -WebserviceConnection $global:ws -maillistEMail $distributionlist -member $existingfunctionalMailbox + $result.ReturnCode | Should -Be 0 + } + + It "remove member maillist from distributionlist" { + $result = remove-distributiongroupmember -WebserviceConnection $global:ws -maillistEMail $distributionlist -member $seconddistributionlist $result.ReturnCode | Should -Be 0 } - It "delete distribution list" { + It "delete first distribution list" { $result = remove-distributionlist -WebserviceConnection $global:ws -mailaddress $distributionlist $result | Should -Be $true } + + It "delete second distribution list" { + $result = remove-distributionlist -WebserviceConnection $global:ws -mailaddress $seconddistributionlist + $result | Should -Be $true + } } \ No newline at end of file diff --git a/PesterTests/distributionlist.ps1 b/PesterTests/distributionlist.ps1 index 12991cd..51fc0af 100644 --- a/PesterTests/distributionlist.ps1 +++ b/PesterTests/distributionlist.ps1 @@ -13,7 +13,7 @@ function get-distributionlist { param ($WebserviceConnection, $mailaddress) $distributionlists = $WebserviceConnection.getMailLists() - $distributionlist = $distributionlists | ? { $_.emailaddress -match $mailaddress } + $distributionlist = $distributionlists | Where-Object { $_.emailaddress -match $mailaddress } $distributionlist } @@ -23,9 +23,9 @@ function remove-distributionlist { param ($WebserviceConnection, $mailaddress) $distributionlists = $WebserviceConnection.getMailLists() - $distributionlist = $distributionlists | ? { $_.emailaddress -match "Zoo@mustereinrichtung.rwth-aachen.de" } + $groupSamAccountName = $distributionlists | Where-Object { $_.emailaddress -match $mailaddress } - $result = $WebserviceConnection.RemoveMailList($distributionlist.SamAccountName) + $result = $WebserviceConnection.RemoveMailList($groupSamAccountName.SamAccountName) $result } @@ -73,22 +73,30 @@ function change-distributionlistdisplayname { function add-distributiongroupmember { [CmdletBinding()] - param ($WebserviceConnection, $distributionlist, $newmember) + param ($WebserviceConnection, $maillistEMail, $newmember) - $mailboxes = $webserviceconnection.getMailboxList() - $mailbox = $mailboxes | ? { $_.emailaddress -like $newmember } + $global:mailboxes = $webserviceconnection.getMailboxList() + $global:SamAccountName = $mailboxes | Where-Object {$_.emailaddress -like $newmember} | Select-Object -Property SamAccountName + if (!($mailboxes | Where-Object {$_.emailaddress -like $newmember})){ + $global:maillists = $WebserviceConnection.getMailLists() + $global:SamAccountName = $maillists | Where-Object {$_.emailaddress -like $newmember} | Select-Object -Property SamAccountName + } - $result = $WebserviceConnection.addMailboxToMaillist($distributionlist, $mailbox.upn) + $result = $WebserviceConnection.addMemberToMaillist($maillistEMail, $SamAccountName.SamAccountName) $result } function remove-distributiongroupmember { [CmdletBinding()] - param ($WebserviceConnection, $distributionlist, $member) + param ($WebserviceConnection, $maillistEMail, $member) - $mailboxes = $webserviceconnection.getMailboxList() - $mailbox = $mailboxes | ? { $_.emailaddress -like $member } + $global:mailboxes = $webserviceconnection.getMailboxList() + $global:SamAccountName = $mailboxes | Where-Object {$_.emailaddress -like $member} | Select-Object -Property SamAccountName + if (!($mailboxes | Where-Object {$_.emailaddress -like $member})){ + $global:maillists = $WebserviceConnection.getMailLists() + $global:SamAccountName = $maillists | Where-Object {$_.emailaddress -like $member} | Select-Object -Property SamAccountName + } - $result = $WebserviceConnection.RemoveMailboxFromMaillist($distributionlist, $mailbox.upn) + $result = $WebserviceConnection.RemoveMemberFromMaillist($maillistEMail, $SamAccountName.SamAccountName) $result } \ No newline at end of file diff --git a/PesterTests/mailaccounts.ps1 b/PesterTests/mailaccounts.ps1 index 530ef7e..519f469 100644 --- a/PesterTests/mailaccounts.ps1 +++ b/PesterTests/mailaccounts.ps1 @@ -18,9 +18,9 @@ function get-mailbox { function add-mailboxinvitation { [CmdletBinding()] - param ($webserviceconnection, $quotaPoolID, $primaryEMailAddress, $givenname, $Surname, $QuotaInMB, $Aliasaddresses, $Mailboxtype, $DeliverToMailBoxAndforward, $ForwardingEmailaddress, $Owner) + param ($webserviceconnection, $quotaPoolID, $primaryEMailAddress, $givenname, $Surname, $QuotaInMB, $Aliasaddresses, $DistributionGroupAddresses, $Mailboxtype, $DeliverToMailBoxAndforward, $ForwardingEmailaddress, $Owner) - $invitation = $webserviceconnection.CreateMailaccountInvitation($quotaPoolID, $primaryEMailAddress, $givenname, $Surname, $QuotaInMB, $Aliasaddresses, $Mailboxtype, $DeliverToMailBoxAndforward, $ForwardingEmailaddress, $Owner) + $invitation = $webserviceconnection.CreateMailaccountInvitation($quotaPoolID, $primaryEMailAddress, $givenname, $Surname, $QuotaInMB, $Aliasaddresses, $DistributionGroupAddresses, $Mailboxtype, $DeliverToMailBoxAndforward, $ForwardingEmailaddress, $Owner) $invitation } @@ -65,6 +65,8 @@ function reconnect-mailbox { $result } +<# +# Es gibt in Version 05_1 keine Moeglichkeit mehr, Weiterleitungsadressen zu konfigurieren. function change-mailboxforwardingaddress { [cmdletbinding()] param($webserviceconnection, $mailbox, $newforwardingmailaddress) @@ -73,6 +75,7 @@ function change-mailboxforwardingaddress { $result = $webserviceconnection.setMailForwarding($mailboxtochange.upn, $true, $newforwardingmailaddress) $result } +#> function change-mailboxquota { @@ -121,7 +124,7 @@ function change-mailboxdisplayname { $mailboxes = $webserviceconnection.getMailboxList() $mailboxtochange = $mailboxes | ? { $_.emailaddress -like $mailbox } - $result = $webserviceconnection.SetRessourceMailboxDisplayName($mailboxtochange.upn, $newdisplayname) + $result = $webserviceconnection.SetMailboxDisplayName($mailboxtochange.upn, $newdisplayname) $result } -- GitLab