/// <summary>
        /// Logs the user in and moves to editing server screen.
        /// Forces a configuration change to the saved connection so the server URL is set,
        /// but the team project and team are null
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void NextButton_Click(object sender, RoutedEventArgs e)
        {
            if (InteractionAllowed)
            {
                if (Uri.IsWellFormedUriString(ServerComboBox.Text, UriKind.Absolute))
                {
                    var serverUri = ToUri(ServerComboBox.Text);

                    // block clicking "next" until login request is done
                    ToggleLoading(true);
                    await AzureDevOps.HandleLoginAsync(CredentialPromptType.PromptIfNeeded, serverUri).ConfigureAwait(false);

                    if (AzureDevOps.ConnectedToAzureDevOps)
                    {
                        AzureDevOps.Configuration.SavedConnection = new ConnectionInfo(serverUri, null, null);
                        ChangeStates(ControlState.EditingServer);
                    }
                    else
                    {
                        ToggleLoading(false);
                        Dispatcher.Invoke(() => MessageDialog.Show(string.Format(CultureInfo.InvariantCulture,
                                                                                 Properties.Resources.UnableToConnectFormattedMessage, serverUri.ToString())));
                        Dispatcher.Invoke(ServerComboBox.Focus);
                    }
                }
                else
                {
                    Dispatcher.Invoke(() => MessageDialog.Show(Properties.Resources.ADO_URL_Fromat_Message));
                }
            }
        }
示例#2
0
        public async Task BadUrisAsync()
        {
            var azureDevOps = new AzureDevOps(null);

            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://contoso.visualstudio.com/Contoso", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://contoso.visualstudio.com/Contoso/", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://contoso.visualstudio.com/Contoso/Hello", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://contoso.visualstudio.com/Contoso/Hello/", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://contoso.visualstudio.com/Contoso/Hello/_git", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://contoso.visualstudio.com/Contoso/Hello/_git/", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://contoso.visualstudio.com/Contoso/_git", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://contoso.visualstudio.com/Contoso/_git/", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://contoso.visualstudio.com/Contoso/_git/Hello", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://contoso.visualstudio.com/Contoso/Hello?dfghfhg=fghj", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://contoso.visualstudio.com/Contoso/Hello/?dfghfhg=fghj", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://contoso.visualstudio.com/Contoso/Hello/_git?dfghfhg=fghj", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://contoso.visualstudio.com/Contoso/Hello/_git/?dfghfhg=fghj", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://contoso.visualstudio.com/Contoso/_git?dfghfhg=fghj", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://contoso.visualstudio.com/Contoso/_git/?dfghfhg=fghj", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://contoso.visualstudio.com/Contoso/_git/Hello?dfghfhg=fghj", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://contoso.visualstudio.com/Contoso/_git/Hello/?dfghfhg=fghj", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://contoso.visualstudio.com", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://contoso.visualstudio.com/", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://dev.azure.com/{organization}/", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "http://www.bing.com", CancellationToken.None, out _));
            Assert.IsFalse(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "http://www.bing.com:8080", CancellationToken.None, out _));
        }
