public void GivenNullUrlInCiEntryPointSetting_WhenGettingBuildStatus_ThenSosException()
        {
            // arrange
            var ciEntryPointSetting = new CiEntryPointSetting();
            var tfsRestWatcher      = new MyTfsRestWatcher(null, new BuildDefinitionSetting[] { }, ciEntryPointSetting);

            // act
            Assert.Throws <SosException>(() => tfsRestWatcher.MyGetBuildStatus(), "TFS URL is null or empty")
            ;
        }
        public void GivenHttpRequestException_WhenGettingBuildStatus_ThenServerUnavailableException()
        {
            // arrange
            var buildDefinitionSettings = new[] { new BuildDefinitionSetting() };
            var tfsRestService          = new Mock <TfsRestService>();
            var ciEntryPointSetting     = new CiEntryPointSetting {
                Url = "url"
            };

            tfsRestService.Setup(i => i.GetBuildsStatuses(ciEntryPointSetting, buildDefinitionSettings))
            .ThrowsAsync(new System.Net.Http.HttpRequestException("Unable to connect to the remote server"));
            var tfsRestWatcher = new MyTfsRestWatcher(tfsRestService.Object, buildDefinitionSettings, ciEntryPointSetting);

            // assert & act
            Assert.Throws <ServerUnavailableException>(() =>
                                                       tfsRestWatcher.MyGetBuildStatus()
                                                       );
        }
        public void GivenWebExceptionRemoteNameCouldNotBeResolved_WhenGettingBuildStatus_ThenServerUnavailableException()
        {
            // arrange
            var buildDefinitionSettings = new[] { new BuildDefinitionSetting() };
            var tfsRestService          = new Mock <TfsRestService>();
            var ciEntryPointSetting     = new CiEntryPointSetting {
                Url = "url"
            };

            tfsRestService.Setup(i => i.GetBuildsStatuses(ciEntryPointSetting, buildDefinitionSettings))
            .ThrowsAsync(new WebException("The remote name could not be resolved:"));
            var tfsRestWatcher = new MyTfsRestWatcher(tfsRestService.Object, buildDefinitionSettings, ciEntryPointSetting);

            // assert & act
            Assert.Throws <ServerUnavailableException>(() =>
                                                       tfsRestWatcher.MyGetBuildStatus()
                                                       );
        }
        public void GivenHttpRequestExceptionWith401InMessage_WhenGettingBuildStatus_ThenInvalidCredentialsException()
        {
            // arrange
            var buildDefinitionSettings = new[] { new BuildDefinitionSetting() };
            var tfsRestService          = new Mock <TfsRestService>();
            var ciEntryPointSetting     = new CiEntryPointSetting {
                Url = "url"
            };

            tfsRestService.Setup(i => i.GetBuildsStatuses(ciEntryPointSetting, buildDefinitionSettings))
            .ThrowsAsync(new System.Net.Http.HttpRequestException("Response status code does not indicate success: 401 (Unauthorized)."));
            var tfsRestWatcher = new MyTfsRestWatcher(tfsRestService.Object, buildDefinitionSettings, ciEntryPointSetting);

            // assert & act
            Assert.Throws <InvalidCredentialsException>(() =>
                                                        tfsRestWatcher.MyGetBuildStatus()
                                                        );
        }
        public void GivenTaskCanceledExceptionAkaTimeout_WhenGettingBuildStatus_ThenServerUnavailableException()
        {
            // arrange
            var buildDefinitionSettings = new[] { new BuildDefinitionSetting() };
            var tfsRestService          = new Mock <TfsRestService>();
            var ciEntryPointSetting     = new CiEntryPointSetting {
                Url = "url"
            };

            tfsRestService.Setup(i => i.GetBuildsStatuses(ciEntryPointSetting, buildDefinitionSettings))
            .ThrowsAsync(new TaskCanceledException());
            var tfsRestWatcher = new MyTfsRestWatcher(tfsRestService.Object, buildDefinitionSettings, ciEntryPointSetting);

            // assert & act
            Assert.Throws <ServerUnavailableException>(() =>
                                                       tfsRestWatcher.MyGetBuildStatus()
                                                       );
        }