tests-integration/Elastic.Serilog.Sinks.IntegrationTests/SerilogCluster.cs (39 lines of code) (raw):
using System.Text.Json.Serialization;
using Elastic.Clients.Elasticsearch;
using Elastic.Elasticsearch.Ephemeral;
using Elastic.Transport;
using Elastic.Transport.Products.Elasticsearch;
using Elasticsearch.IntegrationDefaults;
using Xunit;
using static Elastic.Elasticsearch.Ephemeral.ClusterAuthentication;
[assembly: TestFramework("Elastic.Elasticsearch.Xunit.Sdk.ElasticTestFramework", "Elastic.Elasticsearch.Xunit")]
namespace Elastic.Serilog.Sinks.IntegrationTests;
public class SerilogCluster : TestClusterBase
{
public SerilogCluster() : base(9205) { }
protected SerilogCluster(int port, ClusterFeatures features) : base(port, features) { }
}
public class SecurityCluster : SerilogCluster
{
public SecurityCluster() : base(9206, ClusterFeatures.XPack | ClusterFeatures.Security | ClusterFeatures.SSL)
{
}
protected override ElasticsearchClientSettings UpdateClientSettings(ElasticsearchClientSettings settings) =>
settings.Authentication(new BasicAuthentication(Admin.Username, Admin.Password));
public static ApiKeyResponse CreateApiKey(ElasticsearchClient client, string json)
{
var apiKey = client.Transport.Request<ApiKeyResponse>(HttpMethod.POST, "/_security/api_key", PostData.String(json));
return apiKey;
}
public class ApiKeyResponse : ElasticsearchResponse
{
[JsonPropertyName("id")]
public string Id { get; init; } = default!;
[JsonPropertyName("name")]
public string Name { get; init; } = default!;
[JsonPropertyName("api_key")]
public string ApiKey { get; init; } = default!;
[JsonPropertyName("encoded")]
public string Encoded { get; init; } = default!;
}
}