Example #1
0
        public void MSMEETS_S02_TC03_MeetingInvalidUrlError()
        {
            string uid = Guid.NewGuid().ToString();

            // Set the Url to the default site, which is not workspace.
            this.meetsAdapter.Url = Common.GetConfigurationPropertyValue("TargetServiceUrl", this.Site);
            string organizerEmail  = Common.GetConfigurationPropertyValue("OrganizerEmail", this.Site);
            string meetingTitle    = TestSuiteBase.GetUniqueMeetingTitle();
            string meetingLocation = TestSuiteBase.GetUniqueMeetingLocation();
            SoapResult <AddMeetingResponseAddMeetingResult> addMeetingResult = this.meetsAdapter.AddMeeting(organizerEmail, uid, null, DateTime.Now, meetingTitle, meetingLocation, DateTime.Now, DateTime.Now.AddHours(1), false);

            // If error code "0x00000006" is returned, MS-MEETS_R66 can be verified.
            Site.CaptureRequirementIfAreEqual <string>(
                "0x00000006",
                addMeetingResult.GetErrorCode(),
                66,
                @"[In AddMeetingResponse]If this operation [AddMeeting]is sent to a Web site (2) that is not a meeting workspace, the response [AddMeetingResponse]MUST be a SOAP fault with SOAP Fault code ""0x00000006"".");

            string            updatedMeetingTitle = TestSuiteBase.GetUniqueMeetingTitle();
            string            updatedLocation     = TestSuiteBase.GetUniqueMeetingLocation();
            SoapResult <Null> updateMeetingResult = this.meetsAdapter.UpdateMeeting(uid, null, null, updatedMeetingTitle, updatedLocation, DateTime.Now, DateTime.Now.AddHours(1), null);

            // If error code "0x00000006" is returned, MS-MEETS_R350 can be verified.
            Site.CaptureRequirementIfAreEqual <string>(
                "0x00000006",
                updateMeetingResult.GetErrorCode(),
                350,
                @"[In UpdateMeetingResponse]If this operation [UpdateMeeting] is sent to a Web site (2) that is not a meeting workspace, the response MUST be a SOAP fault with SOAP fault code ""0x00000006"".");
        }
Example #2
0
        public void MSMEETS_S02_TC07_UpdateMeetingWithAllParametersSpecified()
        {
            string uid = Guid.NewGuid().ToString();

            // Create a new workspace.
            string workspaceTitle = TestSuiteBase.GetUniqueWorkspaceTitle();
            SoapResult <CreateWorkspaceResponseCreateWorkspaceResult> createWorkspaceResult = this.meetsAdapter.CreateWorkspace(workspaceTitle, null, null, null);

            Site.Assert.IsNull(createWorkspaceResult.Exception, "Create workspace should succeed");

            // Add a meeting in the workspace.
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            SoapResult <AddMeetingResponseAddMeetingResult> addMeetingResult = this.meetsAdapter.AddMeeting(null, uid, null, null, null, null, DateTime.Now, DateTime.Now.AddHours(1), null);

            Site.Assert.IsNull(addMeetingResult.Exception, "AddMeeting should succeed");

            // Update the meeting with all parameters specified.
            string            updatedMeetingTitle = TestSuiteBase.GetUniqueMeetingTitle();
            string            updatedLocation     = TestSuiteBase.GetUniqueMeetingLocation();
            SoapResult <Null> updateMeetingResult = this.meetsAdapter.UpdateMeeting(uid, 1, DateTime.Now, updatedMeetingTitle, updatedLocation, DateTime.Now.AddHours(1), DateTime.Now.AddHours(2), false);

            Site.Assert.IsNull(updateMeetingResult.Exception, "UpdateMeeting should succeed");

            // Clean up the SUT.
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            SoapResult <Null> deleteResult = this.meetsAdapter.DeleteWorkspace();

            Site.Assert.IsNull(deleteResult.Exception, "DeleteWorkspace should succeed");
        }
