コード例 #1
0
        public void ExportPolicy_CustomEncoding_Soap12August2004()
        {
            ConnectionOrientedTransportBindingElement binding_element = new NamedPipeTransportBindingElement();
            IPolicyExportExtension  export_extension   = binding_element as IPolicyExportExtension;
            PolicyConversionContext conversion_context = new CustomPolicyConversionContext();

            conversion_context.BindingElements.Add(new MyMessageEncodingElement(MessageVersion.Soap12WSAddressingAugust2004));
            export_extension.ExportPolicy(new WsdlExporter(), conversion_context);

            PolicyAssertionCollection binding_assertions = conversion_context.GetBindingAssertions();
            BindingElementCollection  binding_elements   = conversion_context.BindingElements;

            Assert.AreEqual(1, binding_assertions.Count, "#A0");
            Assert.AreEqual(1, binding_elements.Count, "#A1");

            // UsingAddressing
            XmlNode using_addressing_node = FindAssertionByLocalName(binding_assertions, "UsingAddressing");

            Assert.AreEqual(true, using_addressing_node != null, "#B0");
            Assert.AreEqual("UsingAddressing", using_addressing_node.LocalName, "#B1");
            Assert.AreEqual("http://schemas.xmlsoap.org/ws/2004/08/addressing/policy", using_addressing_node.NamespaceURI, "#B2");
            Assert.AreEqual(String.Empty, using_addressing_node.InnerText, "#B3");
            Assert.AreEqual(0, using_addressing_node.Attributes.Count, "#B4");
            Assert.AreEqual(0, using_addressing_node.ChildNodes.Count, "#B5");
        }
コード例 #2
0
        public void ExportPolicyDefault()
        {
            ConnectionOrientedTransportBindingElement binding_element = new NamedPipeTransportBindingElement();
            IPolicyExportExtension  export_extension   = binding_element as IPolicyExportExtension;
            PolicyConversionContext conversion_context = new CustomPolicyConversionContext();

            export_extension.ExportPolicy(new WsdlExporter(), conversion_context);

            PolicyAssertionCollection binding_assertions = conversion_context.GetBindingAssertions();
            BindingElementCollection  binding_elements   = conversion_context.BindingElements;

            Assert.AreEqual(2, binding_assertions.Count, "#A0");
            Assert.AreEqual(0, binding_elements.Count, "#A1");

            // wsaw:UsingAddressing
            XmlNode using_addressing_node = FindAssertion(binding_assertions, "wsaw:UsingAddressing");

            Assert.AreEqual(true, using_addressing_node != null, "#B0");
            Assert.AreEqual("UsingAddressing", using_addressing_node.LocalName, "#B1");
            Assert.AreEqual("http://www.w3.org/2006/05/addressing/wsdl", using_addressing_node.NamespaceURI, "#B2");
            Assert.AreEqual(String.Empty, using_addressing_node.InnerText, "#B3");
            Assert.AreEqual(0, using_addressing_node.Attributes.Count, "#B4");
            Assert.AreEqual(0, using_addressing_node.ChildNodes.Count, "#B5");

            // msb:BinaryEncoding
            XmlNode binary_encoding_node = FindAssertion(binding_assertions, "msb:BinaryEncoding");

            Assert.AreEqual(true, binary_encoding_node != null, "#C0");
            Assert.AreEqual("BinaryEncoding", binary_encoding_node.LocalName, "#C1");
            Assert.AreEqual("http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1", binary_encoding_node.NamespaceURI, "#C2");
            Assert.AreEqual(String.Empty, binary_encoding_node.InnerText, "#C3");
            Assert.AreEqual(0, binary_encoding_node.Attributes.Count, "#C4");
            Assert.AreEqual(0, binary_encoding_node.ChildNodes.Count, "#C5");
        }
