public void TestLink()
{
const string issueKey = "TIL-001";
const string linkDescription = "Tested With";
const int issueId = 42;
var loginHttpClient = new Mock<IHttpClient>();
var linkHttpClient = new Mock<IHttpClient>();
var clientFactory = new Mock<IHttpClientFactory>();
clientFactory.Setup(factory => factory.Connect(LoginPage)).Returns(loginHttpClient.Object);
var config = new Mock<IHttpInterfaceConfiguration>();
config.Setup(cfg => cfg.LoginUrl).Returns(LoginPage);
config.Setup(cfg => cfg.LinkUrl).Returns(LinkPage);
HttpVariables loginVariables = new HttpVariables();
loginHttpClient.Setup(client => client.Variables).Returns(loginVariables);
loginHttpClient.Setup(client => client.Post()).Callback(delegate
{
Assert.AreEqual("john", loginVariables["os_username"]);
Assert.AreEqual("doe", loginVariables["os_password"]);
});
loginHttpClient.Setup(client => client.ResponseStream).Returns(new MemoryStream());
var jiraProxy = new JiraHttpProxy(clientFactory.Object, config.Object);
jiraProxy.Login(UserName, Password);
clientFactory.Setup(factory => factory.Connect(LinkPage)).Returns(linkHttpClient.Object);
HttpVariables linkVariables = new HttpVariables();
linkHttpClient.Setup(client => client.Variables).Returns(linkVariables);
linkHttpClient.Setup(client => client.ResponseStream).Returns(new MemoryStream());
linkHttpClient.Setup(client => client.Post()).Callback(delegate
{
Assert.AreEqual(linkDescription, linkVariables["linkDesc"]);
Assert.AreEqual(issueKey, linkVariables["linkKey"]);
Assert.AreEqual("", linkVariables["comment"]);
Assert.AreEqual("", linkVariables["commentLevel"]);
Assert.AreEqual(issueId.ToString(), linkVariables["id"]);
Assert.AreEqual("", linkVariables[""]);
Assert.AreEqual("Link", linkVariables["Link"]);
});
jiraProxy.CreateLink(issueId, linkDescription, issueKey, true);
loginHttpClient.VerifyAll();
linkHttpClient.VerifyAll();
}