Example #3
0
        public void MSMEETS_S03_TC13_UpdateMeetingFromICalWithoutOptionalParameters()
        {
            string uid = Guid.NewGuid().ToString();

            // Create a workspace on the server.
            string workspaceTitle = TestSuiteBase.GetUniqueWorkspaceTitle();
            SoapResult <CreateWorkspaceResponseCreateWorkspaceResult> createWorkspaceResult = this.meetsAdapter.CreateWorkspace(workspaceTitle, null, null, null);

            Site.Assert.IsNull(createWorkspaceResult.Exception, "Create workspace should succeed");

            // Add meeting from ICalendar.
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);

            string attendeeEmail  = Common.GetConfigurationPropertyValue("AttendeeEmail", this.Site);
            string icalendar      = TestSuiteBase.GetICalendar(uid, false, attendeeEmail);
            string organizerEmail = Common.GetConfigurationPropertyValue("OrganizerEmail", this.Site);
            SoapResult <AddMeetingFromICalResponseAddMeetingFromICalResult> addMeetingFromICalResult = this.meetsAdapter.AddMeetingFromICal(organizerEmail, icalendar);

            Site.Assert.IsNull(addMeetingFromICalResult.Exception, "AddMeetingFromICal should succeed");

            // Update the meeting without optional parameters.
            string updateICal = TestSuiteBase.GetICalendar(uid, false, TestSuiteBase.GetUniqueMeetingTitle(), TestSuiteBase.GetUniqueMeetingLocation(), attendeeEmail);
            SoapResult <UpdateMeetingFromICalResponseUpdateMeetingFromICalResult> updateMeetingFromICalResult = this.meetsAdapter.UpdateMeetingFromICal(updateICal, null);

            Site.Assert.IsNull(updateMeetingFromICalResult.Exception, "UpdateMeetingFromICal should succeed");

            // Clean up the SUT.
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            SoapResult <Null> deleteResult = this.meetsAdapter.DeleteWorkspace();

            Site.Assert.IsNull(deleteResult.Exception, "DeleteWorkspace should succeed");
        }
        public void MSMEETS_S02_TC11_AddMeetingWithInvalidOrganizerEmail()
        {
            string uid = Guid.NewGuid().ToString();

            // Create a new workspace.
            string workspaceTitle = TestSuiteBase.GetUniqueWorkspaceTitle();
            SoapResult <CreateWorkspaceResponseCreateWorkspaceResult> createWorkspaceResult = this.meetsAdapter.CreateWorkspace(workspaceTitle, null, null, null);

            Site.Assert.IsNull(createWorkspaceResult.Exception, "Create workspace should succeed");

            // Add a meeting in the workspace.
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            string organizerEmail  = Common.GenerateResourceName(this.Site, "InvalidOrganizerEmail");
            string meetingTitle    = TestSuiteBase.GetUniqueMeetingTitle();
            string meetingLocation = TestSuiteBase.GetUniqueMeetingLocation();

            SoapResult <AddMeetingResponseAddMeetingResult> addMeetingResult = this.meetsAdapter.AddMeeting(organizerEmail, uid, null, DateTime.Now, meetingTitle, meetingLocation, DateTime.Now, DateTime.Now.AddHours(1), false);
            string errorCode = Common.ExtractErrorCodeFromSoapFault(addMeetingResult.Exception);

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-MEETS_R521");

            // Verify MS-VERSS requirement: MS-MEETS_R521
            Site.CaptureRequirementIfAreEqual <string>(
                "0x0000000a",
                errorCode,
                521,
                @"[In AddMeeting]If this parameter [organizerEmail] is an invalid e-mail address, the response MUST be a SOAP fault with SOAP fault code ""0x0000000a"".");

            // Clean up the SUT
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            SoapResult <Null> deleteResult = this.meetsAdapter.DeleteWorkspace();

            Site.Assert.IsNull(deleteResult.Exception, "DeleteWorkspace should succeed");
        }
Example #5
0
        public void MSMEETS_S03_TC01_MeetingFromICalOperations()
        {
            string uid = Guid.NewGuid().ToString();

            // Create a workspace on the server
            string workspaceTitle = TestSuiteBase.GetUniqueWorkspaceTitle();
            SoapResult <CreateWorkspaceResponseCreateWorkspaceResult> createWorkspaceResult = this.meetsAdapter.CreateWorkspace(workspaceTitle, null, null, null);

            Site.Assert.IsNull(createWorkspaceResult.Exception, "Create workspace should succeed");

            // Add meeting from ICalendar.
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);

            string meetingTitle    = TestSuiteBase.GetUniqueMeetingTitle();
            string meetingLocation = TestSuiteBase.GetUniqueMeetingLocation();
            string icalendar       = TestSuiteBase.GetICalendar(uid, false, meetingTitle, meetingLocation);
            string organizerEmail  = Common.GetConfigurationPropertyValue("OrganizerEmail", this.Site);
            SoapResult <AddMeetingFromICalResponseAddMeetingFromICalResult> addMeetingFromICalResult = this.meetsAdapter.AddMeetingFromICal(organizerEmail, icalendar);

            Site.Assert.IsNull(addMeetingFromICalResult.Exception, "AddMeetingFromICal should succeed");

            // Update the meeting.
            string attendeeEmail = Common.GetConfigurationPropertyValue("AttendeeEmail", this.Site);
            string icalRecurring = TestSuiteBase.GetICalendar(uid, true, meetingTitle, meetingLocation, attendeeEmail);
            SoapResult <UpdateMeetingFromICalResponseUpdateMeetingFromICalResult> updateMeetingFromICalResult = this.meetsAdapter.UpdateMeetingFromICal(icalRecurring, false);

            Site.Assert.IsNull(updateMeetingFromICalResult.Exception, "UpdateMeetingFromICal should succeed");

            // If the returned status code equals to 0, MS-MEETS_R32 can be verified.
            Site.CaptureRequirementIfAreEqual <int>(
                0,
                updateMeetingFromICalResult.Result.UpdateMeetingFromICal.AttendeeUpdateStatus.Code,
                32,
                @"[In AttendeeUpdateStatus]This number [Code]is set to zero, if there was no error.");

            // If UpdateMeetingFromICal executed succeed and there is no error, the returned Detail value is empty, MS-MEETS_R34 can be verified.
            Site.CaptureRequirementIfAreEqual <string>(
                string.Empty,
                updateMeetingFromICalResult.Result.UpdateMeetingFromICal.AttendeeUpdateStatus.Detail,
                34,
                @"[In AttendeeUpdateStatus]This string [Detail]is empty, if there was no error.");

            // If the returned status code equals to 0 and the returned Detail value is empty, MS-MEETS_R41110 can be verified.
            Site.CaptureRequirement(
                41110,
                @"[In UpdateMeetingFromICal]If icalText is present, the UpdateMeetingFromICal operation will succeed.");

            // update attendee response.
            SoapResult <Null> setAttendeeResponsResult = this.meetsAdapter.SetAttendeeResponse(attendeeEmail, 0, uid, 0, DateTime.Now.AddHours(1), DateTime.Now.AddHours(2), AttendeeResponse.responseAccepted);

            Site.Assert.IsNull(setAttendeeResponsResult.Exception, "SetAttendeeResponse should succeed");

            // Clean up the SUT.
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            SoapResult <Null> deleteResult = this.meetsAdapter.DeleteWorkspace();

            Site.Assert.IsNull(deleteResult.Exception, "DeleteWorkspace should succeed");
        }
