From 13411136670bbb0c5cd6fe7c2e7cc15e167e55d1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?P=C3=A4tzold?= <ad006pa@win.rz.rwth-aachen.de>
Date: Wed, 8 Apr 2020 15:31:40 +0200
Subject: [PATCH] AdmAPI 3.0.3

---
 Demo/MailAdm-Doku.Tests.ps1 | 76 ++++++++++++++++++++++++++++++++-----
 Demo/mailaccounts.ps1       | 17 ++++++++-
 2 files changed, 83 insertions(+), 10 deletions(-)

diff --git a/Demo/MailAdm-Doku.Tests.ps1 b/Demo/MailAdm-Doku.Tests.ps1
index dfa0d74..df47a84 100644
--- a/Demo/MailAdm-Doku.Tests.ps1
+++ b/Demo/MailAdm-Doku.Tests.ps1
@@ -1,18 +1,20 @@
-# These are the Pester Tests in order to demonstrate how the API works
+# These are the Pester Tests in order to demonstrate how the API works and 
+# reflects the following versions API04 MailADM 3.0.3
+# 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
 
 # initializing
 # connection settings
-$user = "<MailAdm Serviceaccount>"
-$password = "<password>"
+$user = "<Service Account>" # e.g. srv123456@rwth-ad.de
+$password = "<Password>"
 $uri = "https://ws.rwth-ad.de/ex-cache-ws/APIv04.asmx?wsDL"
 
-# import functions
-. .\connect.ps1
-. .\listquota.ps1
-. .\mailaccounts.ps1
-. .\distributionlist.ps1
-
 # set variables
+# please change the following variables
+$existingUPN = "<existing user logon name>" # e.g. ab123456@mustereinrichtung.rwth-aachen.de
+
+# these variables should work
 $Primarydomain = "mustereinrichtung.rwth-aachen.de"
 $SecondaryDomain = ""
 $existingPersonalMailaccount = "paetzold@mustereinrichtung.rwth-aachen.de"
@@ -23,6 +25,15 @@ $distributionlist = "zoo@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
+
+
+
+
 Describe "MailAdm-Doku" {
     It "Connection: Establish a connection with Webservice" {
         $global:ws = new-mailadmconnection -user $user -password $password -uri $uri
@@ -48,6 +59,11 @@ Describe "MailAdm-Doku" {
         $mailaccounts.count | should -BeGreaterOrEqual 0
     }
 
+    It "get-mailbox: check for existing Logon Credentials and returns the corresponding Mailboxinformation" {
+        $mailaccount = get-mailbox -webserviceConnection $global:ws -upn $existingUPN
+        $mailaccount.count | should -Be 1
+    }
+
     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
@@ -240,6 +256,48 @@ Describe "MailAdm-Doku" {
         $result | should -Be $true
     }
 
+    It "change: Mailboxtype functional mailbox -> room mailbox" {
+        # 0	UserMailbox
+        # 1	Funktionsaccount (in Exchange: UserMailbox)
+        # 2	RoomMailbox
+        # 3	EquipmentMailbox
+        $upn = "fkt_$existingfunctionalmailbox"
+        $result = change-mailboxtype -webserviceConnection $global:ws -upn $upn -newmailboxtype 2
+        $result | should -Be $true
+
+    }
+    It "change: Mailboxtype room mailbox -> equipment mailbox" {
+        # 0	UserMailbox
+        # 1	Funktionsaccount (in Exchange: UserMailbox)
+        # 2	RoomMailbox
+        # 3	EquipmentMailbox
+        $upn = "fkt_$existingfunctionalmailbox"
+        $result = change-mailboxtype -webserviceConnection $global:ws -upn $upn -newmailboxtype 3
+        $result | should -Be $true
+
+    }
+
+    It "change: Mailboxtype equipment mailbox -> functional Mailbox" {
+        # 0	UserMailbox
+        # 1	Funktionsaccount (in Exchange: UserMailbox)
+        # 2	RoomMailbox
+        # 3	EquipmentMailbox
+        $upn = "fkt_$existingfunctionalmailbox"
+        $result = change-mailboxtype -webserviceConnection $global:ws -upn $upn -newmailboxtype 1
+        $result | should -Be $true
+
+    }
+
+    It "change: Mailboxtype functional mailbox -> personal Mailbox -->> Error" {
+        # 0	UserMailbox
+        # 1	Funktionsaccount (in Exchange: UserMailbox)
+        # 2	RoomMailbox
+        # 3	EquipmentMailbox
+        $upn = "fkt_$existingfunctionalmailbox"
+        $result = change-mailboxtype -webserviceConnection $global:ws -upn $upn -newmailboxtype 0
+        $result | should -Be $false
+    }
+
     It "create: distribution list" {
         $displayname = "Zoo"
         $distributionlist = create-distributionlist -WebserviceConnection $global:ws -displayname $displayname -mailaddress $distributionlist
diff --git a/Demo/mailaccounts.ps1 b/Demo/mailaccounts.ps1
index 2656999..530ef7e 100644
--- a/Demo/mailaccounts.ps1
+++ b/Demo/mailaccounts.ps1
@@ -8,6 +8,14 @@ function get-mailaccounts {
     $mailaccounts
 }
 
+function get-mailbox {
+    [CmdletBinding()]
+    param ($webserviceconnection,$upn)
+
+    $mailbox = $webserviceconnection.getMailbox($upn)
+    $mailbox
+}
+
 function add-mailboxinvitation {
     [CmdletBinding()]
     param ($webserviceconnection, $quotaPoolID, $primaryEMailAddress, $givenname, $Surname, $QuotaInMB, $Aliasaddresses, $Mailboxtype, $DeliverToMailBoxAndforward, $ForwardingEmailaddress, $Owner)
@@ -66,7 +74,6 @@ function change-mailboxforwardingaddress {
     $result
 }
 
-function chaange-emailaddresses { }
 
 function change-mailboxquota {    
     [CmdletBinding()]
@@ -146,4 +153,12 @@ function change-removesendaspermission {
 
     $result = $webserviceconnection.RemoveSendAsPermission($mailboxtochange.upn, $user)
     $result
+}
+
+function change-mailboxtype {
+    [cmdletBinding()]
+    param ($webserviceconnection, $upn, $newmailboxtype)
+
+    $result = $webserviceconnection.changemailboxtype($upn,$newmailboxtype)
+    $result
 }
\ No newline at end of file
-- 
GitLab