Esempio n. 1
0
 public virtual void SetUp()
 {
     log4net.Config.XmlConfigurator.Configure(Assembly.GetExecutingAssembly().GetManifestResourceStream("DotNetOpenAuth.Test.Logging.config"));
     MessageBase.LowSecurityMode = true;
     this.messageDescriptions    = new MessageDescriptionCollection();
     SetMockHttpContext();
 }
Esempio n. 2
0
 public virtual void SetUp()
 {
     MessageBase.LowSecurityMode = true;
     this.messageDescriptions    = new MessageDescriptionCollection();
     this.HostFactories          = new MockingHostFactories();
     SetMockHttpContext();
 }
Esempio n. 3
0
        static void Main(string[] args)
        {
            ContractDescription          contract = ContractDescription.GetContract(typeof(IContract));
            OperationDescription         op       = contract.Operations[0];
            MessageDescriptionCollection mdc      = op.Messages;

            MessageDescription md = mdc.Find("http://SomeAction");
            ICollection <MessageDescription> col = mdc.FindAll("http://SomeAction");

            foreach (MessageDescription desc in col)
            {
                Console.WriteLine("Action = {0}", desc.Action);
            }
        }
        internal static UnauthorizedTokenRequest CreateTestRequestTokenMessage(MessageDescriptionCollection messageDescriptions, MessageReceivingEndpoint endpoint)
        {
            endpoint = endpoint ?? new MessageReceivingEndpoint("https://www.google.com/accounts/OAuthGetRequestToken", HttpDeliveryMethods.AuthorizationHeaderRequest | HttpDeliveryMethods.GetRequest);
            UnauthorizedTokenRequest message = new UnauthorizedTokenRequest(endpoint, Protocol.V10.Version);

            message.ConsumerKey = "nerdbank.org";
            ((ITamperResistantOAuthMessage)message).ConsumerSecret = "nerdbanksecret";
            var signedMessage = (ITamperResistantOAuthMessage)message;

            signedMessage.HttpMethod      = "GET";
            signedMessage.SignatureMethod = "HMAC-SHA1";
            MessageDictionary dictionary = messageDescriptions.GetAccessor(message);

            dictionary["oauth_timestamp"] = "1222665749";
            dictionary["oauth_nonce"]     = "fe4045a3f0efdd1e019fa8f8ae3f5c38";
            dictionary["scope"]           = "http://www.google.com/m8/feeds/";
            return(message);
        }
 public OperationDescription(string name, ContractDescription declaringContract)
 {
     if (name == null)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("name");
     }
     if (name.Length == 0)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(
             new ArgumentOutOfRangeException("name", SR.SFxOperationDescriptionNameCannotBeEmpty));
     }
     _name = new XmlName(name, true /*isEncoded*/);
     if (declaringContract == null)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("declaringContract");
     }
     _declaringContract = declaringContract;
     _isInitiating = true;
     _faults = new FaultDescriptionCollection();
     _messages = new MessageDescriptionCollection();
     _behaviors = new KeyedByTypeCollection<IOperationBehavior>();
     _knownTypes = new Collection<Type>();
 }
 // Methods
 public OperationDescription(string name, ContractDescription declaringContract)
 {
     this.validateRpcWrapperName = true;
     if (name == null)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("name");
     }
     if (name.Length == 0)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("name", SR.GetString("SFxOperationDescriptionNameCannotBeEmpty")));
     }
     this.name = new XmlName(name, true);
     if (declaringContract == null)
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("declaringContract");
     }
     this.declaringContract = declaringContract;
     this.isInitiating = true;
     this.isTerminating = false;
     this.faults = new FaultDescriptionCollection();
     this.messages = new MessageDescriptionCollection();
     this.behaviors = new KeyedByTypeCollection<IOperationBehavior>();
     this.knownTypes = new Collection<Type>();
 }
		private CodeExpression[] ExportMessages (MessageDescriptionCollection messages, CodeMemberMethod method, bool return_args)
		{
			CodeExpression [] args = null;
			foreach (MessageDescription md in messages) {
				if (md.Direction == MessageDirection.Output) {
					if (md.Body.ReturnValue != null) {
						ExportDataContract (md.Body.ReturnValue);
						method.ReturnType = md.Body.ReturnValue.CodeTypeReference;
					}
					continue;
				}

				if (return_args)
					args = new CodeExpression [md.Body.Parts.Count];

				MessagePartDescriptionCollection parts = md.Body.Parts;
				for (int i = 0; i < parts.Count; i++) {
					ExportDataContract (parts [i]);

					method.Parameters.Add (
						new CodeParameterDeclarationExpression (
							parts [i].CodeTypeReference,
							parts [i].Name));

					if (return_args)
						args [i] = new CodeArgumentReferenceExpression (parts [i].Name);
				}
			}

			return args;
		}
        /// <summary>
        /// Generates all the message descriptions for a given set of message types and versions.
        /// </summary>
        /// <param name="messageTypes">The message types.</param>
        /// <param name="versions">The message versions.</param>
        /// <param name="descriptionsCache">The cache to use when obtaining the message descriptions.</param>
        /// <returns>The generated/retrieved message descriptions.</returns>
        private static IEnumerable <MessageDescription> GetMessageDescriptions(ICollection <Type> messageTypes, ICollection <Version> versions, MessageDescriptionCollection descriptionsCache)
        {
            Requires.NotNull(messageTypes, "messageTypes");
            Requires.NotNull(descriptionsCache, "descriptionsCache");
            Contract.Ensures(Contract.Result <IEnumerable <MessageDescription> >() != null);

            // Get all the MessageDescription objects through the standard cache,
            // so that perhaps it will be a quick lookup, or at least it will be
            // stored there for a quick lookup later.
            var messageDescriptions = new List <MessageDescription>(messageTypes.Count * versions.Count);

            messageDescriptions.AddRange(from version in versions
                                         from messageType in messageTypes
                                         select descriptionsCache.Get(messageType, version));

            return(messageDescriptions);
        }