Example #6
0
        public void MSMEETS_S02_TC01_MeetingOperations()
        {
            string uid = Guid.NewGuid().ToString();

            // Create a new workspace.
            string workspaceTitle = TestSuiteBase.GetUniqueWorkspaceTitle();
            SoapResult <CreateWorkspaceResponseCreateWorkspaceResult> createWorkspaceResult = this.meetsAdapter.CreateWorkspace(workspaceTitle, null, null, null);

            Site.Assert.IsNull(createWorkspaceResult.Exception, "Create workspace should succeed");

            // Add a meeting in the workspace.
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            string organizerEmail  = Common.GetConfigurationPropertyValue("OrganizerEmail", this.Site);
            string meetingTitle    = TestSuiteBase.GetUniqueMeetingTitle();
            string meetingLocation = TestSuiteBase.GetUniqueMeetingLocation();
            SoapResult <AddMeetingResponseAddMeetingResult> addMeetingResult = this.meetsAdapter.AddMeeting(organizerEmail, uid, null, DateTime.Now, meetingTitle, meetingLocation, DateTime.Now, DateTime.Now.AddHours(1), false);

            Site.Assert.IsNull(addMeetingResult.Exception, "AddMeeting should succeed");

            // If the Url returned by AddMeeting is a well formatted Uri string, MS-MEETS_R24 can be verified.
            Site.CaptureRequirementIfIsTrue(
                Uri.IsWellFormedUriString("addMeetingResult.Result.AddMeeting.Url", UriKind.RelativeOrAbsolute),
                24,
                @"[In AddMeeting]Url: The absolute URL of the meeting instance in the workspace, with an indicator of the instance in the absolute URL  query section.");

            string            updatedMeetingTitle = TestSuiteBase.GetUniqueMeetingTitle();
            string            updatedLocation     = TestSuiteBase.GetUniqueMeetingLocation();
            SoapResult <Null> updateMeetingResult = this.meetsAdapter.UpdateMeeting(uid, 1, null, updatedMeetingTitle, updatedLocation, DateTime.Now.AddHours(1), DateTime.Now.AddHours(2), null);

            Site.Assert.IsNull(updateMeetingResult.Exception, "UpdateMeeting should succeed");

            // Remove the meeting.
            SoapResult <Null> removeMeetingResult = this.meetsAdapter.RemoveMeeting(null, uid, 1, null, null);

            Site.Assert.IsNull(removeMeetingResult.Exception, "RemoveMeeting should succeed");

            // Get workspace status to query the meeting information.
            SoapResult <GetMeetingsInformationResponseGetMeetingsInformationResult> getMeetingsInformationResult = this.meetsAdapter.GetMeetingsInformation(MeetingInfoTypes.QueryOthers, null);

            Site.Assert.IsNull(getMeetingsInformationResult.Exception, "GetMeetingsInformation should succeed");

            // Restore the removed meeting.
            SoapResult <Null> restoreMeetingResult = this.meetsAdapter.RestoreMeeting(uid);

            Site.Assert.IsNull(restoreMeetingResult.Exception, "RestoreMeeting should succeed");

            // Get workspace status again to query the meeting information.
            SoapResult <GetMeetingsInformationResponseGetMeetingsInformationResult> getMeetingsInformationAgainResult = this.meetsAdapter.GetMeetingsInformation(MeetingInfoTypes.QueryOthers, null);

            Site.Assert.IsNull(getMeetingsInformationAgainResult.Exception, "GetMeetingsInformation should succeed");

            // Clean up the SUT
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            SoapResult <Null> deleteResult = this.meetsAdapter.DeleteWorkspace();

            Site.Assert.IsNull(deleteResult.Exception, "DeleteWorkspace should succeed");
        }
        public void MSMEETS_S02_TC04_VerifyMeetingCountInWorkspace()
        {
            // Create a workspace on site.
            string workspaceTitle = TestSuiteBase.GetUniqueWorkspaceTitle();
            SoapResult <CreateWorkspaceResponseCreateWorkspaceResult> createWorkspaceResult = this.meetsAdapter.CreateWorkspace(workspaceTitle, null, null, null);

            Site.Assert.IsNull(createWorkspaceResult.Exception, "Create workspace should succeed");

            // Add a meeting in workspace.
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            string organizerEmail     = Common.GetConfigurationPropertyValue("OrganizerEmail", this.Site);
            string meetingTitleFst    = TestSuiteBase.GetUniqueMeetingTitle();
            string meetingLocationFst = TestSuiteBase.GetUniqueMeetingLocation();
            SoapResult <AddMeetingResponseAddMeetingResult> addMeetingResultFst = this.meetsAdapter.AddMeeting(organizerEmail, Guid.NewGuid().ToString(), null, DateTime.Now, meetingTitleFst, meetingLocationFst, DateTime.Now, DateTime.Now.AddHours(1), null);

            Site.Assert.IsNull(addMeetingResultFst.Exception, "Add meeting should succeed");

            // According to MS-ADMINS_R3017,  the site will have a default title of "Team Site".
            Site.CaptureRequirementIfAreEqual <string>(
                "Team Site",
                addMeetingResultFst.Result.AddMeeting.HostTitle,
                25,
                @"[In AddMeeting]HostTitle: The title of the site in which the meeting workspace is located.");

            // Get workspace status, make sure there is only one meeting in workspace.
            SoapResult <GetMeetingsInformationResponseGetMeetingsInformationResult> getWorkspaceInfoResultFst = this.meetsAdapter.GetMeetingsInformation(MeetingInfoTypes.QueryOthers, null);

            Site.Assert.IsNull(getWorkspaceInfoResultFst.Exception, "Get meeting information should succeed");
            Site.Assert.AreEqual <string>("1", getWorkspaceInfoResultFst.Result.MeetingsInformation.WorkspaceStatus.MeetingCount, "There is only one meeting in workspace");

            // Add another meeting in workspace.
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            string meetingTitleSnd    = TestSuiteBase.GetUniqueMeetingTitle();
            string meetingLocationSnd = TestSuiteBase.GetUniqueMeetingLocation();
            SoapResult <AddMeetingResponseAddMeetingResult> addMeetingResultSnd = this.meetsAdapter.AddMeeting(organizerEmail, Guid.NewGuid().ToString(), null, DateTime.Now, meetingTitleSnd, meetingLocationSnd, DateTime.Now, DateTime.Now.AddHours(2), null);

            Site.Assert.IsNull(addMeetingResultSnd.Exception, "Add meeting should succeed");

            // Get workspace status, make sure there are two meetings in workspace.
            SoapResult <GetMeetingsInformationResponseGetMeetingsInformationResult> getWorkspaceInfoResultSnd = this.meetsAdapter.GetMeetingsInformation(MeetingInfoTypes.QueryOthers, null);

            Site.Assert.IsNull(getWorkspaceInfoResultSnd.Exception, "Get meeting information should succeed");
            string actualMeetingCount = getWorkspaceInfoResultSnd.Result.MeetingsInformation.WorkspaceStatus.MeetingCount;

            // If the returned meeting count equals to 2, MS-MEETS_R27 can be verified.
            Site.CaptureRequirementIfAreEqual <string>(
                "2",
                actualMeetingCount,
                27,
                @"[In AddMeeting]MeetingCount: The number of meeting instances in the workspace, including the one just added.");

            // Clean up the SUT.
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            SoapResult <Null> deleteResult = this.meetsAdapter.DeleteWorkspace();

            Site.Assert.IsNull(deleteResult.Exception, "DeleteWorkspace should succeed");
        }
        public void MSMEETS_S02_TC12_AddMeetingWithExistingUID()
        {
            string uid = Guid.NewGuid().ToString();

            // Create a new workspace.
            string workspaceTitle = TestSuiteBase.GetUniqueWorkspaceTitle();
            SoapResult <CreateWorkspaceResponseCreateWorkspaceResult> createWorkspaceResult = this.meetsAdapter.CreateWorkspace(workspaceTitle, null, null, null);

            Site.Assert.IsNull(createWorkspaceResult.Exception, "Create workspace should succeed");

            // Add a meeting in the workspace.
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            string organizerEmail  = Common.GetConfigurationPropertyValue("OrganizerEmail", this.Site);
            string meetingTitle    = TestSuiteBase.GetUniqueMeetingTitle();
            string meetingLocation = TestSuiteBase.GetUniqueMeetingLocation();
            SoapResult <AddMeetingResponseAddMeetingResult> addMeetingResult = this.meetsAdapter.AddMeeting(organizerEmail, uid, null, DateTime.Now, meetingTitle, meetingLocation, DateTime.Now, DateTime.Now.AddHours(1), false);

            Site.Assert.IsNull(addMeetingResult.Exception, "AddMeeting should succeed");

            SoapResult <GetMeetingsInformationResponseGetMeetingsInformationResult> getMeetingsInformationResult = this.meetsAdapter.GetMeetingsInformation(MeetingInfoTypes.QueryOthers, null);

            Site.Assert.IsNull(getMeetingsInformationResult.Exception, "GetMeetingsInformation should succeed");
            string orginalMeetingCount = getMeetingsInformationResult.Result.MeetingsInformation.WorkspaceStatus.MeetingCount;

            string updatedMeetingTitle = TestSuiteBase.GetUniqueMeetingTitle();
            string updatedLocation     = TestSuiteBase.GetUniqueMeetingLocation();

            addMeetingResult = this.meetsAdapter.AddMeeting(organizerEmail, uid, null, DateTime.Now, updatedMeetingTitle, updatedLocation, DateTime.Now, DateTime.Now.AddHours(1), false);
            Site.Assert.IsNull(addMeetingResult.Exception, "AddMeeting should succeed");

            // Get workspace status to query the meeting information.
            getMeetingsInformationResult = this.meetsAdapter.GetMeetingsInformation(MeetingInfoTypes.QueryOthers, null);
            Site.Assert.IsNull(getMeetingsInformationResult.Exception, "GetMeetingsInformation should succeed");

            string meetingCount = getMeetingsInformationResult.Result.MeetingsInformation.WorkspaceStatus.MeetingCount;

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-MEETS_R531");

            // Verify MS-VERSS requirement: MS-MEETS_R531
            // Call AddMeeting for twice and using the same UID, if the meeting count is not changed this requirement can be captured directly.
            Site.CaptureRequirementIfAreEqual <string>(
                orginalMeetingCount,
                meetingCount,
                531,
                @"[In AddMeeting]If one meeting with this UID exists, the operation will update the content of this meeting just as UpdateMeeting operation (section 3.1.4.11) does.");

            // Clean up the SUT
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            SoapResult <Null> deleteResult = this.meetsAdapter.DeleteWorkspace();

            Site.Assert.IsNull(deleteResult.Exception, "DeleteWorkspace should succeed");
        }