コード例 #3
0
        public void ExportPolicyDefault()
        {
            MsmqBindingElementBase  binding_element    = new MsmqTransportBindingElement();
            IPolicyExportExtension  export_extension   = binding_element as IPolicyExportExtension;
            PolicyConversionContext conversion_context = new CustomPolicyConversionContext();

            export_extension.ExportPolicy(new WsdlExporter(), conversion_context);

            PolicyAssertionCollection binding_assertions = conversion_context.GetBindingAssertions();
            BindingElementCollection  binding_elements   = conversion_context.BindingElements;

            Assert.AreEqual(4, binding_assertions.Count, "#A0");
            Assert.AreEqual(0, binding_elements.Count, "#A1");

            // wsaw:UsingAddressing
            XmlNode using_addressing_node = FindAssertion(binding_assertions, "wsaw:UsingAddressing");

            Assert.AreEqual(true, using_addressing_node != null, "#B0");
            Assert.AreEqual("UsingAddressing", using_addressing_node.LocalName, "#B1");
            Assert.AreEqual("http://www.w3.org/2006/05/addressing/wsdl", using_addressing_node.NamespaceURI, "#B2");
            Assert.AreEqual(String.Empty, using_addressing_node.InnerText, "#B3");
            Assert.AreEqual(0, using_addressing_node.Attributes.Count, "#B4");
            Assert.AreEqual(0, using_addressing_node.ChildNodes.Count, "#B5");

            // msb:BinaryEncoding
            XmlNode binary_encoding_node = FindAssertion(binding_assertions, "msb:BinaryEncoding");

            Assert.AreEqual(true, binary_encoding_node != null, "#C0");
            Assert.AreEqual("BinaryEncoding", binary_encoding_node.LocalName, "#C1");
            Assert.AreEqual("http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1", binary_encoding_node.NamespaceURI, "#C2");
            Assert.AreEqual(String.Empty, binary_encoding_node.InnerText, "#C3");
            Assert.AreEqual(0, binary_encoding_node.Attributes.Count, "#C4");
            Assert.AreEqual(0, binary_encoding_node.ChildNodes.Count, "#C5");

            // msmq:Authenticated
            XmlNode authenticated_node = FindAssertion(binding_assertions, "msmq:Authenticated");

            Assert.AreEqual(true, authenticated_node != null, "#D0");
            Assert.AreEqual("Authenticated", authenticated_node.LocalName, "#D1");
            Assert.AreEqual("http://schemas.microsoft.com/ws/06/2004/mspolicy/msmq", authenticated_node.NamespaceURI, "#D2");
            Assert.AreEqual(String.Empty, authenticated_node.InnerText, "#D3");
            Assert.AreEqual(0, authenticated_node.Attributes.Count, "#D4");
            Assert.AreEqual(0, authenticated_node.ChildNodes.Count, "#D5");

            // msmq:WindowsDomain
            XmlNode domain_node = FindAssertion(binding_assertions, "msmq:WindowsDomain");

            Assert.AreEqual(true, domain_node != null, "#E0");
            Assert.AreEqual("WindowsDomain", domain_node.LocalName, "#E1");
            Assert.AreEqual("http://schemas.microsoft.com/ws/06/2004/mspolicy/msmq", domain_node.NamespaceURI, "#E2");
            Assert.AreEqual(String.Empty, domain_node.InnerText, "#E3");
            Assert.AreEqual(0, domain_node.Attributes.Count, "#E4");
            Assert.AreEqual(0, domain_node.ChildNodes.Count, "#E5");
        }
コード例 #4
0
        public void ExportPolicy_CustomEncoding_Soap12()
        {
            ConnectionOrientedTransportBindingElement binding_element = new NamedPipeTransportBindingElement();
            IPolicyExportExtension  export_extension   = binding_element as IPolicyExportExtension;
            PolicyConversionContext conversion_context = new CustomPolicyConversionContext();

            conversion_context.BindingElements.Add(new MyMessageEncodingElement(MessageVersion.Soap12));
            export_extension.ExportPolicy(new WsdlExporter(), conversion_context);

            PolicyAssertionCollection binding_assertions = conversion_context.GetBindingAssertions();
            BindingElementCollection  binding_elements   = conversion_context.BindingElements;

            Assert.AreEqual(0, binding_assertions.Count, "#A0");
            Assert.AreEqual(1, binding_elements.Count, "#A1");
        }
