//-----------------------------------------------------------------------
//
// Copyright (c) Outercurve Foundation. All rights reserved.
//
//-----------------------------------------------------------------------
namespace DotNetOpenAuth.Test.Mocks {
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DotNetOpenAuth.Messaging;
internal class TestMessageFactory : IMessageFactory {
private bool signedMessages;
private bool expiringMessages;
private bool replayMessages;
internal TestMessageFactory()
: this(false, false, false) {
}
internal TestMessageFactory(bool signed, bool expiring, bool replay) {
if ((!signed && expiring) || (!expiring && replay)) {
throw new ArgumentException("Invalid combination of protection.");
}
this.signedMessages = signed;
this.expiringMessages = expiring;
this.replayMessages = replay;
}
#region IMessageFactory Members
public IDirectedProtocolMessage GetNewRequestMessage(MessageReceivingEndpoint recipient, IDictionary fields) {
if (fields.ContainsKey("age")) {
if (this.signedMessages) {
if (this.expiringMessages) {
if (this.replayMessages) {
return new TestReplayProtectedMessage();
}
return new TestExpiringMessage();
}
return new TestSignedDirectedMessage();
}
var result = new TestDirectedMessage();
if (fields.ContainsKey("GetOnly")) {
result.HttpMethods = HttpDeliveryMethods.GetRequest;
}
return result;
}
return null;
}
public IDirectResponseProtocolMessage GetNewResponseMessage(IDirectedProtocolMessage request, IDictionary fields) {
TestMessage message = (TestMessage)this.GetNewRequestMessage(null, fields);
message.OriginatingRequest = request;
return message;
}
#endregion
}
}