Example #9
0
        /// <summary>
        /// Generate an iCalendar with specified UID and attendees.
        /// </summary>
        /// <param name="uid">The unique id</param>
        /// <param name="isRecurring">Specifies whether the calendar is a recurring calendar</param>
        /// <param name="attendees">The collection of attendees</param>
        /// <returns>A string contains the iCalendar</returns>
        public static string GetICalendar(string uid, bool isRecurring, params string[] attendees)
        {
            // iCalendar Tag  DTSTAMP specifies the date/time that the instance of the iCalendar object was created.
            // iCalendar Tag  DESCRIPTION specifies the description of the meeting.
            // iCalendar Tag  LOCATION defines the intended venue for the meeting.
            // iCalendar Tag  SUMMARY defines a short summary or subject for the meeting.
            // iCalendar Tag  DTSTART specifies when the meeting begins.
            string meetingTitle    = TestSuiteBase.GetUniqueMeetingTitle();
            string meetingLocation = TestSuiteBase.GetUniqueMeetingLocation();
            string icalTemplate    = "BEGIN:VCALENDAR\n"
                                     + "BEGIN:VEVENT\n"
                                     + "{0}"
                                     + "DTSTAMP:20090314T143000Z\n"
                                     + "DESCRIPTION:" + meetingTitle + "\n"
                                     + "SUMMARY:" + meetingTitle + "\n"
                                     + "DTSTART;TZID=US-Eastern:19970902T090000\n"
                                     + "LOCATION:" + meetingLocation + "\n"
                                     + "END:VEVENT\n"
                                     + "END:VCALENDAR\n";

            StringBuilder stringBuilder = new StringBuilder();

            // iCalendar Tag  UID specifies an unique UID for the meeting.
            stringBuilder.AppendLine(string.Format("UID:{0}", uid));
            foreach (string attendee in attendees)
            {
                // iCalendar Tag  ATTENDEE specifies attendees of the meeting.
                stringBuilder.AppendLine(string.Format("ATTENDEE:MAILTO:{0}", attendee));
            }

            if (isRecurring)
            {
                // iCalendar Tag  RRULE specifies the recurring rule of this meeting.
                stringBuilder.AppendLine("RRULE:FREQ=DAILY;COUNT=5");
            }

            string icalendar = string.Format(icalTemplate, stringBuilder.ToString());

            return(icalendar);
        }
