Skip to content

Commit

Permalink
fixes #184 add permissions to DomainBlacklist
Browse files Browse the repository at this point in the history
  • Loading branch information
Brutus5000 committed Dec 5, 2017
1 parent 0a9aed7 commit 66db6eb
Show file tree
Hide file tree
Showing 5 changed files with 101 additions and 2 deletions.
87 changes: 87 additions & 0 deletions src/inttest/java/com/faforever/api/data/DomainBlacklistTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
package com.faforever.api.data;

import com.faforever.api.AbstractIntegrationTest;
import org.junit.Test;
import org.springframework.security.test.context.support.WithUserDetails;
import org.springframework.test.context.jdbc.Sql;
import org.springframework.test.context.jdbc.Sql.ExecutionPhase;

import static org.hamcrest.Matchers.hasSize;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

@Sql(executionPhase = ExecutionPhase.BEFORE_TEST_METHOD, scripts = "classpath:sql/prepDefaultUser.sql")
@Sql(executionPhase = ExecutionPhase.BEFORE_TEST_METHOD, scripts = "classpath:sql/prepDomainBlacklistData.sql")
@Sql(executionPhase = ExecutionPhase.AFTER_TEST_METHOD, scripts = "classpath:sql/cleanDomainBlacklistData.sql")
public class DomainBlacklistTest extends AbstractIntegrationTest {
private static final String NEW_DOMAIN = "{\"data\":{\"type\":\"domainBlacklist\",\"id\":\"google.com\"}}";

@Test
@WithUserDetails(AUTH_USER)
public void emptyResultDomainBlacklistAsUser() throws Exception {
mockMvc.perform(get("/data/domainBlacklist"))
.andExpect(status().isOk())
.andExpect(content().string("{\"data\":[]}"));
}

@Test
@WithUserDetails(AUTH_USER)
public void cannotReadSpecificDomainBlacklistAsUser() throws Exception {
mockMvc.perform(get("/data/domainBlacklist/spam.org"))
.andExpect(status().isForbidden());
}

@Test
@WithUserDetails(AUTH_MODERATOR)
public void canReadDomainBlacklistAsModerator() throws Exception {
mockMvc.perform(get("/data/domainBlacklist"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.data", hasSize(1)));
}

@Test
@WithUserDetails(AUTH_MODERATOR)
public void canReadSpecificDomainBlacklistAsModerator() throws Exception {
mockMvc.perform(get("/data/domainBlacklist/spam.org"))
.andExpect(status().isOk());
}


@Test
@WithUserDetails(AUTH_USER)
public void cannotCreateDomainBlacklistAsUser() throws Exception {
mockMvc.perform(
post("/data/domainBlacklist")
.content(NEW_DOMAIN))
.andExpect(status().isForbidden());
}

@Test
@WithUserDetails(AUTH_MODERATOR)
public void canCreateDomainBlacklistAsModerator() throws Exception {
mockMvc.perform(
post("/data/domainBlacklist")
.content(NEW_DOMAIN))
.andExpect(status().isCreated());
}

@Test
@WithUserDetails(AUTH_USER)
public void cannotDeleteDomainBlacklistAsUser() throws Exception {
mockMvc.perform(
delete("/data/domainBlacklist/spam.org"))
.andExpect(status().isForbidden());
}

@Test
@WithUserDetails(AUTH_MODERATOR)
public void canDeleteDomainBlacklistAsModerator() throws Exception {
mockMvc.perform(
delete("/data/domainBlacklist/spam.org"))
.andExpect(status().isNoContent());
}
}
1 change: 1 addition & 0 deletions src/inttest/resources/sql/cleanDomainBlacklistData.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
DELETE FROM email_domain_blacklist;
2 changes: 2 additions & 0 deletions src/inttest/resources/sql/prepDomainBlacklistData.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
DELETE FROM email_domain_blacklist;
INSERT INTO email_domain_blacklist VALUES ('spam.org');
11 changes: 10 additions & 1 deletion src/main/java/com/faforever/api/data/domain/DomainBlacklist.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
package com.faforever.api.data.domain;

import com.faforever.api.data.checks.permission.IsModerator;
import com.yahoo.elide.annotation.CreatePermission;
import com.yahoo.elide.annotation.DeletePermission;
import com.yahoo.elide.annotation.Include;
import com.yahoo.elide.annotation.ReadPermission;
import com.yahoo.elide.annotation.UpdatePermission;
import lombok.EqualsAndHashCode;
import lombok.Setter;

Expand All @@ -12,7 +17,11 @@
@Entity
@Setter
@Table(name = "email_domain_blacklist")
@Include(type = "domainBlacklist")
@Include(type = "domainBlacklist", rootLevel = true)
@ReadPermission(expression = IsModerator.EXPRESSION)
@UpdatePermission(expression = IsModerator.EXPRESSION)
@CreatePermission(expression = IsModerator.EXPRESSION)
@DeletePermission(expression = IsModerator.EXPRESSION)
@EqualsAndHashCode
public class DomainBlacklist {
private String domain;
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/config/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ faf-api:
challonge:
key: ${CHALLONGE_KEY:}
database:
schema-version: ${DATABASE_SCHEMA_VERSION:44}
schema-version: ${DATABASE_SCHEMA_VERSION:46}

spring:
application:
Expand Down

0 comments on commit 66db6eb

Please sign in to comment.