Skip to content

Commit

Permalink
Fix types for role commands and disable false positive tests until th…
Browse files Browse the repository at this point in the history
…ey are implementated

Signed-off-by: Jakub Zalas <[email protected]>
  • Loading branch information
jakzal committed Oct 22, 2021
1 parent 51aa1ca commit 2263379
Show file tree
Hide file tree
Showing 13 changed files with 131 additions and 93 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,37 +55,37 @@ protected RoleData merge(final RoleData previousData, final int previousVersion,

case GroupAssignedToRole: {
final GroupAssignedToRole typedEvent = typed(event);
merged = RoleData.from(typedEvent.roleId, typedEvent.name, previousData.description);
merged = RoleData.from(typedEvent.roleId, previousData.name, previousData.description);
break;
}

case GroupUnassignedFromRole: {
final GroupUnassignedFromRole typedEvent = typed(event);
merged = RoleData.from(typedEvent.roleId, typedEvent.name, previousData.description);
merged = RoleData.from(typedEvent.roleId, previousData.name, previousData.description);
break;
}

case UserAssignedToRole: {
final UserAssignedToRole typedEvent = typed(event);
merged = RoleData.from(typedEvent.roleId, typedEvent.name, previousData.description);
merged = RoleData.from(typedEvent.roleId, previousData.name, previousData.description);
break;
}

case UserUnassignedFromRole: {
final UserUnassignedFromRole typedEvent = typed(event);
merged = RoleData.from(typedEvent.roleId, typedEvent.name, previousData.description);
merged = RoleData.from(typedEvent.roleId, previousData.name, previousData.description);
break;
}

case RolePermissionAttached: {
final RolePermissionAttached typedEvent = typed(event);
merged = RoleData.from(typedEvent.roleId, typedEvent.name, previousData.description);
merged = RoleData.from(typedEvent.roleId, previousData.name, previousData.description);
break;
}

case RolePermissionDetached: {
final RolePermissionDetached typedEvent = typed(event);
merged = RoleData.from(typedEvent.roleId, typedEvent.name, previousData.description);
merged = RoleData.from(typedEvent.roleId, previousData.name, previousData.description);
break;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@
import io.vlingo.xoom.auth.infrastructure.RoleData;
import io.vlingo.xoom.auth.infrastructure.persistence.QueryModelStateStoreProvider;
import io.vlingo.xoom.auth.infrastructure.persistence.RoleQueries;
import io.vlingo.xoom.auth.model.group.GroupId;
import io.vlingo.xoom.auth.model.permission.PermissionId;
import io.vlingo.xoom.auth.model.role.Role;
import io.vlingo.xoom.auth.model.role.RoleEntity;
import io.vlingo.xoom.auth.model.role.RoleId;
import io.vlingo.xoom.auth.model.tenant.TenantId;
import io.vlingo.xoom.auth.model.user.UserId;
import io.vlingo.xoom.common.Completes;
import io.vlingo.xoom.http.ContentType;
import io.vlingo.xoom.http.Response;
Expand Down Expand Up @@ -52,49 +55,49 @@ public Completes<Response> changeDescription(final String tenantId, final String
.recoverFrom(e -> Response.of(InternalServerError, e.getMessage()));
}

public Completes<Response> assignGroup(final String tenantId, final String roleName, final RoleData data) {
public Completes<Response> assignGroup(final String tenantId, final String roleName, final String groupName) {
return resolve(tenantId, roleName)
.andThenTo(role -> role.assignGroup(data.name))
.andThenTo(role -> role.assignGroup(GroupId.from(TenantId.from(tenantId), groupName)))
.andThenTo(state -> Completes.withSuccess(entityResponseOf(Ok, serialized(RoleData.from(state)))))
.otherwise(noGreeting -> Response.of(NotFound))
.recoverFrom(e -> Response.of(InternalServerError, e.getMessage()));
}

public Completes<Response> unassignGroup(final String tenantId, final String roleName, final String groupName, final RoleData data) {
public Completes<Response> unassignGroup(final String tenantId, final String roleName, final String groupName) {
return resolve(tenantId, roleName)
.andThenTo(role -> role.unassignGroup(data.name))
.andThenTo(role -> role.unassignGroup(GroupId.from(TenantId.from(tenantId), groupName)))
.andThenTo(state -> Completes.withSuccess(entityResponseOf(Ok, serialized(RoleData.from(state)))))
.otherwise(noGreeting -> Response.of(NotFound))
.recoverFrom(e -> Response.of(InternalServerError, e.getMessage()));
}

public Completes<Response> assignUser(final String tenantId, final String roleName, final RoleData data) {
public Completes<Response> assignUser(final String tenantId, final String roleName, final String username) {
return resolve(tenantId, roleName)
.andThenTo(role -> role.assignUser(data.name))
.andThenTo(role -> role.assignUser(UserId.from(TenantId.from(tenantId), username)))
.andThenTo(state -> Completes.withSuccess(entityResponseOf(Ok, serialized(RoleData.from(state)))))
.otherwise(noGreeting -> Response.of(NotFound))
.recoverFrom(e -> Response.of(InternalServerError, e.getMessage()));
}

public Completes<Response> unassignUser(final String tenantId, final String roleName, final String username, final RoleData data) {
public Completes<Response> unassignUser(final String tenantId, final String roleName, final String username) {
return resolve(tenantId, roleName)
.andThenTo(role -> role.unassignUser(data.name))
.andThenTo(role -> role.unassignUser(UserId.from(TenantId.from(tenantId), username)))
.andThenTo(state -> Completes.withSuccess(entityResponseOf(Ok, serialized(RoleData.from(state)))))
.otherwise(noGreeting -> Response.of(NotFound))
.recoverFrom(e -> Response.of(InternalServerError, e.getMessage()));
}

public Completes<Response> attach(final String tenantId, final String roleName, final RoleData data) {
public Completes<Response> attach(final String tenantId, final String roleName, final String permissionName) {
return resolve(tenantId, roleName)
.andThenTo(role -> role.attach(data.name))
.andThenTo(role -> role.attach(PermissionId.from(TenantId.from(tenantId), permissionName)))
.andThenTo(state -> Completes.withSuccess(entityResponseOf(Ok, serialized(RoleData.from(state)))))
.otherwise(noGreeting -> Response.of(NotFound))
.recoverFrom(e -> Response.of(InternalServerError, e.getMessage()));
}

public Completes<Response> detach(final String tenantId, final String roleName, final String permissionName, final RoleData data) {
public Completes<Response> detach(final String tenantId, final String roleName, final String permissionName) {
return resolve(tenantId, roleName)
.andThenTo(role -> role.detach(data.name))
.andThenTo(role -> role.detach(PermissionId.from(TenantId.from(tenantId), permissionName)))
.andThenTo(state -> Completes.withSuccess(entityResponseOf(Ok, serialized(RoleData.from(state)))))
.otherwise(noGreeting -> Response.of(NotFound))
.recoverFrom(e -> Response.of(InternalServerError, e.getMessage()));
Expand Down Expand Up @@ -125,38 +128,35 @@ public Resource<?> routes() {
.param(String.class)
.body(RoleData.class)
.handle(this::changeDescription),
io.vlingo.xoom.http.resource.ResourceBuilder.put("/tenants/{tenantId}/roles/{roleName}/groups")
io.vlingo.xoom.http.resource.ResourceBuilder.put("/tenants/{tenantId}/roles/{roleName}/groups/{groupName}")
.param(String.class)
.param(String.class)
.param(String.class)
.body(RoleData.class)
.handle(this::assignGroup),
io.vlingo.xoom.http.resource.ResourceBuilder.delete("/tenants/{tenantId}/roles/{roleName}/groups/{groupName}")
.param(String.class)
.param(String.class)
.param(String.class)
.body(RoleData.class)
.handle(this::unassignGroup),
io.vlingo.xoom.http.resource.ResourceBuilder.put("/tenants/{tenantId}/roles/{roleName}/users")
io.vlingo.xoom.http.resource.ResourceBuilder.put("/tenants/{tenantId}/roles/{roleName}/users/{username")
.param(String.class)
.param(String.class)
.param(String.class)
.body(RoleData.class)
.handle(this::assignUser),
io.vlingo.xoom.http.resource.ResourceBuilder.delete("/tenants/{tenantId}/roles/{roleName}/users/{username}")
.param(String.class)
.param(String.class)
.param(String.class)
.body(RoleData.class)
.handle(this::unassignUser),
io.vlingo.xoom.http.resource.ResourceBuilder.put("/tenants/{tenantId}/roles/{roleName}/permissions")
io.vlingo.xoom.http.resource.ResourceBuilder.put("/tenants/{tenantId}/roles/{roleName}/permissions/{permissionName}")
.param(String.class)
.param(String.class)
.param(String.class)
.body(RoleData.class)
.handle(this::attach),
io.vlingo.xoom.http.resource.ResourceBuilder.delete("/tenants/{tenantId}/roles/{roleName}/permissions/{permissionName}")
.param(String.class)
.param(String.class)
.param(String.class)
.body(RoleData.class)
.handle(this::detach),
io.vlingo.xoom.http.resource.ResourceBuilder.get("/tenants/{tenantId}/roles")
.handle(this::roles),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.vlingo.xoom.auth.model.role;

import io.vlingo.xoom.auth.model.group.GroupId;
import io.vlingo.xoom.common.version.SemanticVersion;
import io.vlingo.xoom.lattice.model.IdentifiedDomainEvent;

Expand All @@ -13,12 +14,12 @@
public final class GroupAssignedToRole extends IdentifiedDomainEvent {

public final RoleId roleId;
public final String name;
public final GroupId groupId;

public GroupAssignedToRole(final RoleId roleId, final String name) {
public GroupAssignedToRole(final RoleId roleId, final GroupId groupId) {
super(SemanticVersion.from("1.0.0").toValue());
this.roleId = roleId;
this.name = name;
this.groupId = groupId;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.vlingo.xoom.auth.model.role;

import io.vlingo.xoom.auth.model.group.GroupId;
import io.vlingo.xoom.common.version.SemanticVersion;
import io.vlingo.xoom.lattice.model.IdentifiedDomainEvent;

Expand All @@ -13,12 +14,12 @@
public final class GroupUnassignedFromRole extends IdentifiedDomainEvent {

public final RoleId roleId;
public final String name;
public final GroupId groupId;

public GroupUnassignedFromRole(final RoleId roleId, final String name) {
public GroupUnassignedFromRole(final RoleId roleId, final GroupId groupId) {
super(SemanticVersion.from("1.0.0").toValue());
this.roleId = roleId;
this.name = name;
this.groupId = groupId;
}

@Override
Expand Down
15 changes: 9 additions & 6 deletions src/main/java/io/vlingo/xoom/auth/model/role/Role.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package io.vlingo.xoom.auth.model.role;

import io.vlingo.xoom.auth.model.group.GroupId;
import io.vlingo.xoom.auth.model.permission.PermissionId;
import io.vlingo.xoom.auth.model.user.UserId;
import io.vlingo.xoom.common.Completes;

public interface Role {
Expand All @@ -8,16 +11,16 @@ public interface Role {

Completes<RoleState> changeDescription(final String description);

Completes<RoleState> assignGroup(final String name);
Completes<RoleState> assignGroup(final GroupId groupId);

Completes<RoleState> unassignGroup(final String name);
Completes<RoleState> unassignGroup(final GroupId groupId);

Completes<RoleState> assignUser(final String name);
Completes<RoleState> assignUser(final UserId userId);

Completes<RoleState> unassignUser(final String name);
Completes<RoleState> unassignUser(final UserId userId);

Completes<RoleState> attach(final String name);
Completes<RoleState> attach(final PermissionId permissionId);

Completes<RoleState> detach(final String name);
Completes<RoleState> detach(final PermissionId permissionId);

}
39 changes: 21 additions & 18 deletions src/main/java/io/vlingo/xoom/auth/model/role/RoleEntity.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package io.vlingo.xoom.auth.model.role;

import io.vlingo.xoom.auth.model.group.GroupId;
import io.vlingo.xoom.auth.model.permission.PermissionId;
import io.vlingo.xoom.auth.model.user.UserId;
import io.vlingo.xoom.common.Completes;
import io.vlingo.xoom.lattice.model.sourcing.EventSourced;

Expand Down Expand Up @@ -42,51 +45,51 @@ public Completes<RoleState> changeDescription(final String description) {
}

@Override
public Completes<RoleState> assignGroup(final String name) {
public Completes<RoleState> assignGroup(final GroupId groupId) {
/**
* TODO: Implement command logic. See {@link RoleState#assignGroup()}
*/
return apply(new GroupAssignedToRole(state.roleId, name), () -> state);
return apply(new GroupAssignedToRole(state.roleId, groupId), () -> state);
}

@Override
public Completes<RoleState> unassignGroup(final String name) {
public Completes<RoleState> unassignGroup(final GroupId groupId) {
/**
* TODO: Implement command logic. See {@link RoleState#unassignGroup()}
*/
return apply(new GroupUnassignedFromRole(state.roleId, name), () -> state);
return apply(new GroupUnassignedFromRole(state.roleId, groupId), () -> state);
}

@Override
public Completes<RoleState> assignUser(final String name) {
public Completes<RoleState> assignUser(final UserId userId) {
/**
* TODO: Implement command logic. See {@link RoleState#assignUser()}
*/
return apply(new UserAssignedToRole(state.roleId, name), () -> state);
return apply(new UserAssignedToRole(state.roleId, userId), () -> state);
}

@Override
public Completes<RoleState> unassignUser(final String name) {
public Completes<RoleState> unassignUser(final UserId userId) {
/**
* TODO: Implement command logic. See {@link RoleState#unassignUser()}
*/
return apply(new UserUnassignedFromRole(state.roleId, name), () -> state);
return apply(new UserUnassignedFromRole(state.roleId, userId), () -> state);
}

@Override
public Completes<RoleState> attach(final String name) {
public Completes<RoleState> attach(final PermissionId permissionId) {
/**
* TODO: Implement command logic. See {@link RoleState#attach()}
*/
return apply(new RolePermissionAttached(state.roleId, name), () -> state);
return apply(new RolePermissionAttached(state.roleId, permissionId), () -> state);
}

@Override
public Completes<RoleState> detach(final String name) {
public Completes<RoleState> detach(final PermissionId permissionId) {
/**
* TODO: Implement command logic. See {@link RoleState#detach()}
*/
return apply(new RolePermissionDetached(state.roleId, name), () -> state);
return apply(new RolePermissionDetached(state.roleId, permissionId), () -> state);
}

private void applyRoleProvisioned(final RoleProvisioned event) {
Expand All @@ -98,27 +101,27 @@ private void applyRoleDescriptionChanged(final RoleDescriptionChanged event) {
}

private void applyGroupAssignedToRole(final GroupAssignedToRole event) {
state = state.assignGroup(event.name);
state = state.assignGroup(event.groupId);
}

private void applyGroupUnassignedFromRole(final GroupUnassignedFromRole event) {
state = state.unassignGroup(event.name);
state = state.unassignGroup(event.groupId);
}

private void applyUserAssignedToRole(final UserAssignedToRole event) {
state = state.assignUser(event.name);
state = state.assignUser(event.userId);
}

private void applyUserUnassignedFromRole(final UserUnassignedFromRole event) {
state = state.unassignUser(event.name);
state = state.unassignUser(event.userId);
}

private void applyRolePermissionAttached(final RolePermissionAttached event) {
state = state.attach(event.name);
state = state.attach(event.permissionId);
}

private void applyRolePermissionDetached(final RolePermissionDetached event) {
state = state.detach(event.name);
state = state.detach(event.permissionId);
}

/*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.vlingo.xoom.auth.model.role;

import io.vlingo.xoom.auth.model.permission.PermissionId;
import io.vlingo.xoom.common.version.SemanticVersion;
import io.vlingo.xoom.lattice.model.IdentifiedDomainEvent;

Expand All @@ -13,12 +14,12 @@
public final class RolePermissionAttached extends IdentifiedDomainEvent {

public final RoleId roleId;
public final String name;
public final PermissionId permissionId;

public RolePermissionAttached(final RoleId roleId, final String name) {
public RolePermissionAttached(final RoleId roleId, final PermissionId permissionId) {
super(SemanticVersion.from("1.0.0").toValue());
this.roleId = roleId;
this.name = name;
this.permissionId = permissionId;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.vlingo.xoom.auth.model.role;

import io.vlingo.xoom.auth.model.permission.PermissionId;
import io.vlingo.xoom.common.version.SemanticVersion;
import io.vlingo.xoom.lattice.model.IdentifiedDomainEvent;

Expand All @@ -13,12 +14,12 @@
public final class RolePermissionDetached extends IdentifiedDomainEvent {

public final RoleId roleId;
public final String name;
public final PermissionId permissionId;

public RolePermissionDetached(final RoleId roleId, final String name) {
public RolePermissionDetached(final RoleId roleId, final PermissionId permissionId) {
super(SemanticVersion.from("1.0.0").toValue());
this.roleId = roleId;
this.name = name;
this.permissionId = permissionId;
}

@Override
Expand Down
Loading

0 comments on commit 2263379

Please sign in to comment.