コード例 #5
0
        public void ExportPolicy()
        {
            HttpTransportBindingElement http_binding_element = new HttpTransportBindingElement();

            //
            // Specify some non-default values
            //
            http_binding_element.AllowCookies              = !http_binding_element.AllowCookies;
            http_binding_element.AuthenticationScheme      = AuthenticationSchemes.Ntlm;
            http_binding_element.BypassProxyOnLocal        = !http_binding_element.BypassProxyOnLocal;
            http_binding_element.HostNameComparisonMode    = HostNameComparisonMode.WeakWildcard;
            http_binding_element.KeepAliveEnabled          = !http_binding_element.KeepAliveEnabled;
            http_binding_element.ManualAddressing          = !http_binding_element.ManualAddressing;
            http_binding_element.MaxBufferPoolSize         = http_binding_element.MaxBufferPoolSize / 2;
            http_binding_element.MaxBufferSize             = http_binding_element.MaxBufferSize / 2;
            http_binding_element.MaxReceivedMessageSize    = http_binding_element.MaxReceivedMessageSize / 2;
            http_binding_element.ProxyAddress              = new Uri("http://proxyaddress.com");
            http_binding_element.ProxyAuthenticationScheme = AuthenticationSchemes.Basic;
            http_binding_element.Realm        = "RandomRealm";
            http_binding_element.TransferMode = TransferMode.Streamed;
            http_binding_element.UnsafeConnectionNtlmAuthentication = !http_binding_element.UnsafeConnectionNtlmAuthentication;
            http_binding_element.UseDefaultWebProxy       = !http_binding_element.UseDefaultWebProxy;
            http_binding_element.DecompressionEnabled     = !http_binding_element.DecompressionEnabled;
            http_binding_element.ExtendedProtectionPolicy = new ExtendedProtectionPolicy(PolicyEnforcement.WhenSupported);

            //
            // Actual call to ExportPolicy
            //
            IPolicyExportExtension  binding_element    = http_binding_element as IPolicyExportExtension;
            PolicyConversionContext conversion_context = new CustomPolicyConversionContext();

            binding_element.ExportPolicy(new WsdlExporter(), conversion_context);

            PolicyAssertionCollection binding_assertions = conversion_context.GetBindingAssertions();
            BindingElementCollection  binding_elements   = conversion_context.BindingElements;

            Assert.AreEqual(2, binding_assertions.Count, "#A0");
            Assert.AreEqual(0, binding_elements.Count, "#A1");

            // AuthenticationScheme - the only property that causes information to be exported.
            XmlNode authentication_node = FindAssertion(binding_assertions, "http:NtlmAuthentication");

            Assert.AreEqual(true, authentication_node != null, "#B0");
            Assert.AreEqual("NtlmAuthentication", authentication_node.LocalName, "#B1");
            Assert.AreEqual("http://schemas.microsoft.com/ws/06/2004/policy/http", authentication_node.NamespaceURI, "#B2");
            Assert.AreEqual(String.Empty, authentication_node.InnerText, "#B3");
            Assert.AreEqual(0, authentication_node.Attributes.Count, "#B4");
        }
コード例 #6
0
        void System.ServiceModel.Description.IPolicyExportExtension.ExportPolicy(MetadataExporter exporter, PolicyConversionContext context)
        {
            if (exporter == null || context == null)
            {
                throw Microsoft.ServiceBus.Messaging.FxTrace.Exception.ArgumentNull((exporter == null ? "exporter" : "context"));
            }
            ICollection <XmlElement> bindingAssertions = context.GetBindingAssertions();

            bindingAssertions.Add((new XmlDocument()).CreateElement("sb", "netMessaging", "http://sample.schemas.microsoft.com/policy/netMessaging"));
            MessageEncodingBindingElement messageEncodingBindingElement = context.BindingElements.Find <MessageEncodingBindingElement>();

            if (messageEncodingBindingElement == null)
            {
                messageEncodingBindingElement = Microsoft.ServiceBus.Messaging.Channels.TransportDefaults.CreateDefaultEncoder();
                IPolicyExportExtension policyExportExtension = messageEncodingBindingElement as IPolicyExportExtension;
                if (policyExportExtension != null)
                {
                    policyExportExtension.ExportPolicy(exporter, context);
                }
            }
            WSAddressingHelper.AddWSAddressingAssertion(exporter, context, messageEncodingBindingElement.MessageVersion.Addressing);
        }
