Skip to content

Commit

Permalink
spring mvc tests to java (open-telemetry#11114)
Browse files Browse the repository at this point in the history
Co-authored-by: Lauri Tulmin <[email protected]>
  • Loading branch information
aschugunov and laurit authored May 8, 2024
1 parent 32df5ae commit deac397
Show file tree
Hide file tree
Showing 33 changed files with 1,398 additions and 1,162 deletions.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.javaagent.instrumentation.spring.webmvc.v3_1.boot;

import io.opentelemetry.instrumentation.spring.webmvc.boot.SavingAuthenticationProvider;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
public class SecurityConfig {

@Bean
SavingAuthenticationProvider savingAuthenticationProvider() {
return new SavingAuthenticationProvider();
}

/**
* Following configuration is required for unauthorised call tests (form would redirect, we need
* 401)
*/
@Configuration
@Order(1)
static class ApiWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf()
.disable()
.antMatcher("/basicsecured/**")
.authorizeRequests()
.antMatchers("/basicsecured/**")
.authenticated()
.and()
.httpBasic()
.and()
.authenticationProvider(
getApplicationContext().getBean(SavingAuthenticationProvider.class));
}
}

/** Following configuration is required in order to get form login, needed by password tests */
@Configuration
static class FormLoginWebSecurityConfigurerAdapter extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf()
.disable()
.authorizeRequests()
.antMatchers("/formsecured/**")
.authenticated()
.and()
.formLogin()
.and()
.authenticationProvider(
getApplicationContext().getBean(SavingAuthenticationProvider.class));
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.javaagent.instrumentation.spring.webmvc.v3_1.boot;

import static io.opentelemetry.instrumentation.testing.junit.http.ServerEndpoint.EXCEPTION;

import com.google.common.collect.ImmutableMap;
import io.opentelemetry.instrumentation.spring.webmvc.boot.AbstractSpringBootBasedTest;
import io.opentelemetry.instrumentation.spring.webmvc.boot.AppConfig;
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
import io.opentelemetry.instrumentation.testing.junit.http.HttpServerInstrumentationExtension;
import io.opentelemetry.instrumentation.testing.junit.http.HttpServerTestOptions;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.springframework.boot.SpringApplication;
import org.springframework.context.ConfigurableApplicationContext;

class SpringBootBasedTest extends AbstractSpringBootBasedTest {

@RegisterExtension
private static final InstrumentationExtension testing =
HttpServerInstrumentationExtension.forAgent();

private ConfigurableApplicationContext context;

@Override
protected ConfigurableApplicationContext context() {
return context;
}

@Override
protected ConfigurableApplicationContext setupServer() {
SpringApplication app = new SpringApplication(AppConfig.class, securityConfigClass());
app.setDefaultProperties(
ImmutableMap.of(
"server.port",
port,
"server.context-path",
getContextPath(),
"server.servlet.contextPath",
getContextPath(),
"server.error.include-message",
"always"));
context = app.run();
return context;
}

@Override
public Class<?> securityConfigClass() {
return SecurityConfig.class;
}

@Override
protected void configure(HttpServerTestOptions options) {
super.configure(options);
options.setResponseCodeOnNonStandardHttpMethod(
Boolean.getBoolean("testLatestDeps") ? 500 : 200);
options.setExpectedException(new RuntimeException(EXCEPTION.getBody()));
}
}
Loading

0 comments on commit deac397

Please sign in to comment.