Example #10
0
        public void MSMEETS_S04_TC02_RecurringMeetingError()
        {
            // Create a workspace.
            string workspaceTitle = TestSuiteBase.GetUniqueWorkspaceTitle();
            SoapResult <CreateWorkspaceResponseCreateWorkspaceResult> createWorkspaceResult = this.meetsAdapter.CreateWorkspace(workspaceTitle, null, null, null);

            Site.Assert.IsNull(createWorkspaceResult.Exception, "Create workspace should succeed");

            // Add a single instance meeting in the workspace.
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            string organizerEmail  = Common.GetConfigurationPropertyValue("OrganizerEmail", this.Site);
            string meetingTitle    = TestSuiteBase.GetUniqueMeetingTitle();
            string meetingLocation = TestSuiteBase.GetUniqueMeetingLocation();
            SoapResult <AddMeetingResponseAddMeetingResult> addMeetingResult = this.meetsAdapter.AddMeeting(organizerEmail, Guid.NewGuid().ToString(), null, DateTime.Now, meetingTitle, meetingLocation, DateTime.Now, DateTime.Now.AddHours(1), false);

            Site.Assert.IsNull(addMeetingResult.Exception, "AddMeeting should succeed");

            // Add a recurring meeting in the same workspace.
            string icalendar = TestSuiteBase.GetICalendar(Guid.NewGuid().ToString(), true);
            SoapResult <AddMeetingFromICalResponseAddMeetingFromICalResult> addMeetingFromICalResult = this.meetsAdapter.AddMeetingFromICal(organizerEmail, icalendar);

            // Add the log information.
            Site.Log.Add(Microsoft.Protocols.TestTools.LogEntryKind.Comment, "Verify MS-MEETS_R89: The response when a client tries to add a recurring meeting to a workspace is: {0}", addMeetingFromICalResult.Exception.Detail.InnerText);

            // If a SOAP fault with SOAP fault code "0x00000003" is returned, MS-MEETS_R89 is captured.
            Site.CaptureRequirementIfAreEqual <string>(
                "0x00000003",
                addMeetingFromICalResult.GetErrorCode(),
                89,
                @"[In AddMeetingFromICalResponse]If the protocol client tries to add a recurring meeting to a workspace that already contains a meeting, the response MUST be a SOAP fault with SOAP fault code ""0x00000003"".");

            // Clean up the SUT.
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            SoapResult <Null> deleteResult = this.meetsAdapter.DeleteWorkspace();

            Site.Assert.IsNull(deleteResult.Exception, "DeleteWorkspace should succeed");
        }
