private IKerberosConfigFileMover GetKerberosConfigFileMover(string targetPath)
        {
            IKerberosConfigFileMover kerberosConfigFileMover;

            if (!string.IsNullOrWhiteSpace(GitHubSettings.KerberosConfigRawUrlString))
            {
                kerberosConfigFileMover = new KerberosConfigFileMover(targetPath, new GitHubFileDownloader(new Uri(GitHubSettings.KerberosConfigRawUrlString), GitHubSettings.AccessToken));
            }
            else if (!string.IsNullOrWhiteSpace(AzureDevOpsGitSettings.KerberosConfigPath))
            {
                var downloader = new AzureDevopsGitFileDownloader(AzureDevOpsGitSettings.CollectionUrl,
                                                                  AzureDevOpsGitSettings.ProjectName,
                                                                  AzureDevOpsGitSettings.RepositoryName,
                                                                  AzureDevOpsGitSettings.AccessToken,
                                                                  AzureDevOpsGitSettings.KerberosConfigPath);

                kerberosConfigFileMover = new KerberosConfigFileMover(targetPath, downloader);
            }
            else
            {
                throw new Exception("Kerberos configuration information (GitHub/AzureDevOpsGit) not provided! Please refer to the readme for environment variable details to set.");
            }

            return(kerberosConfigFileMover);
        }
        private IKeyTabFileMover GetKerberosKeytabFileMover()
        {
            IKeyTabFileMover keyTabFileMover;

            if (!string.IsNullOrWhiteSpace(GitHubSettings.KerberosKeytabRawUrlString))
            {
                keyTabFileMover = new KeyTabFileMover(buildPath, new GitHubFileDownloader(new Uri(GitHubSettings.KerberosKeytabRawUrlString), GitHubSettings.AccessToken));
            }
            else if (!string.IsNullOrWhiteSpace(AzureDevOpsGitSettings.KerberosKeytabPath))
            {
                var downloader = new AzureDevopsGitFileDownloader(AzureDevOpsGitSettings.CollectionUrl,
                                                                  AzureDevOpsGitSettings.ProjectName,
                                                                  AzureDevOpsGitSettings.RepositoryName,
                                                                  AzureDevOpsGitSettings.AccessToken,
                                                                  AzureDevOpsGitSettings.KerberosKeytabPath);

                keyTabFileMover = new KeyTabFileMover(buildPath, downloader);
            }
            else if (!string.IsNullOrWhiteSpace(AzureVaultSettings.SecretName))
            {
                var downloader = new AzureKeyVaultFileDownloader(AzureVaultSettings.VaultBaseUrl,
                                                                 AzureVaultSettings.ClientAppId,
                                                                 AzureVaultSettings.ClientAppSecret,
                                                                 AzureVaultSettings.SecretName,
                                                                 AzureVaultSettings.SecretVersion);

                keyTabFileMover = new KeyTabFileMover(buildPath, downloader);
            }
            else
            {
                throw new Exception("Kerberos keytab file information (GitHub/AzureDevOpsGit/AzureVault) not provided! Please refer to the readme for environment variable details to set.");
            }

            return(keyTabFileMover);
        }
        public void Test_WithAPITokenProvided()
        {
            var path = Path.Combine(Environment.CurrentDirectory, "TestAzureGitDownload", "AzureGit.txt");

            if (File.Exists(path))
            {
                File.Delete(path);
            }

            var downloader = new AzureDevopsGitFileDownloader(collectionUrl, projectName, repoName, apiToken, sourceFileUrlRelativeToTheRoot);

            downloader.Download(path);

            Assert.True(File.Exists(path));
            Assert.True(File.ReadAllText(path).Length > 0);
        }