コード例 #7
0
        public void ExportPolicy()
        {
            ConnectionOrientedTransportBindingElement binding_element = new NamedPipeTransportBindingElement();

            binding_element.ChannelInitializationTimeout = TimeSpan.FromSeconds(3);
            binding_element.ConnectionBufferSize         = binding_element.ConnectionBufferSize / 2;
            binding_element.HostNameComparisonMode       = HostNameComparisonMode.WeakWildcard;
            binding_element.ManualAddressing             = !binding_element.ManualAddressing;
            binding_element.MaxBufferSize          = binding_element.MaxBufferSize / 2;
            binding_element.MaxBufferPoolSize      = binding_element.MaxBufferPoolSize / 2;
            binding_element.MaxOutputDelay         = TimeSpan.FromSeconds(3);
            binding_element.MaxPendingAccepts      = 3;
            binding_element.MaxPendingConnections  = 15;
            binding_element.MaxReceivedMessageSize = binding_element.MaxReceivedMessageSize / 2;
            binding_element.TransferMode           = TransferMode.Streamed;   // Causes an assertion with Streamed* values

            IPolicyExportExtension  export_extension   = binding_element as IPolicyExportExtension;
            PolicyConversionContext conversion_context = new CustomPolicyConversionContext();

            export_extension.ExportPolicy(new WsdlExporter(), conversion_context);

            PolicyAssertionCollection binding_assertions = conversion_context.GetBindingAssertions();
            BindingElementCollection  binding_elements   = conversion_context.BindingElements;

            Assert.AreEqual(3, binding_assertions.Count, "#A0");
            Assert.AreEqual(0, binding_elements.Count, "#A1");

            // msf:Streamed
            XmlNode streamed_node = FindAssertion(binding_assertions, "msf:Streamed");

            Assert.AreEqual(true, streamed_node != null, "#B0");
            Assert.AreEqual("Streamed", streamed_node.LocalName, "#B1");
            Assert.AreEqual("http://schemas.microsoft.com/ws/2006/05/framing/policy", streamed_node.NamespaceURI, "#B2");
            Assert.AreEqual(String.Empty, streamed_node.InnerText, "#B3");
            Assert.AreEqual(0, streamed_node.Attributes.Count, "#B4");
            Assert.AreEqual(0, streamed_node.ChildNodes.Count, "#B5");
        }
 private Exception CreateExtensionException(IPolicyExportExtension exporter, Exception e)
 {
     return new InvalidOperationException(System.ServiceModel.SR.GetString("PolicyExtensionExportError", new object[] { exporter.GetType(), e.Message }), e);
 }
