diff --git a/PesterTests/MailAdm-Doku.Tests.ps1 b/PesterTests/MailAdm-Doku.Tests.ps1 index df47a840fe2359eb7706d73f419b0671f24bd2b2..dc8eb5de633af8301297a42ee4f7efe6bbe6a077 100644 --- a/PesterTests/MailAdm-Doku.Tests.ps1 +++ b/PesterTests/MailAdm-Doku.Tests.ps1 @@ -1,14 +1,14 @@ # 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" +$uri = "https://ws.rwth-ad.de/ex-cache-ws/APIv05_1.asmx?wsDL" # set variables # please change the following variables @@ -22,6 +22,7 @@ $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" @@ -33,7 +34,6 @@ $newmailaddress = "zebra@mustereinrichtung.rwth-aachen.de" - Describe "MailAdm-Doku" { It "Connection: Establish a connection with Webservice" { $global:ws = new-mailadmconnection -user $user -password $password -uri $uri @@ -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 12991cdf22ca3167ecd7fa5d308031f426006ced..51fc0afa0cdfbb4f014e5ff7f952dd726631e103 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 530ef7e89c99a69dbb80049ee978dc61ed038b2b..519f469c5bff9f6477db2d7d72e51edf16ef1ea0 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 } diff --git a/PesterTests/readme.md b/PesterTests/readme.md index b59733da91abf1c34ef6efe6679a0b42dd7e0f43..ab022ff4def770fd950b7c1976f18f1f5b2cdc13 100644 --- a/PesterTests/readme.md +++ b/PesterTests/readme.md @@ -7,7 +7,7 @@ Zur Nutzung der MailAdm API benötigen Sie einen Serviceaccount. Diesen können ## Projektinhalt -Das Projekt besteht aus dem Unerverzeichnis Demo, dass beispielhaft den in der API beritgestellten Funktionen zeigt. Hierbei beinhalten die einzelnen Datien folgende Themenblöcke: +Das Projekt besteht aus dem Unterverzeichnis Beispielprojekt, das beispielhaft die in der API bereitgestellten Funktionen zeigt. Hierbei beinhalten die einzelnen Datien folgende Themenblöcke: 1. connect.ps1 - Verbindungsaufbau zur API 2. listquota.ps1 @@ -20,8 +20,10 @@ Das Projekt besteht aus dem Unerverzeichnis Demo, dass beispielhaft den in der A ## Ausführung Im Verzeichnis PesterTests finden Sie entsprechende Unittests, um die Schnittstelle mit Ihrem Serviceaccount zu testen. Bitte passen Sie hierzu in der Datei MailAdm-Doku.Tests.ps1 den Bereich "connection settings" an. -Um die Tests zu starten, wechseln Sie mit in der Windows Powershell ins "Demo" Verzeichnis und starten Sie das Cmdlet invoke-pester +Um die Tests zu starten, wechseln Sie in der Windows Powershell ins "Beispielprojekt" Verzeichnis und starten Sie das Cmdlet invoke-pester ## Autoren -* **Thomas Pätzold** \ No newline at end of file +* **Thomas Pätzold** +* **Jannis Hahn** +* **Mia Möbes** \ No newline at end of file