Skip to content

Commit

Permalink
JAMES-1839 SimpleGroupMembershipResolver should not fail badly on nul…
Browse files Browse the repository at this point in the history
…l user
  • Loading branch information
Laura-Royet committed Nov 9, 2016
1 parent e20b50b commit aec24c4
Show file tree
Hide file tree
Showing 2 changed files with 87 additions and 11 deletions.
Expand Up @@ -23,6 +23,9 @@
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;


import com.google.common.base.MoreObjects;
import com.google.common.base.Objects;



/** /**
* In memory {@link GroupMembershipResolver} implementation. There is no * In memory {@link GroupMembershipResolver} implementation. There is no
Expand All @@ -31,38 +34,36 @@
*/ */
public class SimpleGroupMembershipResolver implements GroupMembershipResolver { public class SimpleGroupMembershipResolver implements GroupMembershipResolver {


private static class Membership { public static class Membership {
private final String group; private final String group;
private final int hash;
private final String user; private final String user;


public Membership(String user, String group) { public Membership(String user, String group) {
super();
this.group = group; this.group = group;
this.user = user; this.user = user;

final int PRIME = 31;
this.hash = PRIME * this.group.hashCode() + this.user.hashCode();
} }


@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (o instanceof Membership) { if (o instanceof Membership) {
Membership other = (Membership) o; Membership that = (Membership) o;
return this.group == other.group || (this.group != null && this.group.equals(other.group)) && this.user == other.user || (this.user != null && this.user.equals(other.user));

return Objects.equal(this.user, that.user) && Objects.equal(this.group, that.group);
} }
return false; return false;
} }


@Override @Override
public int hashCode() { public int hashCode() {
return hash; return Objects.hashCode(group, user);
} }


@Override @Override
public String toString() { public String toString() {
return group + ": " + user; return MoreObjects.toStringHelper(this)
.add("group", group)
.add("user", user)
.toString();
} }


} }
Expand Down
@@ -0,0 +1,75 @@
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*
*/

package org.apache.james.mailbox.acl;

import static org.assertj.core.api.Assertions.assertThat;

import org.junit.Before;
import org.junit.Test;

public class SimpleGroupMembershipResolverTest {

private SimpleGroupMembershipResolver simpleGroupMembershipResolver;

@Before
public void setUp() {
simpleGroupMembershipResolver = new SimpleGroupMembershipResolver();
}

@Test
public void isMemberShouldReturnFalseWhenEmptyResolver() throws Exception {
//When
boolean actual = simpleGroupMembershipResolver.isMember("user", "group");
//Then
assertThat(actual).isFalse();
}

@Test
public void isMemberShouldReturnTrueWhenTheSearchedMembershipIsPresent() throws Exception {
//Given
simpleGroupMembershipResolver.addMembership("group", "user");
//When
boolean actual = simpleGroupMembershipResolver.isMember("user", "group");
//Then
assertThat(actual).isTrue();
}

@Test
public void addMembershipShouldAddAMembershipWhenNonNullUser() throws Exception {
//When
simpleGroupMembershipResolver.addMembership("group", "user");
boolean actual = simpleGroupMembershipResolver.isMember("user", "group");
//Then
assertThat(actual).isTrue();
}

@Test
public void addMembershipShouldAddAMembershipWithANullUser() throws Exception {
//Given
String userAdded = null;
//When
simpleGroupMembershipResolver.addMembership("group", userAdded);
boolean actual = simpleGroupMembershipResolver.isMember(userAdded, "group");
//Then
assertThat(actual).isTrue();
}

}

0 comments on commit aec24c4

Please sign in to comment.