From df4047004891673d66b61c30653af2b8fda38285 Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Wed, 1 Apr 2020 17:41:58 +1100 Subject: [PATCH 1/2] Implement security.get_builtin_privileges --- .../Configuration/CodeConfiguration.cs | 1 - src/Nest/Descriptors.Security.cs | 8 ++++ src/Nest/ElasticClient.Security.cs | 24 ++++++++++++ src/Nest/Requests.Security.cs | 14 +++++++ .../GetBuiltinPrivilegesRequest.cs | 9 +++++ .../GetBuiltinPrivilegesResponse.cs | 17 ++++++++ .../GetBuiltinPrivilegesApiTests.cs | 39 +++++++++++++++++++ .../GetBuiltinPrivilegesUrlTests.cs | 18 +++++++++ 8 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 src/Nest/XPack/Security/Privileges/GetBuiltinPrivileges/GetBuiltinPrivilegesRequest.cs create mode 100644 src/Nest/XPack/Security/Privileges/GetBuiltinPrivileges/GetBuiltinPrivilegesResponse.cs create mode 100644 tests/Tests/XPack/Security/GetBuiltinPrivileges/GetBuiltinPrivilegesApiTests.cs create mode 100644 tests/Tests/XPack/Security/GetBuiltinPrivileges/GetBuiltinPrivilegesUrlTests.cs diff --git a/src/ApiGenerator/Configuration/CodeConfiguration.cs b/src/ApiGenerator/Configuration/CodeConfiguration.cs index c7c74dd5e91..82049c9b4ff 100644 --- a/src/ApiGenerator/Configuration/CodeConfiguration.cs +++ b/src/ApiGenerator/Configuration/CodeConfiguration.cs @@ -69,7 +69,6 @@ public static class CodeConfiguration "indices.reload_search_analyzers.json", "ml.estimate_model_memory.json", "ml.set_upgrade_mode.json", - "security.get_builtin_privileges.json", "transform.delete_transform.json", "transform.get_transform.json", "transform.get_transform_stats.json", diff --git a/src/Nest/Descriptors.Security.cs b/src/Nest/Descriptors.Security.cs index 5cd93687752..983dc1c7243 100644 --- a/src/Nest/Descriptors.Security.cs +++ b/src/Nest/Descriptors.Security.cs @@ -274,6 +274,14 @@ public partial class GetApiKeyDescriptor : RequestDescriptorBase Qs("username", username); } + ///Descriptor for GetBuiltinPrivileges https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-builtin-privileges.html + public partial class GetBuiltinPrivilegesDescriptor : RequestDescriptorBase, IGetBuiltinPrivilegesRequest + { + internal override ApiUrls ApiUrls => ApiUrlsLookups.SecurityGetBuiltinPrivileges; + // values part of the url path + // Request parameters + } + ///Descriptor for GetPrivileges https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-privileges.html public partial class GetPrivilegesDescriptor : RequestDescriptorBase, IGetPrivilegesRequest { diff --git a/src/Nest/ElasticClient.Security.cs b/src/Nest/ElasticClient.Security.cs index cedac92c539..2e0934361c2 100644 --- a/src/Nest/ElasticClient.Security.cs +++ b/src/Nest/ElasticClient.Security.cs @@ -325,6 +325,30 @@ internal SecurityNamespace(ElasticClient client): base(client) /// public Task GetApiKeyAsync(IGetApiKeyRequest request, CancellationToken ct = default) => DoRequestAsync(request, request.RequestParameters, ct); /// + /// GET request to the security.get_builtin_privileges API, read more about this API online: + /// + /// https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-builtin-privileges.html + /// + public GetBuiltinPrivilegesResponse GetBuiltinPrivileges(Func selector = null) => GetBuiltinPrivileges(selector.InvokeOrDefault(new GetBuiltinPrivilegesDescriptor())); + /// + /// GET request to the security.get_builtin_privileges API, read more about this API online: + /// + /// https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-builtin-privileges.html + /// + public Task GetBuiltinPrivilegesAsync(Func selector = null, CancellationToken ct = default) => GetBuiltinPrivilegesAsync(selector.InvokeOrDefault(new GetBuiltinPrivilegesDescriptor()), ct); + /// + /// GET request to the security.get_builtin_privileges API, read more about this API online: + /// + /// https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-builtin-privileges.html + /// + public GetBuiltinPrivilegesResponse GetBuiltinPrivileges(IGetBuiltinPrivilegesRequest request) => DoRequest(request, request.RequestParameters); + /// + /// GET request to the security.get_builtin_privileges API, read more about this API online: + /// + /// https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-builtin-privileges.html + /// + public Task GetBuiltinPrivilegesAsync(IGetBuiltinPrivilegesRequest request, CancellationToken ct = default) => DoRequestAsync(request, request.RequestParameters, ct); + /// /// GET request to the security.get_privileges API, read more about this API online: /// /// https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-privileges.html diff --git a/src/Nest/Requests.Security.cs b/src/Nest/Requests.Security.cs index ee0f5cc93fa..5aad1747719 100644 --- a/src/Nest/Requests.Security.cs +++ b/src/Nest/Requests.Security.cs @@ -490,6 +490,20 @@ public string Username } } + [InterfaceDataContract] + public partial interface IGetBuiltinPrivilegesRequest : IRequest + { + } + + ///Request for GetBuiltinPrivileges https://www.elastic.co/guide/en/elasticsearch/reference/current/security-api-get-builtin-privileges.html + public partial class GetBuiltinPrivilegesRequest : PlainRequestBase, IGetBuiltinPrivilegesRequest + { + protected IGetBuiltinPrivilegesRequest Self => this; + internal override ApiUrls ApiUrls => ApiUrlsLookups.SecurityGetBuiltinPrivileges; + // values part of the url path + // Request parameters + } + [InterfaceDataContract] public partial interface IGetPrivilegesRequest : IRequest { diff --git a/src/Nest/XPack/Security/Privileges/GetBuiltinPrivileges/GetBuiltinPrivilegesRequest.cs b/src/Nest/XPack/Security/Privileges/GetBuiltinPrivileges/GetBuiltinPrivilegesRequest.cs new file mode 100644 index 00000000000..5e0242151ea --- /dev/null +++ b/src/Nest/XPack/Security/Privileges/GetBuiltinPrivileges/GetBuiltinPrivilegesRequest.cs @@ -0,0 +1,9 @@ +namespace Nest +{ + [MapsApi("security.get_builtin_privileges.json")] + public partial interface IGetBuiltinPrivilegesRequest { } + + public partial class GetBuiltinPrivilegesRequest { } + + public partial class GetBuiltinPrivilegesDescriptor { } +} diff --git a/src/Nest/XPack/Security/Privileges/GetBuiltinPrivileges/GetBuiltinPrivilegesResponse.cs b/src/Nest/XPack/Security/Privileges/GetBuiltinPrivileges/GetBuiltinPrivilegesResponse.cs new file mode 100644 index 00000000000..efda62f35ad --- /dev/null +++ b/src/Nest/XPack/Security/Privileges/GetBuiltinPrivileges/GetBuiltinPrivilegesResponse.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; +using System.Runtime.Serialization; +using Elasticsearch.Net; +using Elasticsearch.Net.Utf8Json; + +namespace Nest +{ + [DataContract] + public class GetBuiltinPrivilegesResponse : ResponseBase + { + [DataMember(Name = "cluster")] + public IReadOnlyCollection Cluster { get; internal set; } = EmptyReadOnly.Collection; + + [DataMember(Name = "index")] + public IReadOnlyCollection Index { get; internal set; } = EmptyReadOnly.Collection; + } +} diff --git a/tests/Tests/XPack/Security/GetBuiltinPrivileges/GetBuiltinPrivilegesApiTests.cs b/tests/Tests/XPack/Security/GetBuiltinPrivileges/GetBuiltinPrivilegesApiTests.cs new file mode 100644 index 00000000000..2df3d3bcff1 --- /dev/null +++ b/tests/Tests/XPack/Security/GetBuiltinPrivileges/GetBuiltinPrivilegesApiTests.cs @@ -0,0 +1,39 @@ +using System; +using Elastic.Xunit.XunitPlumbing; +using Elasticsearch.Net; +using Nest; +using Tests.Core.ManagedElasticsearch.Clusters; +using Tests.Framework.EndpointTests; +using Tests.Framework.EndpointTests.TestState; + +namespace Tests.XPack.Security.GetBuiltinPrivileges +{ + [SkipVersion("<7.7.0", "Introduced in 7.7.0")] + public class GetBuiltinPrivilegesApiTests + : ApiIntegrationTestBase + { + public GetBuiltinPrivilegesApiTests(XPackCluster cluster, EndpointUsage usage) : base(cluster, usage) { } + + protected override bool ExpectIsValid => true; + protected override int ExpectStatusCode => 200; + + protected override Func Fluent => d => d; + protected override HttpMethod HttpMethod => HttpMethod.GET; + + protected override GetBuiltinPrivilegesRequest Initializer => new GetBuiltinPrivilegesRequest(); + + protected override bool SupportsDeserialization => false; + + protected override string UrlPath => $"/_security/privilege/_builtin"; + + protected override LazyResponses ClientUsage() => Calls( + (client, f) => client.Security.GetBuiltinPrivileges(f), + (client, f) => client.Security.GetBuiltinPrivilegesAsync(f), + (client, r) => client.Security.GetBuiltinPrivileges(r), + (client, r) => client.Security.GetBuiltinPrivilegesAsync(r) + ); + + protected override GetBuiltinPrivilegesDescriptor NewDescriptor() => new GetBuiltinPrivilegesDescriptor(); + } +} diff --git a/tests/Tests/XPack/Security/GetBuiltinPrivileges/GetBuiltinPrivilegesUrlTests.cs b/tests/Tests/XPack/Security/GetBuiltinPrivileges/GetBuiltinPrivilegesUrlTests.cs new file mode 100644 index 00000000000..e2e2a074f49 --- /dev/null +++ b/tests/Tests/XPack/Security/GetBuiltinPrivileges/GetBuiltinPrivilegesUrlTests.cs @@ -0,0 +1,18 @@ +using System.Threading.Tasks; +using Elastic.Xunit.XunitPlumbing; +using Nest; +using Tests.Framework.EndpointTests; +using static Tests.Framework.EndpointTests.UrlTester; + +namespace Tests.XPack.Security.GetBuiltinPrivileges +{ + public class GetBuiltinPrivilegesUrlTests : UrlTestsBase + { + [U] public override async Task Urls() => + await GET("/_security/privilege/_builtin") + .Fluent(c => c.Security.GetBuiltinPrivileges()) + .Request(c => c.Security.GetBuiltinPrivileges(new GetBuiltinPrivilegesRequest())) + .FluentAsync(c => c.Security.GetBuiltinPrivilegesAsync()) + .RequestAsync(c => c.Security.GetBuiltinPrivilegesAsync(new GetBuiltinPrivilegesRequest())); + } +} From 8e097fe508b6a2053784f835ef9ae8a65d66448f Mon Sep 17 00:00:00 2001 From: Stuart Cam Date: Thu, 16 Apr 2020 20:28:12 +1000 Subject: [PATCH 2/2] Add response check. --- .../GetBuiltinPrivileges/GetBuiltinPrivilegesApiTests.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/Tests/XPack/Security/GetBuiltinPrivileges/GetBuiltinPrivilegesApiTests.cs b/tests/Tests/XPack/Security/GetBuiltinPrivileges/GetBuiltinPrivilegesApiTests.cs index 2df3d3bcff1..4141c32fa1a 100644 --- a/tests/Tests/XPack/Security/GetBuiltinPrivileges/GetBuiltinPrivilegesApiTests.cs +++ b/tests/Tests/XPack/Security/GetBuiltinPrivileges/GetBuiltinPrivilegesApiTests.cs @@ -2,6 +2,7 @@ using Elastic.Xunit.XunitPlumbing; using Elasticsearch.Net; using Nest; +using Tests.Core.Extensions; using Tests.Core.ManagedElasticsearch.Clusters; using Tests.Framework.EndpointTests; using Tests.Framework.EndpointTests.TestState; @@ -35,5 +36,7 @@ protected override LazyResponses ClientUsage() => Calls( ); protected override GetBuiltinPrivilegesDescriptor NewDescriptor() => new GetBuiltinPrivilegesDescriptor(); + + protected override void ExpectResponse(GetBuiltinPrivilegesResponse response) => response.ShouldBeValid(); } }