Example #11
0
        public void MSMEETS_S04_TC01_RecurringMeetingOperations()
        {
            // Create 3 workspaces.
            string emptyWorkspaceTitle = TestSuiteBase.GetUniqueWorkspaceTitle();
            SoapResult <CreateWorkspaceResponseCreateWorkspaceResult> createWorkspaceResult = this.meetsAdapter.CreateWorkspace(emptyWorkspaceTitle, null, null, null);

            Site.Assert.IsNull(createWorkspaceResult.Exception, "Create workspace should succeed");
            string emptyWorkspaceUrl = createWorkspaceResult.Result.CreateWorkspace.Url;

            string singleWorkspaceTitle = TestSuiteBase.GetUniqueWorkspaceTitle();

            createWorkspaceResult = this.meetsAdapter.CreateWorkspace(singleWorkspaceTitle, null, null, null);
            Site.Assert.IsNull(createWorkspaceResult.Exception, "Create workspace should succeed");
            string singleMeetingWorkspaceUrl = createWorkspaceResult.Result.CreateWorkspace.Url;

            string recurringWorkspaceTitle = TestSuiteBase.GetUniqueWorkspaceTitle();

            createWorkspaceResult = this.meetsAdapter.CreateWorkspace(recurringWorkspaceTitle, null, null, null);
            Site.Assert.IsNull(createWorkspaceResult.Exception, "Create workspace should succeed");
            string recurringMeetingWorkspaceUrl = createWorkspaceResult.Result.CreateWorkspace.Url;

            // Add a single instance meeting in the single meeting workspace.
            this.meetsAdapter.Url = singleMeetingWorkspaceUrl + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);

            string organizerEmail  = Common.GetConfigurationPropertyValue("OrganizerEmail", this.Site);
            string meetingTitle    = TestSuiteBase.GetUniqueMeetingTitle();
            string meetingLocation = TestSuiteBase.GetUniqueMeetingLocation();
            SoapResult <AddMeetingResponseAddMeetingResult> addMeeting = this.meetsAdapter.AddMeeting(organizerEmail, Guid.NewGuid().ToString(), null, DateTime.Now, meetingTitle, meetingLocation, DateTime.Now, DateTime.Now.AddHours(1), null);

            Site.Assert.IsNull(addMeeting.Exception, "AddMeeting should succeed");

            // Add a recurring meeting in the recurring meeting workspace.
            this.meetsAdapter.Url = recurringMeetingWorkspaceUrl + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            string icalendar = TestSuiteBase.GetICalendar(Guid.NewGuid().ToString(), true);

            SoapResult <AddMeetingFromICalResponseAddMeetingFromICalResult> addMeetingFromICalResult = this.meetsAdapter.AddMeetingFromICal(organizerEmail, icalendar);

            Site.Assert.IsNull(addMeetingFromICalResult.Exception, "AddMeetingFromICal should succeed");

            // Send GetMeetingsInformation to the empty workspace.
            this.meetsAdapter.Url = emptyWorkspaceUrl + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            SoapResult <GetMeetingsInformationResponseGetMeetingsInformationResult> emptyInfoResult = this.meetsAdapter.GetMeetingsInformation(MeetingInfoTypes.QueryOthers, null);

            Site.Assert.IsNull(emptyInfoResult.Exception, "GetMeetingsInformation should succeed");
            Site.Assert.AreEqual <string>("0", emptyInfoResult.Result.MeetingsInformation.WorkspaceStatus.MeetingCount, "Workspace should not contain meeting instance.");

            // Send GetMeetingsInformation to the single meeting workspace.
            this.meetsAdapter.Url = singleMeetingWorkspaceUrl + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            SoapResult <GetMeetingsInformationResponseGetMeetingsInformationResult> singleInfoResult = this.meetsAdapter.GetMeetingsInformation(MeetingInfoTypes.QueryOthers, null);

            Site.Assert.IsNull(singleInfoResult.Exception, "GetMeetingsInformation should succeed");
            Site.Assert.AreEqual <string>("1", singleInfoResult.Result.MeetingsInformation.WorkspaceStatus.MeetingCount, "Workspace should contain only 1 meeting instance.");

            // Send GetMeetingsInformation to the recurring meeting workspace.
            this.meetsAdapter.Url = recurringMeetingWorkspaceUrl + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            SoapResult <GetMeetingsInformationResponseGetMeetingsInformationResult> recurringInfoResult = this.meetsAdapter.GetMeetingsInformation(MeetingInfoTypes.QueryOthers, null);

            Site.Assert.IsNull(recurringInfoResult.Exception, "GetMeetingsInformation should succeed");

            // If the MeetingCount that server returns is -1, MS-MEETS_R215 is verified.
            Site.CaptureRequirementIfAreEqual <string>(
                "-1",
                recurringInfoResult.Result.MeetingsInformation.WorkspaceStatus.MeetingCount,
                215,
                @"[In GetMeetingsInformationResponse]This [MeetingCount]MUST be set to -1 if the meeting workspace subsite has a recurring meeting.");

            // Send GetMeetingWorkspaces to the parent web site.
            this.meetsAdapter.Url = Common.GetConfigurationPropertyValue("TargetServiceUrl", this.Site);

            // Get available workspace for non-recurring meeting, server should return the first and second workspaces.
            SoapResult <GetMeetingWorkspacesResponseGetMeetingWorkspacesResult> getMeetingWorkspacesResult = this.meetsAdapter.GetMeetingWorkspaces(false);

            Site.Assert.IsNull(getMeetingWorkspacesResult.Exception, "GetMeetingWorkspaces should succeed");

            // If only empty workspaces and single instance workspaces are returned, MS-MEETS_R230 is verified.
            Site.CaptureRequirementIfAreEqual <int>(
                2,
                getMeetingWorkspacesResult.Result.MeetingWorkspaces.Length,
                230,
                @"[In GetMeetingWorkspaces][If the value [of recurring]is false], empty workspaces and single instance workspaces are returned.");

            // If only workspaces to which the protocol client can add meetings are returned, MS-MEETS_R224 is verified.
            Site.CaptureRequirementIfAreEqual <int>(
                2,
                getMeetingWorkspacesResult.Result.MeetingWorkspaces.Length,
                224,
                @"[In GetMeetingWorkspacesSoapOut]The protocol server MUST return only workspaces to which the protocol client can add meetings.");

            getMeetingWorkspacesResult = this.meetsAdapter.GetMeetingWorkspaces(null);
            Site.Assert.IsNull(getMeetingWorkspacesResult.Exception, "GetMeetingWorkspaces should succeed");

            // If only empty workspaces and single instance workspaces are returned, MS-MEETS_R2311 is verified.
            Site.CaptureRequirementIfAreEqual <int>(
                2,
                getMeetingWorkspacesResult.Result.MeetingWorkspaces.Length,
                2311,
                @"[In GetMeetingWorkspaces]If [the value of recurring is] not specified, the server will treat it as false.");

            // Get available workspace for recurring meeting, server should only return the first workspace
            getMeetingWorkspacesResult = this.meetsAdapter.GetMeetingWorkspaces(true);
            Site.Assert.IsNull(getMeetingWorkspacesResult.Exception, "GetMeetingWorkspaces should succeed");

            // If only empty workspaces are returned, MS-MEETS_R231 is verified.
            Site.CaptureRequirementIfAreEqual <int>(
                1,
                getMeetingWorkspacesResult.Result.MeetingWorkspaces.Length,
                231,
                @"[In GetMeetingWorkspaces]If [the value of recurring is]true, only empty workspaces are returned.");

            // Clean up the SUT.
            this.meetsAdapter.Url = emptyWorkspaceUrl + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            SoapResult <Null> deleteResult = this.meetsAdapter.DeleteWorkspace();

            Site.Assert.IsNull(deleteResult.Exception, "DeleteWorkspace should succeed");

            this.meetsAdapter.Url = singleMeetingWorkspaceUrl + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            deleteResult          = this.meetsAdapter.DeleteWorkspace();
            Site.Assert.IsNull(deleteResult.Exception, "DeleteWorkspace should succeed");

            this.meetsAdapter.Url = recurringMeetingWorkspaceUrl + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            deleteResult          = this.meetsAdapter.DeleteWorkspace();
            Site.Assert.IsNull(deleteResult.Exception, "DeleteWorkspace should succeed");
        }