Esempio n. 9
0
 public DataContractMessagesFormatter(MessageDescriptionCollection messages, DataContractFormatAttribute attr)
     : base(messages)
 {
     this.attr = attr;
 }
Esempio n. 10
0
 public BaseMessagesFormatter(MessageDescriptionCollection messages)
 {
     this.messages = messages;
 }
Esempio n. 11
0
		public DataContractMessagesFormatter (MessageDescriptionCollection messages, DataContractFormatAttribute attr)
			: base (messages)
		{
			this.attr = attr;
		}
Esempio n. 12
0
		public XmlMessagesFormatter (MessageDescriptionCollection messages, XmlSerializerFormatAttribute attr)
			: base (messages)
		{
			this.attr = attr;
		}
Esempio n. 13
0
    // Helper method to validate the given ContractDescription has the expected type and operations.
    public static string ValidateContractDescription(ContractDescription contract, Type expectedType, ContractDescriptionData expectedContract)
    {
        OperationDescriptionData[] expectedOperations = expectedContract.Operations;

#if DEBUGGING
        DumpContractDescription(contract);
#endif
        StringBuilder errorBuilder = new StringBuilder();
        string        prefix       = String.Format("    Contract type: {0}", expectedType);
        try
        {
            // ContractType must match expected type
            Type contractType = contract.ContractType;
            if (!expectedType.Equals(contractType))
            {
                errorBuilder.AppendLine(String.Format("{0} expected Type = {0}, actual = {1}", prefix, expectedType, contractType));
            }

            // Must have exactly the expected number of OperationDescriptions
            OperationDescriptionCollection ops = contract.Operations;
            if (ops.Count != expectedOperations.Length)
            {
                errorBuilder.AppendLine(String.Format("{0} operations.Count: expected={1}, actual = {2}", prefix, expectedOperations.Length, ops.Count));
            }

            foreach (OperationDescriptionData expectedOp in expectedOperations)
            {
                // Must have each operation by name
                OperationDescription op = ops.Find(expectedOp.Name);
                if (op == null)
                {
                    errorBuilder.AppendLine(String.Format("{0} operations: could not find operation {1}", prefix, expectedOp.Name));
                }
                else
                {
                    // Has expected operation name
                    if (!op.Name.Equals(expectedOp.Name))
                    {
                        errorBuilder.AppendLine(String.Format("{0} expected operation Name = {1}, actual = {2}",
                                                              prefix, expectedOp.Name, op.Name));
                    }

                    // Has expected one-way setting
                    if (op.IsOneWay != expectedOp.IsOneWay)
                    {
                        errorBuilder.AppendLine(String.Format("{0} expected operation {1}.IsOneWay = {2}, actual = {3}",
                                                              prefix, expectedOp.Name, expectedOp.IsOneWay, op.IsOneWay));
                    }

                    // If contains XxxAsync operation, op.TaskMethod will be non-null.  Verify it as expected.
                    bool hasTask = op.TaskMethod != null;
                    if (hasTask != expectedOp.HasTask)
                    {
                        errorBuilder.AppendLine(String.Format("{0} expected operation {1}.HasTask = {2}, actual = {3}",
                                                              prefix, expectedOp.Name, expectedOp.HasTask, hasTask));
                    }

                    // Validate each MessageDescription for each OperationDescription
                    MessageDescriptionCollection messages = op.Messages;
                    foreach (MessageDescriptionData messageData in expectedOp.Messages)
                    {
                        // Must find each expected MessageDescription by Action name
                        MessageDescription messageDesc = messages.FirstOrDefault(m => m.Action.Equals(messageData.Action));
                        if (messageDesc == null)
                        {
                            errorBuilder.AppendLine(String.Format("{0} could not find expected message action {1} in operation {2}",
                                                                  prefix, messageData.Action, op.Name));
                        }
                        else
                        {
                            // Must have expected direction
                            if (messageDesc.Direction != messageData.Direction)
                            {
                                errorBuilder.AppendLine(String.Format("{0} message action {1} expected Direction = {2}, actual = {3}",
                                                                      prefix, messageData.Action, messageData.Direction, messageDesc.Direction));
                            }

                            // MessageType is non-null for operations containing MessageContract types.
                            // Verify we were able to build a "typed message" from the MessageContract.
                            if (messageData.MessageType != null && !messageData.MessageType.Equals(messageDesc.MessageType))
                            {
                                errorBuilder.AppendLine(String.Format("{0} message action {1} expected MessageType = {2}, actual = {3}",
                                                                      prefix, messageData.Action, messageData.MessageType, messageDesc.MessageType));
                            }
                        }
                    }
                }
            }
        }
        catch (Exception ex)
        {
            errorBuilder.AppendLine(String.Format("{0} unexpected exception was caught: {1}",
                                                  prefix, ex.ToString()));
        }

        return(errorBuilder.Length == 0 ? null : errorBuilder.ToString());
    }