示例#3
0
        public async Task VisualStudioComAsync()
        {
            var azureDevOps = new AzureDevOps(null);

            Assert.IsTrue(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://[email protected]/DefaultCollection/Contoso/_git/MyRepository/?foor=bar", CancellationToken.None, out RepositoryInfo repositoryInfo));
            Assert.AreEqual("contoso", repositoryInfo.Properties["Organization"]);
            Assert.AreEqual("Contoso", repositoryInfo.Properties["Project"]);
            Assert.AreEqual("MyRepository", repositoryInfo.Properties["Repository"]);
            Assert.AreEqual("https://contoso.visualstudio.com/", repositoryInfo.Properties["OrganizationUrl"]);
            Assert.AreEqual("https://contoso.visualstudio.com/Contoso/_git/MyRepository/", repositoryInfo.Properties["RepositoryUrl"]);

            Assert.IsTrue(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://[email protected]/DefaultCollection/Contoso/_git/MyRepository?foor=bar", CancellationToken.None, out repositoryInfo));
            Assert.AreEqual("contoso", repositoryInfo.Properties["Organization"]);
            Assert.AreEqual("Contoso", repositoryInfo.Properties["Project"]);
            Assert.AreEqual("MyRepository", repositoryInfo.Properties["Repository"]);
            Assert.AreEqual("https://contoso.visualstudio.com/", repositoryInfo.Properties["OrganizationUrl"]);
            Assert.AreEqual("https://contoso.visualstudio.com/Contoso/_git/MyRepository/", repositoryInfo.Properties["RepositoryUrl"]);

            Assert.IsTrue(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://[email protected]/DefaultCollection/Contoso/_git/MyRepository", CancellationToken.None, out repositoryInfo));
            Assert.AreEqual("contoso", repositoryInfo.Properties["Organization"]);
            Assert.AreEqual("Contoso", repositoryInfo.Properties["Project"]);
            Assert.AreEqual("MyRepository", repositoryInfo.Properties["Repository"]);
            Assert.AreEqual("https://contoso.visualstudio.com/", repositoryInfo.Properties["OrganizationUrl"]);
            Assert.AreEqual("https://contoso.visualstudio.com/Contoso/_git/MyRepository/", repositoryInfo.Properties["RepositoryUrl"]);
        }
示例#4
0
        public Task RestoreConfigurationAsync(string serializedConfig)
        {
            if (!String.IsNullOrEmpty(serializedConfig))
            {
                Configuration.LoadFromSerializedString(serializedConfig);
            }

            return(AzureDevOps.HandleLoginAsync());
        }
示例#5
0
        public static void Main(string[] args)
        {
            //Instancia de
            AzureDevOps azureDevOps = new AzureDevOps();
            Compilador  compilador  = new Compilador();
            EjecutorPruebasUnitarias ejecutorPruebasUnitarias = new EjecutorPruebasUnitarias();
            Instalador  instalador  = new Instalador();
            Notificador notificador = new Notificador();
            bool        salir       = true;

            while (salir)
            {
                Console.WriteLine("*******************************************");
                Console.WriteLine("******** Suscriptores disponibles *********");
                Console.WriteLine("*   1) Compilador                         *");
                Console.WriteLine("*   2) Pruebas unitarias                  *");
                Console.WriteLine("*   3) Instalador                         *");
                Console.WriteLine("*   4) Notificador                        *");
                Console.WriteLine("******** Suscriptores disponibles *********");
                Console.WriteLine("0) Ejecutar acción principal");
                Console.WriteLine("5) Salir del programa");
                Console.WriteLine("");
                int resultado = int.Parse(Console.ReadLine());

                switch (resultado)
                {
                case 0:
                    azureDevOps.SubirCodigo();
                    break;

                case 1:
                    azureDevOps.AgregarSuscriptor(compilador);
                    break;

                case 2:
                    azureDevOps.AgregarSuscriptor(ejecutorPruebasUnitarias);
                    break;

                case 3:
                    azureDevOps.AgregarSuscriptor(instalador);
                    break;

                case 4:
                    azureDevOps.AgregarSuscriptor(notificador);
                    break;

                case 5:
                    salir = false;
                    break;
                }
            }

            Console.ReadLine();
        }
 public AzureDevOpsUnitTests()
 {
     _sut = new AzureDevOps();
     _sut.AddInner(new BaseHandler());
     _sample = new PodCastTableEntity
     {
         FeedName       = "Azure DevOps Podcast",
         EpisodeName    = "Mark Miller on Developer Productivity",
         EpisodeUrl     = "http://traffic.libsyn.com/azuredevops/ADP_037-2.mp3?dest-id=768873",
         EpisodePostUrl = "http://azuredevopspodcast.clear-measure.com/mark-miller-on-developer-productivity"
     };
 }
        /// <summary>
        /// Logs the user out and moves to selecting a new server screen.
        /// Forces a configuration change to the saved connection so it is null.
        /// This means we will not try to automatically connect when we next start up.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void disconnectButton_Click(object sender, RoutedEventArgs e)
        {
            // Don't allow disconnect until project teams have loaded
            if (InteractionAllowed)
            {
                AzureDevOps.Disconnect();

                ClearTreeviewSelection();
                ChangeStates(ControlState.NoServer);
                AzureDevOps.Configuration.SavedConnection = null;
            }

            canSave = false;
            Dispatcher.Invoke(UpdateSaveButton);
        }
示例#8
0
        public async Task PrivateServerAsync()
        {
            var azureDevOps = new AzureDevOps(null);

            Assert.IsTrue(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://tfs.contoso.com:8080/tfs/Contoso/_git/MyRepository/?foor=bar", CancellationToken.None, out RepositoryInfo repositoryInfo));
            Assert.AreEqual("tfs.contoso.com", repositoryInfo.Properties["Organization"]);
            Assert.AreEqual("Contoso", repositoryInfo.Properties["Project"]);
            Assert.AreEqual("MyRepository", repositoryInfo.Properties["Repository"]);
            Assert.AreEqual("https://tfs.contoso.com:8080/tfs/", repositoryInfo.Properties["OrganizationUrl"]);
            Assert.AreEqual("https://tfs.contoso.com:8080/tfs/Contoso/_git/MyRepository/", repositoryInfo.Properties["RepositoryUrl"]);

            Assert.IsTrue(await azureDevOps.TryDetectRepositoryInformationAsync(string.Empty, "https://tfs.contoso.com:8080/tfs/Contoso/_git/MyRepository?foor=bar", CancellationToken.None, out repositoryInfo));
            Assert.AreEqual("tfs.contoso.com", repositoryInfo.Properties["Organization"]);
            Assert.AreEqual("Contoso", repositoryInfo.Properties["Project"]);
            Assert.AreEqual("MyRepository", repositoryInfo.Properties["Repository"]);
            Assert.AreEqual("https://tfs.contoso.com:8080/tfs/", repositoryInfo.Properties["OrganizationUrl"]);
            Assert.AreEqual("https://tfs.contoso.com:8080/tfs/Contoso/_git/MyRepository/", repositoryInfo.Properties["RepositoryUrl"]);
        }
示例#9
0
        public Task <IIssueResult> FileIssueAsync(IssueInformation issueInfo)
        {
            bool topMost = false;

            Application.Current.Dispatcher.Invoke(() => topMost = Application.Current.MainWindow.Topmost);

            Action <int> updateZoom = (int x) => Configuration.ZoomLevel = x;

            (int?issueId, string newIssueId) = FileIssueHelpers.FileNewIssue(issueInfo, Configuration.SavedConnection,
                                                                             topMost, Configuration.ZoomLevel, updateZoom);

            return(Task.Run <IIssueResult>(() => {
                // Check whether issue was filed once dialog closed & process accordingly
                if (!issueId.HasValue)
                {
                    return null;
                }

                try
                {
                    if (!FileIssueHelpers.AttachIssueData(issueInfo, newIssueId, issueId.Value).Result)
                    {
                        MessageDialog.Show(Properties.Resources.There_was_an_error_identifying_the_created_issue_This_may_occur_if_the_ID_used_to_create_the_issue_is_removed_from_its_Azure_DevOps_description_Attachments_have_not_been_uploaded);
                    }

                    return new IssueResult()
                    {
                        DisplayText = issueId.ToString(),
                        IssueLink = AzureDevOps.GetExistingIssueUrl(issueId.Value)
                    };
                }
#pragma warning disable CA1031 // Do not catch general exception types
                catch (Exception e)
                {
                    e.ReportException();
                }
#pragma warning restore CA1031 // Do not catch general exception types

                return null;
            }));
        }
 /// <summary>
 /// Asynchronously collect the current user's projects
 /// </summary>
 /// <returns></returns>
 private static Task <IEnumerable <TeamProject> > GetProjectsAsync()
 {
     return(Task <IEnumerable <TeamProject> > .Run(() => AzureDevOps.GetTeamProjects()));
 }
示例#11
0
 public void TestAzureDevOps(PropertyInfo property, AzureDevOps instance)
 {
     AssertProperty(instance, property);
 }