Skip to content

Commit

Permalink
ARC-1807: Bump authzed client to 0.8.0 (#6)
Browse files Browse the repository at this point in the history
* ARC-1807: Bump authzed client to 0.8.0

* ARC-1807: Cleanup

* ARC-1807: Better Test Coverage
  • Loading branch information
thomasrichner-oviva committed Jun 17, 2024
1 parent bf85e5e commit 6b57e7b
Show file tree
Hide file tree
Showing 26 changed files with 389 additions and 211 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,22 +17,6 @@ public static Builder newBuilder() {
return new Builder();
}

public ObjectRef resource() {
return resource;
}

public String permission() {
return permission;
}

public SubjectRef subject() {
return subject;
}

public Consistency consistency() {
return consistency;
}

public static final class Builder implements CheckPermission.Builder {
private ObjectRef resource;
private String permission;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,6 @@ private RelationshipFilterImpl(Builder builder) {
Optional.ofNullable(builder.subjectFilter));
}

public String resourceKind() {
return resourceKind;
}

public record SubjectFilterImpl(
String subjectKind, Optional<String> subjectId, Optional<String> relation)
implements SubjectFilter {
Expand All @@ -33,10 +29,6 @@ private SubjectFilterImpl(Builder builder) {
Optional.ofNullable(builder.relation));
}

public String subjectKind() {
return subjectKind;
}

public static final class Builder implements SubjectFilter.Builder {
private String subjectKind;
private String subjectId;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,6 @@ public static Builder newBuilder() {
return new Builder();
}

public List<UpdateRelationship> updates() {
return updates;
}

public List<Precondition> preconditions() {
return preconditions;
}

public static final class Builder implements UpdateRelationships.Builder {
private List<Precondition> preconditions = new ArrayList<>();
private List<UpdateRelationship> updates = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@

import org.junit.jupiter.api.Test;

public class CheckPermissionTest {
class CheckPermissionTest {

@Test
public void test_build_success() {
void test_build_success() {

var namespace = "tenant";
var id = "9392";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ void ofUser() {
var user = SubjectRef.ofObject(ObjectRef.of("user", uuid.toString()));

assertEquals(user.id(), uuid.toString());
assertEquals(user.kind(), "user");
assertEquals("user", user.kind());
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ void test_ofUpdate() {

var updateRelationship = UpdateRelationship.ofUpdate(resource, ADMINISTRATOR, subject);

assertEquals(updateRelationship.operation(), UpdateRelationship.Operation.UPDATE);
assertEquals(updateRelationship.relation(), ADMINISTRATOR);
assertEquals(UpdateRelationship.Operation.UPDATE, updateRelationship.operation());
assertEquals(ADMINISTRATOR, updateRelationship.relation());
assertEquals(updateRelationship.resource(), resource);
assertEquals(updateRelationship.subject(), SubjectRef.ofObject(subject));
}
Expand All @@ -38,8 +38,8 @@ void test_ofDelete() {

var updateRelationship = UpdateRelationship.ofDelete(resource, ADMINISTRATOR, subject);

assertEquals(updateRelationship.operation(), UpdateRelationship.Operation.DELETE);
assertEquals(updateRelationship.relation(), ADMINISTRATOR);
assertEquals(UpdateRelationship.Operation.DELETE, updateRelationship.operation());
assertEquals(ADMINISTRATOR, updateRelationship.relation());
assertEquals(updateRelationship.resource(), resource);
assertEquals(updateRelationship.subject(), SubjectRef.ofObject(subject));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ public void test_updateRelationshipsBuilder_withAddOperations() {
.update(updateRelationship)
.build();

assertEquals(updateRelationships.updates().size(), 1);
assertEquals(1, updateRelationships.updates().size());
assertEquals(updateRelationships.updates().get(0), updateRelationship);
assertEquals(updateRelationships.preconditions().size(), 1);
assertEquals(1, updateRelationships.preconditions().size());
assertEquals(updateRelationships.preconditions().get(0), precondition);
}

Expand Down
5 changes: 5 additions & 0 deletions example/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@
<scope>test</scope>
</dependency>

<dependency>
<groupId>com.authzed.api</groupId>
<artifactId>authzed</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>testcontainers</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import com.authzed.api.v1.PermissionsServiceGrpc;
import com.authzed.api.v1.SchemaServiceGrpc;
import com.authzed.api.v1.SchemaServiceOuterClass;
import com.authzed.api.v1.WriteSchemaRequest;
import com.authzed.grpcutil.BearerToken;
import com.oviva.spicegen.api.*;
import com.oviva.spicegen.permissions.refs.DocumentRef;
Expand All @@ -26,7 +26,7 @@
import org.testcontainers.utility.DockerImageName;

@Testcontainers
public class ExampleTest {
class ExampleTest {

private static final int GRPC_PORT = 50051;
private static final String TOKEN = "t0ken";
Expand Down Expand Up @@ -75,8 +75,7 @@ private void updateSchema() {
var schemaService =
SchemaServiceGrpc.newBlockingStub(channel).withCallCredentials(new BearerToken(TOKEN));

schemaService.writeSchema(
SchemaServiceOuterClass.WriteSchemaRequest.newBuilder().setSchema(loadSchema()).build());
schemaService.writeSchema(WriteSchemaRequest.newBuilder().setSchema(loadSchema()).build());
}

@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,5 @@
package com.oviva.spicegen.maven;

/*
* Copyright 2001-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import com.oviva.spicegen.generator.Options;
import com.oviva.spicegen.generator.internal.SpiceDbClientGeneratorImpl;
import com.oviva.spicegen.parser.SpiceDbSchemaParser;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,7 @@ private void loadParserBinary(Path parserDestination) {

private String determineTarget() {

var target = "%s_%s".formatted(determineOs(), determineArch());
return target;
return "%s_%s".formatted(determineOs(), determineArch());
}

private String determineArch() {
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
<mockito.jupiter.version>${mockito.version}</mockito.jupiter.version>
<mockito.version>5.11.0</mockito.version>
<testcontainers.version>1.19.7</testcontainers.version>
<authzed.version>0.7.0</authzed.version>
<authzed.version>0.8.0</authzed.version>

<spotless.maven.plugin.version>2.43.0</spotless.maven.plugin.version>
<jacoco.version>0.8.12</jacoco.version>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.oviva.spicegen.spicedbbinding.internal;

import com.authzed.api.v1.CheckPermissionRequest;
import com.oviva.spicegen.api.CheckPermission;

public class CheckPermissionMapper {

private final ConsistencyMapper consistencyMapper;
private final ObjectReferenceMapper objectReferenceMapper;
private final SubjectReferenceMapper subjectReferenceMapper;

public CheckPermissionMapper(
ConsistencyMapper consistencyMapper,
ObjectReferenceMapper objectReferenceMapper,
SubjectReferenceMapper subjectReferenceMapper) {
this.consistencyMapper = consistencyMapper;
this.objectReferenceMapper = objectReferenceMapper;
this.subjectReferenceMapper = subjectReferenceMapper;
}

public CheckPermissionRequest map(CheckPermission checkPermission) {

var consistency = consistencyMapper.map(checkPermission.consistency());

return CheckPermissionRequest.newBuilder()
.setConsistency(consistency)
.setResource(objectReferenceMapper.map(checkPermission.resource()))
.setSubject(subjectReferenceMapper.map(checkPermission.subject()))
.setPermission(checkPermission.permission())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.oviva.spicegen.spicedbbinding.internal;

import com.authzed.api.v1.ZedToken;
import com.oviva.spicegen.api.Consistency;

public class ConsistencyMapper {

public com.authzed.api.v1.Consistency map(Consistency consistency) {
return switch (consistency.requirement()) {
case FULLY_CONSISTENT ->
com.authzed.api.v1.Consistency.newBuilder().setFullyConsistent(true).build();
case AT_LEAST_AS_FRESH ->
com.authzed.api.v1.Consistency.newBuilder()
.setAtLeastAsFresh(
ZedToken.newBuilder().setToken(consistency.consistencyToken()).build())
.build();
};
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package com.oviva.spicegen.spicedbbinding.internal;

import com.authzed.api.v1.Core;
import com.authzed.api.v1.ObjectReference;
import com.oviva.spicegen.api.ObjectRef;

public class ObjectReferenceMapper {

public Core.ObjectReference map(ObjectRef ref) {
return Core.ObjectReference.newBuilder()
.setObjectType(ref.kind())
.setObjectId(ref.id())
.build();
public ObjectReference map(ObjectRef ref) {
return ObjectReference.newBuilder().setObjectType(ref.kind()).setObjectId(ref.id()).build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,18 @@

public class PreconditionMapper {

public com.authzed.api.v1.PermissionService.Precondition map(Precondition precondition) {
public com.authzed.api.v1.Precondition map(Precondition precondition) {

var builder = com.authzed.api.v1.PermissionService.Precondition.newBuilder();
var builder = com.authzed.api.v1.Precondition.newBuilder();

builder.setOperation(mapOperation(precondition.condition()));
builder.setFilter(mapFilter(precondition.filter()));

return builder.build();
}

private com.authzed.api.v1.PermissionService.RelationshipFilter mapFilter(
RelationshipFilter filter) {
var builder = com.authzed.api.v1.PermissionService.RelationshipFilter.newBuilder();
private com.authzed.api.v1.RelationshipFilter mapFilter(RelationshipFilter filter) {
var builder = com.authzed.api.v1.RelationshipFilter.newBuilder();

builder.setResourceType(filter.resourceKind());
filter.resourceId().ifPresent(builder::setOptionalResourceId);
Expand All @@ -28,31 +27,25 @@ private com.authzed.api.v1.PermissionService.RelationshipFilter mapFilter(
return builder.build();
}

private com.authzed.api.v1.PermissionService.SubjectFilter mapSubjectFilter(
private com.authzed.api.v1.SubjectFilter mapSubjectFilter(
RelationshipFilter.SubjectFilter subjectFilter) {
var subjectFilterBuilder =
com.authzed.api.v1.PermissionService.SubjectFilter.newBuilder()
.setSubjectType(subjectFilter.subjectKind());
com.authzed.api.v1.SubjectFilter.newBuilder().setSubjectType(subjectFilter.subjectKind());

subjectFilter.subjectId().ifPresent(subjectFilterBuilder::setOptionalSubjectId);
subjectFilter
.relation()
.map(
r ->
com.authzed.api.v1.PermissionService.SubjectFilter.RelationFilter.newBuilder()
.setRelation(r)
.build())
com.authzed.api.v1.SubjectFilter.RelationFilter.newBuilder().setRelation(r).build())
.ifPresent(subjectFilterBuilder::setOptionalRelation);
return subjectFilterBuilder.build();
}

private com.authzed.api.v1.PermissionService.Precondition.Operation mapOperation(
Precondition.Condition condition) {
private com.authzed.api.v1.Precondition.Operation mapOperation(Precondition.Condition condition) {
return switch (condition) {
case MUST_MATCH ->
com.authzed.api.v1.PermissionService.Precondition.Operation.OPERATION_MUST_MATCH;
case MUST_NOT_MATCH ->
com.authzed.api.v1.PermissionService.Precondition.Operation.OPERATION_MUST_NOT_MATCH;
case MUST_MATCH -> com.authzed.api.v1.Precondition.Operation.OPERATION_MUST_MATCH;
case MUST_NOT_MATCH -> com.authzed.api.v1.Precondition.Operation.OPERATION_MUST_NOT_MATCH;
};
}
}
Loading

0 comments on commit 6b57e7b

Please sign in to comment.