Esempio n. 14
0
 internal TestChannel(MessageDescriptionCollection messageDescriptions, IHostFactories hostFactories = null)
     : this(hostFactories) {
     this.MessageDescriptions = messageDescriptions;
 }
Esempio n. 15
0
 public XmlMessagesFormatter(MessageDescriptionCollection messages, XmlSerializerFormatAttribute attr)
     : base(messages)
 {
     this.attr = attr;
 }
Esempio n. 16
0
 internal TestChannel(MessageDescriptionCollection messageDescriptions)
     : this()
 {
     this.MessageDescriptions = messageDescriptions;
 }
		private CodeExpression[] ExportMessages (MessageDescriptionCollection messages, CodeMemberMethod method, bool return_args)
		{
			CodeExpression [] args = null;
			foreach (MessageDescription md in messages) {
				if (!md.IsRequest) {
					if (md.Body.ReturnValue != null) {
						ExportDataContract (md.Body.ReturnValue);
#if USE_DATA_CONTRACT_IMPORTER
						method.ReturnType = md.Body.ReturnValue.CodeTypeReference;
#else
						method.ReturnType = new CodeTypeReference (GetCodeTypeName (md.Body.ReturnValue.TypeName));
#endif
					}
					continue;
				}

				if (return_args)
					args = new CodeExpression [md.Body.Parts.Count];

				MessagePartDescriptionCollection parts = md.Body.Parts;
				for (int i = 0; i < parts.Count; i++) {
					ExportDataContract (parts [i]);

					method.Parameters.Add (
						new CodeParameterDeclarationExpression (
#if USE_DATA_CONTRACT_IMPORTER
							parts [i].CodeTypeReference,
#else
							new CodeTypeReference (GetCodeTypeName (parts [i].TypeName)),
#endif
							parts [i].Name));

					if (return_args)
						args [i] = new CodeArgumentReferenceExpression (parts [i].Name);
				}
			}

			return args;
		}
