public MockWebonaryClient(WebonaryClient.WebonaryException exceptionResponse, byte[] responseContents, HttpStatusCode responseStatus)
 {
     _exceptionResponse = exceptionResponse;
     _responseContents  = responseContents;
     Headers            = new WebHeaderCollection();
     ResponseStatusCode = responseStatus;
 }
        public void UploadToWebonaryReportsLackingPermissionsToUpload()
        {
            var ex = new WebonaryClient.WebonaryException(new WebException("Unable to connect to Webonary.  Please check your username and password and your Internet connection."));

            ex.StatusCode = HttpStatusCode.BadRequest;
            using (var controller = new MockUploadToWebonaryController(Cache, m_mediator, ex, null))
            {
                var view = new MockWebonaryDlg()
                {
                    Model = new UploadToWebonaryModel(m_mediator)
                    {
                        SiteName = "test-india",
                        UserName = "******",
                        Password = "******"
                    }
                };
                controller.UploadToWebonary("../../Src/xWorks/xWorksTests/lubwisi-d-new.zip", view.Model, view);
                Assert.That(view.StatusStrings.Any(s => s.Contains("Unable to connect to Webonary.  Please check your username and password and your Internet connection.")));
            }
        }
        public void UploadToWebonaryReportsIncorrectSiteName()
        {
            // Test for a successful response indicating that a redirect should happen
            using (var controller = new MockUploadToWebonaryController(Cache, m_mediator, null, new byte[] {}, HttpStatusCode.Found))
            {
                var view = new MockWebonaryDlg()
                {
                    Model = new UploadToWebonaryModel(m_mediator)
                    {
                        SiteName = "test",
                        UserName = "******",
                        Password = "******"
                    }
                };
                controller.UploadToWebonary("fakefile.zip", view.Model, view);
                Assert.That(view.StatusStrings.Any(s => s.Contains("Error: There has been an error accessing webonary. Is your sitename correct?")));
            }

            // Test with an exception which indicates a redirect should happen
            var redirectException = new WebonaryClient.WebonaryException(new WebException("Redirected."));

            redirectException.StatusCode = HttpStatusCode.Redirect;
            using (var controller = new MockUploadToWebonaryController(Cache, m_mediator, redirectException, new byte[] { }))
            {
                var view = new MockWebonaryDlg()
                {
                    Model = new UploadToWebonaryModel(m_mediator)
                    {
                        SiteName = "test",
                        UserName = "******",
                        Password = "******"
                    }
                };
                controller.UploadToWebonary("fakefile.zip", view.Model, view);
                Assert.That(view.StatusStrings.Any(s => s.Contains("Error: There has been an error accessing webonary. Is your sitename correct?")));
            }
        }
 /// <summary>
 /// Tests using this constructor do not need to be marked [ByHand]; an exception, response, and response code can all be set.
 /// </summary>
 public MockUploadToWebonaryController(FdoCache cache, Mediator mediator, WebonaryClient.WebonaryException exceptionResponse,
                                       byte[] responseContents, HttpStatusCode responseStatus = HttpStatusCode.OK) : base(cache, mediator)
 {
     CreateWebClient = () => new MockWebonaryClient(exceptionResponse, responseContents, responseStatus);
 }