public Using_integration_with_github_test_organization() { var options = Substitute.For <IOptions <GitHubAppOptions> >(); var builder = new ConfigurationBuilder() .AddUserSecrets <Using_integration_with_github_test_organization>(); Configuration = builder.Build(); var gitHubAppOptions = new GitHubAppOptions { ApplicationId = 0, InstallationId = 0, Name = "Subscribe_to_Label", PrivateKey = new PrivateKeyOptions { KeyString = null, } }; Configuration.Bind("GitHubApp", gitHubAppOptions); options.Value.Returns(gitHubAppOptions); RepositoryOwner = "rokonec-int-tests"; RepositoryName = "issue-notify-tests"; UserX = "TestLabelNotifyUserX"; UserY = "TestLabelNotifyUserY"; AreaCat = "area-cat"; AreaDog = "area-dog"; GitHubClientFactory = new GitHubClientFactory(options); }
public void GetPrivateKeyReaderTest() { var options = new GitHubAppOptions { PrivateKey = "123456" }; var optionsAccessor = Substitute.For <IOptions <GitHubAppOptions> >(); optionsAccessor.Value.Returns(options); var keySource = new GitHubAppOptionsPrivateKeySource(optionsAccessor); var reader = keySource.GetPrivateKeyReader(); var privateKey = reader.ReadToEnd(); privateKey.Should().Be($"-----BEGIN RSA PRIVATE KEY-----\r\n{options.PrivateKey}\r\n-----END RSA PRIVATE KEY-----\r\n"); }
private string GetJwtToken() { GitHubAppOptions settings = _settings.Value; var factoryOptions = new GitHubJwtFactoryOptions { AppIntegrationId = settings.ApplicationId, // The GitHub App Id ExpirationSeconds = 9 * 60 // 10 minutes is the maximum time allowed, but because exp claim is absolute time, lets have it 9 minutes to cover time skew }; // TODO: refactor into TryXXX(factoryOptions) if (!string.IsNullOrEmpty(settings.PrivateKey.KeyString)) { // use `awk '{printf "%s\\n", $0}' private-key.pem` to store the pem data var privateKey = settings.PrivateKey.KeyString.Replace("\n", Environment.NewLine, StringComparison.Ordinal); var generator = new GitHubJwtFactory(new StringPrivateKeySource(privateKey), factoryOptions); return(generator.CreateEncodedJwtToken()); } else if (!string.IsNullOrEmpty(settings.PrivateKey.Base64)) { byte[] data = Convert.FromBase64String(settings.PrivateKey.Base64); string decodedString = Encoding.UTF8.GetString(data); var generator = new GitHubJwtFactory(new StringPrivateKeySource(decodedString), factoryOptions); return(generator.CreateEncodedJwtToken()); } else if (!string.IsNullOrEmpty(settings.PrivateKey.File)) { var generator = new GitHubJwtFactory(new FilePrivateKeySource(settings.PrivateKey.File), factoryOptions); return(generator.CreateEncodedJwtToken()); } else { throw new InvalidOperationException("Not configured GitHubAppSettings.PrivateKey"); } }