diff options
| -rw-r--r-- | pom.xml | 15 | ||||
| -rw-r--r-- | src/test/java/net/libertacasa/pubsh/web/WebApplicationTest.java | 81 | ||||
| -rw-r--r-- | src/test/java/net/libertacasa/pubsh/web/WebApplicationTests.java | 13 | ||||
| -rw-r--r-- | src/test/resources/application.properties | 11 | ||||
| -rw-r--r-- | src/test/resources/schema.sql | 14 | 
5 files changed, 120 insertions, 14 deletions
| @@ -100,7 +100,13 @@      <dependency>        <groupId>org.mariadb.jdbc</groupId>        <artifactId>mariadb-java-client</artifactId> -    </dependency>		 +    </dependency> +     +    <dependency> +    	<groupId>com.h2database</groupId> +    	<artifactId>h2</artifactId> +    	<scope>test</scope> +	</dependency>         <dependency>              <groupId>org.springframework.boot</groupId> @@ -124,6 +130,13 @@  		    <artifactId>spring-boot-starter-logging</artifactId>  		</dependency> +		<dependency> +    <groupId>com.c4-soft.springaddons</groupId> +    <artifactId>spring-addons-keycloak</artifactId> +    <version>4.1.10</version> +			<scope>test</scope> +		</dependency>	 +		  	</dependencies>  	<dependencyManagement> diff --git a/src/test/java/net/libertacasa/pubsh/web/WebApplicationTest.java b/src/test/java/net/libertacasa/pubsh/web/WebApplicationTest.java new file mode 100644 index 0000000..70a69b3 --- /dev/null +++ b/src/test/java/net/libertacasa/pubsh/web/WebApplicationTest.java @@ -0,0 +1,81 @@ +package net.libertacasa.pubsh.web; + +import static org.hamcrest.CoreMatchers.containsString; +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.startsWith; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.forwardedUrl; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.redirectedUrl; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; + +import com.c4_soft.springaddons.security.oauth2.test.annotations.Claims; +import com.c4_soft.springaddons.security.oauth2.test.annotations.OpenIdClaims; +import com.c4_soft.springaddons.security.oauth2.test.annotations.StringClaim; +import com.c4_soft.springaddons.security.oauth2.test.annotations.keycloak.WithMockKeycloakAuth; + +//@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@SpringBootTest +@AutoConfigureMockMvc +class WebApplicationTest { + +	@Test +	void contextLoads() { +	} +	 +	@Autowired +	private MockMvc mvc; +	 +	@Test +	public void getRoot() throws Exception { +		mvc.perform(MockMvcRequestBuilders.get("/")) +				.andExpect(status().isFound()) +				.andExpect(redirectedUrl("/portal")); +	}	 +	 +    @Test +    public void getPortalNoAuth() throws Exception { +        mvc.perform(MockMvcRequestBuilders.get("/portal")) +        		.andExpect(status().isFound()) +        		.andExpect(redirectedUrl("/sso/login")); +    } +     +    @Test +    public void getAdminNoAuth() throws Exception { +        mvc.perform(MockMvcRequestBuilders.get("/admin")) +        		.andExpect(status().isFound()) +        		.andExpect(redirectedUrl("/sso/login")); +    } +     +    @Test +    @WithMockKeycloakAuth("TotallyLegitUserWithZeroAdministrativePermissions") +    public void getAdminWrongAuth() throws Exception { +        mvc.perform(MockMvcRequestBuilders.get("/admin")) +        		.andExpect(status().isForbidden()); +    } +     +    @Test +    @WithMockKeycloakAuth( +            authorities = { "devel-user" }, +            claims = @OpenIdClaims( +            		sub = "12345", +                    email = "regular-user@example.com", +                    emailVerified = true, +                    //nickName = "TotallyLegitUserWithSuperPowers", +                    //preferredUsername = "TotallyLegitUserWithSuperPowers", +                    otherClaims = @Claims(stringClaims = @StringClaim(name = "username", value = "regular-user")))) +    public void getPortalWithAuth() throws Exception { +    	mvc.perform(MockMvcRequestBuilders.get("/portal")) +                .andExpect(status().isOk()) +                .andExpect(content().string(startsWith("<!DOCTYPE html>"))) +                .andExpect(content().string(containsString("Hello, <span>regular-user</span>."))) +                .andExpect(content().string(containsString("Generate new throw-away shell:"))); +    } + +} diff --git a/src/test/java/net/libertacasa/pubsh/web/WebApplicationTests.java b/src/test/java/net/libertacasa/pubsh/web/WebApplicationTests.java deleted file mode 100644 index ffb21f0..0000000 --- a/src/test/java/net/libertacasa/pubsh/web/WebApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.libertacasa.pubsh.web; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class WebApplicationTests { - -	@Test -	void contextLoads() { -	} - -} diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties new file mode 100644 index 0000000..8161d6c --- /dev/null +++ b/src/test/resources/application.properties @@ -0,0 +1,11 @@ +spring.datasource.driver-class-name=org.h2.Driver +spring.datasource.jdbc-url=jdbc:h2:mem:pubshweb;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false +spring.jpa.show-sql=true +spring.jpa.generate-ddl=true +# This is a bogus endpoint, the results are mocked, but the Keycloak library does not know that: +keycloak.auth-server-url=http://127.0.0.9:98765/ +keycloak.realm=local-devel +keycloak.resource=portal-app +keycloak.public-client=true +### VERY BAD, TO-DO: mock Docker results: +lysergic.docker.endpoint=tcp://sweetsuse:2375
\ No newline at end of file diff --git a/src/test/resources/schema.sql b/src/test/resources/schema.sql new file mode 100644 index 0000000..a369f62 --- /dev/null +++ b/src/test/resources/schema.sql @@ -0,0 +1,14 @@ +CREATE TABLE scheduled_tasks ( +  task_name varchar(40) not null, +  task_instance varchar(100) not null, +  task_data blob, +  execution_time timestamp(6) not null, +  picked BOOLEAN not null, +  picked_by varchar(50), +  last_success timestamp(6) null, +  last_failure timestamp(6) null, +  consecutive_failures INT, +  last_heartbeat timestamp(6) null, +  version BIGINT not null, +  PRIMARY KEY (task_name, task_instance) +);
\ No newline at end of file | 