Example #12
0
        public void MSMEETS_S02_TC10_RemoveMeetingWithoutOptionalParameters()
        {
            string uid = Guid.NewGuid().ToString();

            // Create a new workspace.
            string workspaceTitle = TestSuiteBase.GetUniqueWorkspaceTitle();
            SoapResult <CreateWorkspaceResponseCreateWorkspaceResult> createWorkspaceResult = this.meetsAdapter.CreateWorkspace(workspaceTitle, null, null, null);

            Site.Assert.IsNull(createWorkspaceResult.Exception, "Create workspace should succeed");

            // Add a meeting in the workspace.
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            SoapResult <AddMeetingResponseAddMeetingResult> addMeetingResult = this.meetsAdapter.AddMeeting(Common.GetConfigurationPropertyValue("OrganizerEmail", this.Site), uid, null, null, TestSuiteBase.GetUniqueMeetingTitle(), TestSuiteBase.GetUniqueMeetingLocation(), DateTime.Now, DateTime.Now.AddHours(1), null);

            Site.Assert.IsNull(addMeetingResult.Exception, "AddMeeting should succeed");

            // Remove the meeting with all parameters specified.
            SoapResult <Null> removeMeetingResult = this.meetsAdapter.RemoveMeeting(null, uid, null, null, null);

            Site.Assert.IsNull(removeMeetingResult.Exception, "RemoveMeeting should succeed");

            // Clean up the SUT.
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            SoapResult <Null> deleteResult = this.meetsAdapter.DeleteWorkspace();

            Site.Assert.IsNull(deleteResult.Exception, "DeleteWorkspace should succeed");
        }
        public void MSMEETS_S02_TC10_RemoveMeetingWithoutOptionalParameters()
        {
            string uid = Guid.NewGuid().ToString();

            // Create a new workspace.
            string workspaceTitle = TestSuiteBase.GetUniqueWorkspaceTitle();
            SoapResult <CreateWorkspaceResponseCreateWorkspaceResult> createWorkspaceResult = this.meetsAdapter.CreateWorkspace(workspaceTitle, null, null, null);

            Site.Assert.IsNull(createWorkspaceResult.Exception, "Create workspace should succeed");

            // Add a meeting in the workspace.
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            SoapResult <AddMeetingResponseAddMeetingResult> addMeetingResult = this.meetsAdapter.AddMeeting(Common.GetConfigurationPropertyValue("OrganizerEmail", this.Site), uid, null, null, TestSuiteBase.GetUniqueMeetingTitle(), TestSuiteBase.GetUniqueMeetingLocation(), DateTime.Now, DateTime.Now.AddHours(1), null);

            Site.Assert.IsNull(addMeetingResult.Exception, "AddMeeting should succeed");

            // Remove the meeting with all parameters specified.
            SoapResult <Null> removeMeetingResult = this.meetsAdapter.RemoveMeeting(null, uid, null, null, null);

            Site.Assert.IsNull(removeMeetingResult.Exception, "RemoveMeeting should succeed");

            // Restore a meeting in the workspace.
            SoapResult <Null> restoreMeetingResult = this.meetsAdapter.RestoreMeeting(uid);

            Site.Assert.IsNull(removeMeetingResult.Exception, "Restore should succeed");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-MEETS_R259");

            // Verify MS-VERSS requirement: MS-MEETS_R259
            Site.CaptureRequirement(
                259,
                @"[In RestoreMeeting]The RestoreMeeting operation restores a previously deleted meeting to a workspace.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-MEETS_R263");

            // Verify MS-VERSS requirement: MS-MEETS_R263
            Site.CaptureRequirement(
                263,
                @"[In RestoreMeeting]This operation [RestoreMeeting]undoes a previous action [previously deleted meeting].");

            // Clean up the SUT.
            this.meetsAdapter.Url = createWorkspaceResult.Result.CreateWorkspace.Url + Common.GetConfigurationPropertyValue("EntryUrl", this.Site);
            SoapResult <Null> deleteResult = this.meetsAdapter.DeleteWorkspace();

            Site.Assert.IsNull(deleteResult.Exception, "DeleteWorkspace should succeed");
        }