internal static RoutingEntity GetRoutingEntity(IUniversalRoutingEntity ure) { if (null == ure) throw new ArgumentNullException("ure"); RoutingEntity routingEntity = new RoutingEntity(); routingEntity.PolicyType = ure.PolicyType.ToString(); routingEntity.RoutingType = ure.RoutingType; if (ure.Items != null && ure.Items.Count > 0) { routingEntity.Items = new Workshare.PolicyContent.RoutingItem[ure.Items.Count]; int index = 0; foreach (IRoutingItem item in ure.Items) { Workshare.PolicyContent.RoutingItem routingItem = new Workshare.PolicyContent.RoutingItem(); routingItem.Content = item.Content; if (item.Properties != null && item.Properties.Count > 0) { routingItem.Properties = new CustomProperty[item.Properties.Count]; int propIndex = 0; foreach( string key in item.Properties.Keys) { routingItem.Properties[propIndex++] = new CustomProperty(key, item.Properties[key]); } } routingEntity.Items[index++] = routingItem; } } return routingEntity; }
public void TestGetDigest() { Request request = new Request(); List<CustomProperty> props = new List<CustomProperty>(); props.Add(new CustomProperty("Subject", "This is a subject")); RoutingEntity sourceRouting = new RoutingEntity(); RoutingItem item = new RoutingItem(); item.Content = "*****@*****.**"; sourceRouting.Items = new RoutingItem[] {item}; request.Source = sourceRouting; request.Properties = props.ToArray(); string digest1 = new RequestDigestProvider().GetDigest(request); //change the request, get a different digest value. request.Source.Items[0].Content = "*****@*****.**"; string digest2 = new RequestDigestProvider().GetDigest(request); Assert.AreNotEqual(digest1,digest2); request.Properties[0].Value = "Change the subject"; string digest3 = new RequestDigestProvider().GetDigest(request); Assert.AreNotEqual(digest1,digest2); Assert.AreNotEqual(digest2, digest3); //Empty subject is OK request.Properties[0].Value = string.Empty; string digest4 = new RequestDigestProvider().GetDigest(request); Assert.AreNotEqual(digest1,digest4); }
public void GetDigestRoutingItemIsCaseInsensitive() { Request request = new Request(); List<CustomProperty> props = new List<CustomProperty>(); props.Add(new CustomProperty("Subject", "This is a subject")); RoutingEntity sourceRouting = new RoutingEntity(); RoutingItem item = new RoutingItem(); item.Content = "*****@*****.**"; sourceRouting.Items = new RoutingItem[] { item }; request.Source = sourceRouting; request.Properties = props.ToArray(); string digest1 = new RequestDigestProvider().GetDigest(request); request.Source.Items[0].Content = request.Source.Items[0].Content.ToUpperInvariant(); string digest2 = new RequestDigestProvider().GetDigest(request); Assert.AreEqual(digest1,digest2); }
public void TestRecipientAddressInX400Format() { using (WsActivationContext wsac = new WsActivationContext()) using (OutlookEmailWrapper outlookEmailWrapper = new OutlookEmailWrapper(m_outlookSession)) { string subject = "Test outlook proxy: TestRecipientAddressInX400Format"; outlookEmailWrapper.Subject = subject; outlookEmailWrapper.ToRecipients = "BlackHole<*****@*****.**>"; outlookEmailWrapper.BodyFormat = Outlook.OlBodyFormat.olFormatRichText; string rtfBody = "We have a body that looks like something"; outlookEmailWrapper.Body = rtfBody; // We have to save the message in order to access all its contents :( outlookEmailWrapper.MailItem.Save(); using (RedemptionMailProxy proxy = new RedemptionMailProxy(outlookEmailWrapper.MailItem)) using (Email2Mime mailItem2Mime = new Email2Mime(proxy)) using (Stream mimeStream = mailItem2Mime.ConvertToMimeStream()) using (MimeProxy mimeProxy = new MimeProxy(mimeStream)) { Email2Request email2Request = new Email2Request(mimeProxy); Request request = email2Request.Convert(RequestChannel.Outlook, false); outlookEmailWrapper.MailItem.Delete(); // Now fake an X400 email address Workshare.PolicyContent.RoutingItem routingItem = request.Destination.Items[0]; Workshare.PolicyContent.RoutingItem modifiedRoutingItem = new Workshare.PolicyContent.RoutingItem(); modifiedRoutingItem.Content = "/O=WSDEV/OU=FIRST ADMINISTRATIVE GROUP/CN=RECIPIENTS/CN=BlackHole"; System.Collections.Generic.List< CustomProperty> custProps = new System.Collections.Generic.List<CustomProperty>(); foreach (CustomProperty prop in routingItem.Properties) { custProps.Add(prop); } custProps.Add(new CustomProperty(EmailProperties.ReadOnlyKey, bool.TrueString)); modifiedRoutingItem.Properties = custProps.ToArray(); request.Destination.Items = new Workshare.PolicyContent.RoutingItem[] { modifiedRoutingItem }; // Now do a convert again with the modified uro email2Request.Convert(RequestChannel.Outlook, request, false); Assert.AreEqual(1, request.Destination.Items.Length); routingItem = request.Destination.Items[0]; Assert.AreEqual("/O=WSDEV/OU=FIRST ADMINISTRATIVE GROUP/CN=RECIPIENTS/CN=BlackHole", routingItem.Content); Assert.AreEqual("BlackHole", GetPropertyValue(SMTPItemPropertyKeys.DisplayName, routingItem.Properties)); Assert.AreEqual(AddressType.To, GetPropertyValue(SMTPItemPropertyKeys.AddressType, routingItem.Properties)); Assert.AreEqual(bool.TrueString, GetPropertyValue(EmailProperties.ReadOnlyKey, routingItem.Properties)); } } }
private void ProcessRecipient(Request request, IEmailRecipient recipient, string addressType) { Workshare.PolicyContent.RoutingItem routingItem = new Workshare.PolicyContent.RoutingItem(); routingItem.Content = recipient.EmailAddress; CustomProperty displayName = new CustomProperty(SMTPItemPropertyKeys.DisplayName, recipient.Name.Trim()); CustomProperty addressTypeProp = new CustomProperty(SMTPItemPropertyKeys.AddressType, addressType); CustomProperty internalFlag = new CustomProperty(SMTPItemPropertyKeys.Internal, recipient.Internal.ToString()); CustomProperty modified = new CustomProperty(EmailProperties.ModifiedKey, bool.FalseString); routingItem.Properties = new CustomProperty[] { displayName, addressTypeProp, internalFlag, modified }; AddReadOnlyAttribute(routingItem); AddOrReplaceDestinationRoutingItem(request, routingItem); }
private void ProcessSender(Request request) { string senderAddress = m_emailProxy.Sender.EmailAddress; string senderName = m_emailProxy.Sender.Name; Workshare.PolicyContent.RoutingItem routingItem = new Workshare.PolicyContent.RoutingItem(); routingItem.Content = senderAddress; CustomProperty displayName = new CustomProperty(SMTPItemPropertyKeys.DisplayName, senderName); CustomProperty addressType = new CustomProperty(SMTPItemPropertyKeys.AddressType, AddressType.From); CustomProperty internalFlag = new CustomProperty(SMTPItemPropertyKeys.Internal, m_emailProxy.Sender.Internal.ToString()); routingItem.Properties = new CustomProperty[] { displayName, addressType, internalFlag }; request.Source.Items = new Workshare.PolicyContent.RoutingItem[] { routingItem }; }
public void GetDigestMissingSubjectProperty() { Request request = new Request(); request.Properties = new CustomProperty[0];//Invalid, this should cause the throw RoutingEntity sourceRouting = new RoutingEntity(); sourceRouting.RoutingType = "Source"; RoutingItem item = new RoutingItem(); item.Content = "*****@*****.**"; sourceRouting.Items = new RoutingItem[] { item }; request.Source = sourceRouting; try { string digest = new RequestDigestProvider().GetDigest(request); } catch (ArgumentException) { Assert.IsTrue(true, "Expecting method to throw this ArgumentException"); return; } Assert.Fail("Should have thrown the ArgumentException"); }
public void GetDigestEmptyRoutingItem() { Request request = new Request(); List<CustomProperty> props = new List<CustomProperty>(); props.Add(new CustomProperty("Subject", "This is a subject")); request.Properties = props.ToArray(); RoutingEntity sourceRouting = new RoutingEntity(); RoutingItem item = new RoutingItem(); item.Content = string.Empty; //Invalid, this should cause the throw sourceRouting.Items = new RoutingItem[] { item }; request.Source = sourceRouting; request.Properties = props.ToArray(); try { string digest = new RequestDigestProvider().GetDigest(request); } catch (ArgumentException) { Assert.IsTrue(true, "Expecting method to throw this ArgumentException"); return; } Assert.Fail("Should have thrown the ArgumentException"); }