Skip to content

Commit f137cd9

Browse files
authored
feat(authorization): add possibility to use *Request object in wrapped API (#457)
1 parent 9ce5275 commit f137cd9

File tree

4 files changed

+105
-2
lines changed

4 files changed

+105
-2
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
### Features
44
1. [#439](https://github.com/influxdata/influxdb-client-java/pull/439): Add `FluxRecord.getRow()` which stores response data in a list
5+
1. [#457](https://github.com/influxdata/influxdb-client-java/pull/457): Add possibility to use `AuthorizationPostRequest` and `AuthorizationUpdateRequest` in `AuthorizationApi`
56

67
### Dependencies
78

client/src/main/java/com/influxdb/client/AuthorizationsApi.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
import javax.annotation.concurrent.ThreadSafe;
2828

2929
import com.influxdb.client.domain.Authorization;
30+
import com.influxdb.client.domain.AuthorizationPostRequest;
31+
import com.influxdb.client.domain.AuthorizationUpdateRequest;
3032
import com.influxdb.client.domain.Organization;
3133
import com.influxdb.client.domain.Permission;
3234
import com.influxdb.client.domain.User;
@@ -70,6 +72,21 @@ Authorization createAuthorization(@Nonnull final Organization organization,
7072
Authorization createAuthorization(@Nonnull final String orgID,
7173
@Nonnull final List<Permission> permissions);
7274

75+
/**
76+
* Create an authorization.
77+
*
78+
* <p>
79+
* Use this method to create an authorization, which generates an API token with permissions to `read` or `write`
80+
* to a specific resource or `type` of resource. The response contains the new authorization
81+
* with the generated API token.
82+
* </p>
83+
*
84+
* @param request The authorization to create.
85+
* @return Newly created authorization
86+
*/
87+
@Nonnull
88+
Authorization createAuthorization(@Nonnull final AuthorizationPostRequest request);
89+
7390
/**
7491
* Updates the status of the authorization. Useful for setting an authorization to inactive or active.
7592
*
@@ -79,6 +96,17 @@ Authorization createAuthorization(@Nonnull final String orgID,
7996
@Nonnull
8097
Authorization updateAuthorization(@Nonnull final Authorization authorization);
8198

99+
/**
100+
* Update an authorization to be active or inactive.
101+
*
102+
* @param authorizationID The ID of the authorization to update.
103+
* @param request Authorization to update
104+
* @return The active or inactive authorization
105+
*/
106+
@Nonnull
107+
Authorization updateAuthorization(@Nonnull final String authorizationID,
108+
@Nonnull final AuthorizationUpdateRequest request);
109+
82110
/**
83111
* Delete an authorization.
84112
*

client/src/main/java/com/influxdb/client/internal/AuthorizationsApiImpl.java

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import com.influxdb.client.AuthorizationsApi;
3131
import com.influxdb.client.domain.Authorization;
3232
import com.influxdb.client.domain.AuthorizationPostRequest;
33+
import com.influxdb.client.domain.AuthorizationUpdateRequest;
3334
import com.influxdb.client.domain.Authorizations;
3435
import com.influxdb.client.domain.Organization;
3536
import com.influxdb.client.domain.Permission;
@@ -96,6 +97,15 @@ public Authorization createAuthorization(@Nonnull final Authorization authorizat
9697
.permissions(authorization.getPermissions())
9798
.description(authorization.getDescription());
9899

100+
return createAuthorization(request);
101+
}
102+
103+
@Override
104+
@Nonnull
105+
public Authorization createAuthorization(@Nonnull final AuthorizationPostRequest request) {
106+
107+
Arguments.checkNotNull(request, "AuthorizationPostRequest is required");
108+
99109
Call<Authorization> call = service.postAuthorizations(request, null);
100110

101111
return execute(call);
@@ -160,8 +170,18 @@ public Authorization updateAuthorization(@Nonnull final Authorization authorizat
160170

161171
Arguments.checkNotNull(authorization, "Authorization is required");
162172

163-
Call<Authorization> authorizationCall = service
164-
.patchAuthorizationsID(authorization.getId(), authorization, null);
173+
return updateAuthorization(authorization.getId(), authorization);
174+
}
175+
176+
@Override
177+
@Nonnull
178+
public Authorization updateAuthorization(@Nonnull final String authorizationID,
179+
@Nonnull final AuthorizationUpdateRequest request) {
180+
181+
Arguments.checkNonEmpty(authorizationID, "authorizationID");
182+
Arguments.checkNotNull(authorizationID, "AuthorizationUpdateRequest");
183+
184+
Call<Authorization> authorizationCall = service.patchAuthorizationsID(authorizationID, request, null);
165185

166186
return execute(authorizationCall);
167187
}

client/src/test/java/com/influxdb/client/ITAuthorizationsApi.java

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,16 @@
2222
package com.influxdb.client;
2323

2424
import java.util.ArrayList;
25+
import java.util.Arrays;
2526
import java.util.Collections;
2627
import java.util.List;
2728
import java.util.logging.Level;
2829
import java.util.logging.Logger;
2930
import javax.annotation.Nonnull;
3031

3132
import com.influxdb.client.domain.Authorization;
33+
import com.influxdb.client.domain.AuthorizationPostRequest;
34+
import com.influxdb.client.domain.AuthorizationUpdateRequest;
3235
import com.influxdb.client.domain.Bucket;
3336
import com.influxdb.client.domain.Organization;
3437
import com.influxdb.client.domain.Permission;
@@ -200,6 +203,34 @@ void createAuthorizationBucket() {
200203
Assertions.assertThat(authorization.getPermissions().get(1).getAction()).isEqualTo(Permission.ActionEnum.WRITE);
201204
}
202205

206+
@Test
207+
void createAuthorizationRequest() {
208+
209+
PermissionResource checks = new PermissionResource();
210+
checks.setOrgID(organization.getId());
211+
checks.setType(PermissionResource.TYPE_CHECKS);
212+
213+
Permission read = new Permission();
214+
read.setResource(checks);
215+
read.setAction(Permission.ActionEnum.READ);
216+
217+
Permission write = new Permission();
218+
write.setResource(checks);
219+
write.setAction(Permission.ActionEnum.WRITE);
220+
221+
AuthorizationPostRequest request = new AuthorizationPostRequest();
222+
request
223+
.orgID(organization.getId())
224+
.permissions(Arrays.asList(read, write))
225+
.description("Created by AuthorizationPostRequest");
226+
227+
Authorization authorization = authorizationsApi.createAuthorization(request);
228+
229+
Assertions.assertThat(authorization.getPermissions()).hasSize(2);
230+
Assertions.assertThat(authorization.getDescription()).isEqualTo("Created by AuthorizationPostRequest");
231+
Assertions.assertThat(authorization.getToken()).isNotBlank();
232+
}
233+
203234
@Test
204235
void findAuthorizationsByID() {
205236

@@ -304,6 +335,29 @@ void updateAuthorizationStatus() {
304335
Assertions.assertThat(authorization.getStatus()).isEqualTo(Authorization.StatusEnum.ACTIVE);
305336
}
306337

338+
@Test
339+
void updateAuthorizationRequest() {
340+
341+
PermissionResource user = new PermissionResource();
342+
user.setOrgID(organization.getId());
343+
user.setType(PermissionResource.TYPE_USERS);
344+
345+
Permission read = new Permission();
346+
read.setAction(Permission.ActionEnum.READ);
347+
read.setResource(user);
348+
349+
Authorization authorization = authorizationsApi.createAuthorization(organization, Collections.singletonList(read));
350+
Assertions.assertThat(authorization.getStatus()).isEqualTo(Authorization.StatusEnum.ACTIVE);
351+
352+
AuthorizationUpdateRequest request = new AuthorizationUpdateRequest()
353+
.status(AuthorizationUpdateRequest.StatusEnum.INACTIVE)
354+
.description("Updated description");
355+
authorization = authorizationsApi.updateAuthorization(authorization.getId(), request);
356+
357+
Assertions.assertThat(authorization.getStatus()).isEqualTo(Authorization.StatusEnum.INACTIVE);
358+
Assertions.assertThat(authorization.getDescription()).isEqualTo("Updated description");
359+
}
360+
307361
@Test
308362
void deleteAuthorization() {
309363

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy