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(); }