Ejemplo n.º 1
0
        private async void TestChallenge_Click(object sender, EventArgs e)
        {
            if (ItemViewModel.IsTestInProgress)
            {
                ShowTestResultsUI();
                return;
            }

            // validate and save before test
            if (!await ValidateAndSave(ItemViewModel.SelectedItem))
            {
                return;
            }



            var challengeConfig = ItemViewModel.SelectedItem.GetChallengeConfig(null);

            if (challengeConfig.ChallengeType == SupportedChallengeTypes.CHALLENGE_TYPE_HTTP && !String.IsNullOrEmpty(ItemViewModel.SelectedItem.ServerSiteId) && !AppViewModel.IsIISAvailable)
            {
                MessageBox.Show(SR.ManagedCertificateSettings_CannotChallengeWithoutIIS, SR.ChallengeError, MessageBoxButton.OK, MessageBoxImage.Error);
            }
            else if (challengeConfig.ChallengeType != null)
            {
                ItemViewModel.IsTestInProgress = true;
                Button_TestChallenge.IsEnabled = false;

                try
                {
                    ItemViewModel.UpdateManagedCertificateSettings();
                }
                catch (Exception exp)
                {
                    // usual failure is that primary domain is not set
                    Button_TestChallenge.IsEnabled = true;
                    ItemViewModel.IsTestInProgress = false;

                    MessageBox.Show(exp.Message);
                    return;
                }

                ItemViewModel.ConfigCheckResults = new System.Collections.ObjectModel.ObservableCollection <StatusMessage> {
                    new StatusMessage {
                        IsOK = true, Message = "Testing in progress.."
                    }
                };

                AppViewModel.ClearRequestProgressResults();

                ShowTestResultsUI();

                // begin listening for progress info
                AppViewModel.TrackProgress(ItemViewModel.SelectedItem);

                var results = await ItemViewModel.TestChallengeResponse(ItemViewModel.SelectedItem);

                ItemViewModel.ConfigCheckResults =
                    new System.Collections.ObjectModel.ObservableCollection <StatusMessage>(results);

                ItemViewModel.RaisePropertyChangedEvent(nameof(ItemViewModel.ConfigCheckResults));

                //TODO: just use viewmodel to determine if test button should be enabled
                Button_TestChallenge.IsEnabled = true;
                ItemViewModel.IsTestInProgress = false;
            }
        }