コード例 #9
0
        public void ExportPolicy()
        {
            MsmqBindingElementBase binding_element = new MsmqTransportBindingElement();

            binding_element.CustomDeadLetterQueue = new Uri("msmq://custom");
            binding_element.DeadLetterQueue       = DeadLetterQueue.Custom;
            binding_element.Durable                = !binding_element.Durable;     // Volatile
            binding_element.ExactlyOnce            = !binding_element.ExactlyOnce; // BestEffort
            binding_element.ManualAddressing       = !binding_element.ManualAddressing;
            binding_element.MaxBufferPoolSize      = binding_element.MaxBufferPoolSize / 2;
            binding_element.MaxReceivedMessageSize = binding_element.MaxReceivedMessageSize / 2;
            binding_element.MaxRetryCycles         = binding_element.MaxRetryCycles / 2;
            binding_element.ReceiveRetryCount      = 10;
            binding_element.ReceiveErrorHandling   = ReceiveErrorHandling.Reject;
            binding_element.RetryCycleDelay        = TimeSpan.FromSeconds(5);
            binding_element.TimeToLive             = TimeSpan.FromSeconds(60);
            binding_element.UseMsmqTracing         = !binding_element.UseMsmqTracing;
            binding_element.UseSourceJournal       = !binding_element.UseSourceJournal;
#if NET_4_0
            // This ones haven't been implemented yet, so comment them for now.
            //binding_element.ReceiveContextEnabled = !binding_element.ReceiveContextEnabled;
            //binding_element.ValidityDuration = TimeSpan.FromSeconds (30);
#endif

            binding_element.MsmqTransportSecurity.MsmqAuthenticationMode  = MsmqAuthenticationMode.Certificate;
            binding_element.MsmqTransportSecurity.MsmqEncryptionAlgorithm = MsmqEncryptionAlgorithm.Aes;
            binding_element.MsmqTransportSecurity.MsmqProtectionLevel     = ProtectionLevel.EncryptAndSign;
            binding_element.MsmqTransportSecurity.MsmqSecureHashAlgorithm = MsmqSecureHashAlgorithm.Sha256;

            IPolicyExportExtension  export_extension   = binding_element as IPolicyExportExtension;
            PolicyConversionContext conversion_context = new CustomPolicyConversionContext();
            export_extension.ExportPolicy(new WsdlExporter(), conversion_context);

            PolicyAssertionCollection binding_assertions = conversion_context.GetBindingAssertions();
            BindingElementCollection  binding_elements   = conversion_context.BindingElements;
            Assert.AreEqual(5, binding_assertions.Count, "#A0");
            Assert.AreEqual(0, binding_elements.Count, "#A1");

            // msmq:MsmqVolatile
            XmlNode volatile_node = FindAssertion(binding_assertions, "msmq:MsmqVolatile");
            Assert.AreEqual(true, volatile_node != null, "#B0");
            Assert.AreEqual("MsmqVolatile", volatile_node.LocalName, "#B1");
            Assert.AreEqual("http://schemas.microsoft.com/ws/06/2004/mspolicy/msmq", volatile_node.NamespaceURI, "#B2");
            Assert.AreEqual(String.Empty, volatile_node.InnerText, "#B3");
            Assert.AreEqual(0, volatile_node.Attributes.Count, "#B4");
            Assert.AreEqual(0, volatile_node.ChildNodes.Count, "#B5");

            // msmq:MsmqBestEffort
            XmlNode best_effort_node = FindAssertion(binding_assertions, "msmq:MsmqBestEffort");
            Assert.AreEqual(true, best_effort_node != null, "#C0");
            Assert.AreEqual("MsmqBestEffort", best_effort_node.LocalName, "#C1");
            Assert.AreEqual("http://schemas.microsoft.com/ws/06/2004/mspolicy/msmq", best_effort_node.NamespaceURI, "#C2");
            Assert.AreEqual(String.Empty, best_effort_node.InnerText, "#C3");
            Assert.AreEqual(0, best_effort_node.Attributes.Count, "#C4");
            Assert.AreEqual(0, best_effort_node.ChildNodes.Count, "#C5");

            // Setting MsmqTransportSecurity.MsmqAuthenticationMode to a value other than WindowsDomain
            // causes the removal of the WindowsDomain policy.
            XmlNode domain_node = FindAssertion(binding_assertions, "msmq:WindowsDomain");
            Assert.AreEqual(true, domain_node == null, "#D0");
        }
コード例 #10
0
 Exception CreateExtensionException(IPolicyExportExtension exporter, Exception e)
 {
     string errorMessage = SR.GetString(SR.PolicyExtensionExportError, exporter.GetType(), e.Message);
     return new InvalidOperationException(errorMessage, e);
 }
コード例 #11
0
 private Exception CreateExtensionException(IPolicyExportExtension exporter, Exception e)
 {
     return(new InvalidOperationException(System.ServiceModel.SR.GetString("PolicyExtensionExportError", new object[] { exporter.GetType(), e.Message }), e));
 }