public void IsValidGitHubRepoLink()
        {
            Assert.IsTrue(LinkValidator.IsValidGitHubRepoLink("https://github.com/bla/bla-blas"));
            Assert.IsTrue(LinkValidator.IsValidGitHubRepoLink("https://github.com/bla/bla-blas/"));
            Assert.IsTrue(LinkValidator.IsValidGitHubRepoLink("https:github.com/bla/bla-blas"));
            Assert.IsTrue(LinkValidator.IsValidGitHubRepoLink(@"https:\\github.com/\bla//\bla-blas\"));
            Assert.IsTrue(LinkValidator.IsValidGitHubRepoLink("www.github.com/bla/bla-blas"));
            Assert.IsTrue(LinkValidator.IsValidGitHubRepoLink("https://www.github.com/bla/bla-blas"));

            Assert.IsFalse(LinkValidator.IsValidGitHubRepoLink("https://github.com/1-1/bla-blas"));
            Assert.IsFalse(LinkValidator.IsValidGitHubRepoLink("https://github.com/a--a/bla-blas"));
            Assert.IsFalse(LinkValidator.IsValidGitHubRepoLink("https://github.com/-a/bla-blas"));
            Assert.IsFalse(LinkValidator.IsValidGitHubRepoLink("https://github.com/a-/bla-blas"));
            Assert.IsFalse(LinkValidator.IsValidGitHubRepoLink("https://github.com//bla-blas"));
            Assert.IsFalse(LinkValidator.IsValidGitHubRepoLink("https://github.com/bla/"));
            Assert.IsFalse(LinkValidator.IsValidGitHubRepoLink("https://github.com/bla/.."));
            Assert.IsFalse(LinkValidator.IsValidGitHubRepoLink(@"https://github.com/bla/bla-blas#"));
            Assert.IsFalse(LinkValidator.IsValidGitHubRepoLink(@"https://github.com/bla/bla-bla*s"));
            Assert.IsFalse(LinkValidator.IsValidGitHubRepoLink("https://githubs.com/bla/bla-blas"));
            Assert.IsFalse(LinkValidator.IsValidGitHubRepoLink("httpss://github.com/bla/bla-blas"));
            Assert.IsFalse(LinkValidator.IsValidGitHubRepoLink("wws.github.com/bla/bla-blas"));
            Assert.IsFalse(LinkValidator.IsValidGitHubRepoLink("https://wws.github.com/bla/bla-blas"));
            Assert.IsFalse(LinkValidator.IsValidGitHubRepoLink(@"https://github.com/bla1234567890123456789012345678901234567890/bla-blas"));
            Assert.IsFalse(LinkValidator.IsValidGitHubRepoLink("https://github.com/bla/bla-blas123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"));
        }
 private void IssueConfigurationControl_IsVisibleChanged(object sender, System.Windows.DependencyPropertyChangedEventArgs e)
 {
     if (sender != null && (bool)e.NewValue)
     {
         if (Config != null && !string.IsNullOrEmpty(Config.RepoLink) && LinkValidator.IsValidGitHubRepoLink(Config.RepoLink) && !Config.RepoLink.Equals(this.tbURL.Text, StringComparison.Ordinal))
         {
             tbURL.Text = Config.RepoLink;
             IsConfigured(true);
             TextChangeUpdateSaveButtonHelper();
         }
     }
 }
 /// <summary>
 /// Called when save button clicked.
 /// </summary>
 /// <returns>The extension’s new configuration, serialized</returns>
 public override string OnSave()
 {
     if (LinkValidator.IsValidGitHubRepoLink(this.tbURL.Text))
     {
         this.Config.RepoLink = this.tbURL.Text;
         canSave = false;
         UpdateSaveButton();
         IsConfigured(true);
     }
     else
     {
         MessageDialog.Show(Properties.Resources.InvalidLink);
     }
     return(JsonConvert.SerializeObject(this.Config));
 }
        private void RestoreConfigurationAsyncAction(string serializedConfig)
        {
            ConnectionConfiguration config = JsonConvert.DeserializeObject <ConnectionConfiguration>(serializedConfig);

            if (config != null && !string.IsNullOrEmpty(config.RepoLink) && LinkValidator.IsValidGitHubRepoLink(config.RepoLink))
            {
                this.configurationControl.Config = config;
                this.IsConfigured = true;
            }
            else
            {
                this.configurationControl.Config = new ConnectionConfiguration(string.Empty);
                this.IsConfigured = false;
                MessageDialog.Show(Properties.Resources.InvalidLink);
            }
        }
 public void IsValidGitHubRepoLink_LinkIsNull_ThrowsArgumentNullException()
 {
     LinkValidator.IsValidGitHubRepoLink(null);
 }