Esempio n. 18
0
        internal static UnauthorizedTokenRequest CreateTestRequestTokenMessageNoOAuthVersion(MessageDescriptionCollection messageDescriptions, MessageReceivingEndpoint endpoint)
        {
            endpoint = endpoint ?? new MessageReceivingEndpoint("https://www.google.com/accounts/OAuthGetRequestToken", HttpDeliveryMethods.AuthorizationHeaderRequest | HttpDeliveryMethods.GetRequest);
            var parts = new Dictionary <string, string>();

            parts["oauth_consumer_key"] = "nerdbank.org";
            parts["oauth_timestamp"]    = "1222665749";
            parts["oauth_nonce"]        = "fe4045a3f0efdd1e019fa8f8ae3f5c38";
            parts["scope"] = "http://www.google.com/m8/feeds/";
            parts["oauth_signature_method"] = "HMAC-SHA1";
            parts["oauth_signature"]        = "anything non-empty";

            UnauthorizedTokenRequest message    = new UnauthorizedTokenRequest(endpoint, Protocol.V10.Version);
            MessageDictionary        dictionary = messageDescriptions.GetAccessor(message);

            MessageSerializer.Get(typeof(UnauthorizedTokenRequest)).Deserialize(parts, dictionary);

            return(message);
        }
		/// <summary>
		/// Generates all the message descriptions for a given set of message types and versions.
		/// </summary>
		/// <param name="messageTypes">The message types.</param>
		/// <param name="versions">The message versions.</param>
		/// <param name="descriptionsCache">The cache to use when obtaining the message descriptions.</param>
		/// <returns>The generated/retrieved message descriptions.</returns>
		private static IEnumerable<MessageDescription> GetMessageDescriptions(ICollection<Type> messageTypes, ICollection<Version> versions, MessageDescriptionCollection descriptionsCache)
		{
			Requires.NotNull(messageTypes, "messageTypes");
			Requires.NotNull(descriptionsCache, "descriptionsCache");
			Contract.Ensures(Contract.Result<IEnumerable<MessageDescription>>() != null);

			// Get all the MessageDescription objects through the standard cache,
			// so that perhaps it will be a quick lookup, or at least it will be
			// stored there for a quick lookup later.
			var messageDescriptions = new List<MessageDescription>(messageTypes.Count * versions.Count);
			messageDescriptions.AddRange(from version in versions
			                             from messageType in messageTypes
			                             select descriptionsCache.Get(messageType, version));

			return messageDescriptions;
		}
Esempio n. 20
0
		public BaseMessagesFormatter (MessageDescriptionCollection messages)
		{
			this.messages = messages;
		}
        private static IEnumerable <MessageDescription> GetMessageDescriptions(ICollection <Type> messageTypes, ICollection <Version> versions, MessageDescriptionCollection descriptionsCache)
        {
            var messageDescriptions = new List <MessageDescription>(messageTypes.Count * versions.Count);

            messageDescriptions.AddRange(from version in versions
                                         from messageType in messageTypes
                                         select descriptionsCache.Get(messageType, version));

            return(messageDescriptions);
        }
		static MessageDescriptionCollection MessageContractToMessagesDescription (
			Type src, string defaultNamespace, string action)
		{
			MessageContractAttribute mca =
				ContractDescriptionGenerator.GetMessageContractAttribute (src);

			if (mca == null)
				throw new ArgumentException (String.Format ("Type {0} and its ancestor types do not have MessageContract attribute.", src));

			MessageDescriptionCollection messages = new MessageDescriptionCollection ();
			messages.Add (ContractDescriptionGenerator.CreateMessageDescription (src, defaultNamespace, action, true, mca));
			messages.Add (ContractDescriptionGenerator.CreateMessageDescription (src, defaultNamespace, action, false, mca));
			return messages;
		}