| /** |
| * 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.wss4j.dom.message.token; |
| |
| import org.apache.wss4j.common.bsp.BSPEnforcer; |
| |
| |
| import org.junit.jupiter.api.Test; |
| |
| import static org.junit.jupiter.api.Assertions.assertEquals; |
| import static org.junit.jupiter.api.Assertions.assertFalse; |
| import static org.junit.jupiter.api.Assertions.assertTrue; |
| |
| /** |
| * Tests for DerivedKeyToken type. |
| */ |
| |
| public class DerivedKeyTokenTest { |
| |
| private static final String TEST_TOKEN_TEMPLATE = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" |
| + "<wsc:DerivedKeyToken " |
| + "xmlns:wsc=\"http://schemas.xmlsoap.org/ws/2005/02/sc\" xmlns:wsu=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd\" wsu:Id=\"_3\" >" |
| + "<wsse:SecurityTokenReference " |
| + "xmlns:wsse=\"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd\" wsu:Id=\"_5002\">" |
| + "<wsse:Reference ValueType=\"http://schemas.xmlsoap.org/ws/2005/02/sc/sct\" URI=\"PLACEHOLDER1\" />" |
| + "</wsse:SecurityTokenReference>" |
| + "<wsc:Offset>0</wsc:Offset>" |
| + "<wsc:Length>PLACEHOLDER2</wsc:Length>" |
| + "<wsc:Nonce>Kq/1ptgjZpX2g1q6MiJcSfTX</wsc:Nonce>" |
| + "<wsc:Label>WS-SecureConversationWS-SecureConversation</wsc:Label>" |
| + "<wsc:Generation>3</wsc:Generation>" |
| + "<wsc:Properties>" |
| + "<wsc:Name>.../derivedKeySource</wsc:Name>" |
| + "</wsc:Properties>" |
| + "</wsc:DerivedKeyToken>"; |
| |
| private DerivedKeyToken token; |
| private DerivedKeyToken tokenEqual; |
| private DerivedKeyToken tokenNotEqual; |
| |
| public DerivedKeyTokenTest() throws Exception { |
| token = new DerivedKeyToken(createReferenceDocument( |
| TEST_TOKEN_TEMPLATE, |
| "#uuid-4063ae9b-fe66-4e09-a5fb-8fda903f34d8", "16") |
| .getDocumentElement(), new BSPEnforcer()); |
| tokenEqual = new DerivedKeyToken(createReferenceDocument( |
| TEST_TOKEN_TEMPLATE, |
| "#uuid-4063ae9b-fe66-4e09-a5fb-8fda903f34d8", "16") |
| .getDocumentElement(), new BSPEnforcer()); |
| tokenNotEqual = new DerivedKeyToken(createReferenceDocument( |
| TEST_TOKEN_TEMPLATE, |
| "#uuid-5603ae9b-fe66-4e09-a5fb-8fda903f34d8", "88") |
| .getDocumentElement(), new BSPEnforcer()); |
| } |
| |
| @Test |
| public void testEquals() throws Exception{ |
| assertTrue(token.equals(tokenEqual)); |
| assertTrue(tokenEqual.equals(token)); |
| assertFalse(token.equals(tokenNotEqual)); |
| assertFalse(token.equals(null)); |
| assertFalse("string".equals(token)); |
| } |
| |
| @Test |
| public void testHashcode() throws Exception{ |
| assertEquals(token.hashCode(), tokenEqual.hashCode()); |
| assertFalse(token.hashCode() == tokenNotEqual.hashCode()); |
| } |
| |
| private static org.w3c.dom.Document createReferenceDocument( |
| final String template, final String placeholder1, |
| final String placeholder2) |
| throws javax.xml.parsers.ParserConfigurationException, |
| org.xml.sax.SAXException, java.io.IOException { |
| final java.io.InputStream in = new java.io.ByteArrayInputStream( |
| template.replaceFirst("PLACEHOLDER1", placeholder1) |
| .replaceFirst("PLACEHOLDER2", placeholder2).getBytes()); |
| final javax.xml.parsers.DocumentBuilderFactory factory = javax.xml.parsers.DocumentBuilderFactory |
| .newInstance(); |
| factory.setNamespaceAware(true); |
| final javax.xml.parsers.DocumentBuilder builder = factory |
| .newDocumentBuilder(); |
| return builder.parse(in); |
| } |
| } |