5 changed files with 178 additions and 2 deletions
@ -0,0 +1,47 @@
@@ -0,0 +1,47 @@
|
||||
/* |
||||
* Copyright 2002-2022 the original author or authors. |
||||
* |
||||
* Licensed 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 |
||||
* |
||||
* https://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.springframework.security.saml2.jackson2; |
||||
|
||||
import com.fasterxml.jackson.annotation.JsonAutoDetect; |
||||
import com.fasterxml.jackson.annotation.JsonCreator; |
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
||||
import com.fasterxml.jackson.annotation.JsonProperty; |
||||
import com.fasterxml.jackson.annotation.JsonTypeInfo; |
||||
|
||||
import org.springframework.security.saml2.core.Saml2Error; |
||||
import org.springframework.security.saml2.provider.service.authentication.Saml2AuthenticationException; |
||||
|
||||
/** |
||||
* This mixin class is used to serialize/deserialize {@link Saml2AuthenticationException}. |
||||
* |
||||
* @author Ulrich Grave |
||||
* @since 5.7 |
||||
* @see Saml2AuthenticationException |
||||
* @see Saml2Jackson2Module |
||||
*/ |
||||
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS) |
||||
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NONE, |
||||
isGetterVisibility = JsonAutoDetect.Visibility.NONE) |
||||
@JsonIgnoreProperties(ignoreUnknown = true, value = { "cause", "stackTrace", "suppressedExceptions" }) |
||||
class Saml2AuthenticationExceptionMixin { |
||||
|
||||
@JsonCreator |
||||
Saml2AuthenticationExceptionMixin(@JsonProperty("error") Saml2Error error, |
||||
@JsonProperty("detailMessage") String message) { |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,45 @@
@@ -0,0 +1,45 @@
|
||||
/* |
||||
* Copyright 2002-2022 the original author or authors. |
||||
* |
||||
* Licensed 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 |
||||
* |
||||
* https://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.springframework.security.saml2.jackson2; |
||||
|
||||
import com.fasterxml.jackson.annotation.JsonAutoDetect; |
||||
import com.fasterxml.jackson.annotation.JsonCreator; |
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
||||
import com.fasterxml.jackson.annotation.JsonProperty; |
||||
import com.fasterxml.jackson.annotation.JsonTypeInfo; |
||||
|
||||
import org.springframework.security.saml2.core.Saml2Error; |
||||
|
||||
/** |
||||
* This mixin class is used to serialize/deserialize {@link Saml2Error}. |
||||
* |
||||
* @author Ulrich Grave |
||||
* @since 5.7 |
||||
* @see Saml2Error |
||||
* @see Saml2Jackson2Module |
||||
*/ |
||||
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS) |
||||
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NONE, |
||||
isGetterVisibility = JsonAutoDetect.Visibility.NONE) |
||||
@JsonIgnoreProperties(ignoreUnknown = true) |
||||
class Saml2ErrorMixin { |
||||
|
||||
@JsonCreator |
||||
Saml2ErrorMixin(@JsonProperty("errorCode") String errorCode, @JsonProperty("description") String description) { |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,61 @@
@@ -0,0 +1,61 @@
|
||||
/* |
||||
* Copyright 2002-2022 the original author or authors. |
||||
* |
||||
* Licensed 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 |
||||
* |
||||
* https://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.springframework.security.saml2.jackson2; |
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper; |
||||
import org.junit.jupiter.api.BeforeEach; |
||||
import org.junit.jupiter.api.Test; |
||||
import org.skyscreamer.jsonassert.JSONAssert; |
||||
|
||||
import org.springframework.security.jackson2.SecurityJackson2Modules; |
||||
import org.springframework.security.saml2.core.Saml2Error; |
||||
import org.springframework.security.saml2.provider.service.authentication.Saml2AuthenticationException; |
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat; |
||||
|
||||
class Saml2AuthenticationExceptionMixinTest { |
||||
|
||||
private ObjectMapper mapper; |
||||
|
||||
@BeforeEach |
||||
void setUp() { |
||||
this.mapper = new ObjectMapper(); |
||||
ClassLoader loader = getClass().getClassLoader(); |
||||
this.mapper.registerModules(SecurityJackson2Modules.getModules(loader)); |
||||
} |
||||
|
||||
@Test |
||||
void shouldSerialize() throws Exception { |
||||
Saml2AuthenticationException exception = TestSaml2JsonPayloads.createDefaultSaml2AuthenticationException(); |
||||
|
||||
String exceptionJson = this.mapper.writeValueAsString(exception); |
||||
|
||||
JSONAssert.assertEquals(TestSaml2JsonPayloads.DEFAULT_SAML_AUTH_EXCEPTION_JSON, exceptionJson, true); |
||||
} |
||||
|
||||
@Test |
||||
void shouldDeserialize() throws Exception { |
||||
Saml2AuthenticationException exception = this.mapper |
||||
.readValue(TestSaml2JsonPayloads.DEFAULT_SAML_AUTH_EXCEPTION_JSON, Saml2AuthenticationException.class); |
||||
|
||||
assertThat(exception).isNotNull(); |
||||
assertThat(exception.getMessage()).isEqualTo("exceptionMessage"); |
||||
assertThat(exception.getSaml2Error()).extracting(Saml2Error::getErrorCode, Saml2Error::getDescription) |
||||
.contains("errorCode", "errorDescription"); |
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue