Example #1
0
        private async Task <TfsKnownConnection> ValidateConnection(TfsConnectionItemViewModel viewModel)
        {
            if (viewModel.ConnectionType == TfsConnectionTypes.AzureDevOpsToken)
            {
                if (string.IsNullOrEmpty(viewModel.PersonalAccessToken))
                {
                    ModelState.AddModelError(
                        nameof(viewModel.PersonalAccessToken),
                        "Personal Access Token is required");
                }

                if (viewModel.UseDefaultCredentials)
                {
                    ModelState.AddModelError(
                        nameof(viewModel.UseDefaultCredentials),
                        "Use default credentials is not applicable with personal access tokens");
                }
            }
            else if (viewModel.ConnectionType == TfsConnectionTypes.TfsNTLM)
            {
                if (!string.IsNullOrEmpty(viewModel.PersonalAccessToken))
                {
                    ModelState.AddModelError(
                        nameof(viewModel.PersonalAccessToken),
                        "Personal Access Token is not applicable when using credentials");
                }

                if (viewModel.UseDefaultCredentials &&
                    (!string.IsNullOrEmpty(viewModel.Username) || !string.IsNullOrEmpty(viewModel.Password)))
                {
                    ModelState.AddModelError(
                        nameof(viewModel.UseDefaultCredentials),
                        "Username and password are not applicable when using default credentials");
                }
            }

            if (!ModelState.IsValid)
            {
                return(null);
            }

            var knownConn = viewModel.ToKnownConnection();

            viewModel.ValidationResult = await this.settingsService.Validate(knownConn);

            if (viewModel.ValidationResult.IsError)
            {
                ModelState.AddModelError(string.Empty, viewModel.ValidationResult.Message);
                return(null);
            }

            return(knownConn);
        }