diff options
author | ITSERVICES\rb7147 <rb7147@att.com> | 2017-04-25 11:46:00 -0400 |
---|---|---|
committer | ITSERVICES\rb7147 <rb7147@att.com> | 2017-05-03 09:58:17 -0400 |
commit | e0addf5b588a1244f9679becd90999dfcb4c3a94 (patch) | |
tree | 1212772d6366730266ff0e093c874b07aa716c29 /ECOMP-TEST/src/test/java/org/openecomp/policy/pdp/test/annotations/TestAnnotation.java | |
parent | 39fb0f30472777e4b60d6a7ac8aa4eb9773961ff (diff) |
Policy 1707 commit to LF
Change-Id: Ibe6f01d92f9a434c040abb05d5386e89d675ae65
Signed-off-by: ITSERVICES\rb7147 <rb7147@att.com>
Diffstat (limited to 'ECOMP-TEST/src/test/java/org/openecomp/policy/pdp/test/annotations/TestAnnotation.java')
-rw-r--r-- | ECOMP-TEST/src/test/java/org/openecomp/policy/pdp/test/annotations/TestAnnotation.java | 240 |
1 files changed, 0 insertions, 240 deletions
diff --git a/ECOMP-TEST/src/test/java/org/openecomp/policy/pdp/test/annotations/TestAnnotation.java b/ECOMP-TEST/src/test/java/org/openecomp/policy/pdp/test/annotations/TestAnnotation.java deleted file mode 100644 index 84b3f9292..000000000 --- a/ECOMP-TEST/src/test/java/org/openecomp/policy/pdp/test/annotations/TestAnnotation.java +++ /dev/null @@ -1,240 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-TEST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * 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 - * - * 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. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.pdp.test.annotations; - -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URI; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Collection; -import java.util.Date; -import java.util.TimeZone; - -import org.apache.commons.cli.ParseException; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.openecomp.policy.pdp.test.TestBase; - -import com.att.research.xacml.api.DataTypeException; -import com.att.research.xacml.api.Response; -import com.att.research.xacml.std.annotations.RequestParser; -import com.att.research.xacml.std.annotations.XACMLAction; -import com.att.research.xacml.std.annotations.XACMLAttribute; -import com.att.research.xacml.std.annotations.XACMLEnvironment; -import com.att.research.xacml.std.annotations.XACMLMultiRequest; -import com.att.research.xacml.std.annotations.XACMLRequest; -import com.att.research.xacml.std.annotations.XACMLRequestReference; -import com.att.research.xacml.std.annotations.XACMLResource; -import com.att.research.xacml.std.annotations.XACMLSubject; -import com.att.research.xacml.std.datatypes.HexBinary; -import com.att.research.xacml.std.datatypes.IPAddress; -import com.att.research.xacml.std.datatypes.IPv4Address; -import com.att.research.xacml.std.datatypes.ISO8601DateTime; -import com.att.research.xacml.std.datatypes.ISO8601Time; -import com.att.research.xacml.util.FactoryException; - -/** - * This example application shows how to use annotations for Java classes to create requests to send to the - * engine. - * - * - */ -public class TestAnnotation extends TestBase { - private static final Log logger = LogFactory.getLog(TestAnnotation.class); - - private int num; - - /** - * This is a sample class that uses annotations. In addition to demonstrating how to use XACML annotations, - * it also demonstrates the various Java objects that can be used and how the request parser will - * resolve each object's datatype. - * - * - */ - @XACMLRequest(ReturnPolicyIdList=true) - public class MyRequestAttributes { - - public MyRequestAttributes(String user, String action, String resource) { - this.userID = user; - this.action = action; - this.resource = resource; - this.today = new Date(); - this.yesterday = Calendar.getInstance(); - this.yesterday.add(Calendar.DAY_OF_MONTH, -1); - } - - @XACMLSubject(includeInResults=true) - String userID; - - @XACMLSubject(attributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id-qualifier") - boolean admin = false; - - @XACMLSubject(attributeId="urn:oasis:names:tc:xacml:1.0:subject:key-info", issuer="com:foo:security") - HexBinary publicKey = new HexBinary(new byte[] {'1', '0'}); - - @XACMLSubject(attributeId="urn:oasis:names:tc:xacml:1.0:subject:authentication-time") - ISO8601Time authenticationTime = new ISO8601Time(8, 0, 0, 0); - - /** - * Here our base object is "Object", but it is reflected as a Java "String". The parser - * will then use the XACML http://www.w3.org/2001/XMLSchema#string as the datatype. - */ - @XACMLSubject(attributeId="urn:oasis:names:tc:xacml:1.0:subject:authentication-method") - Object authenticationMethod = new String("RSA Public Key"); - - /** - * Here our base object is "String", but we use the annotation for datatype to clarify - * that the real XACML data type is http://www.w3.org/2001/XMLSchema#time. The parser will - * use the data type factory to convert the "String" to a "ISO8601Time" Java object. - */ - @XACMLSubject(attributeId="urn:oasis:names:tc:xacml:1.0:subject:request-time", datatype="http://www.w3.org/2001/XMLSchema#time") - String requestTime = new String("13:20:00-05:00"); - - @XACMLSubject(attributeId="urn:oasis:names:tc:xacml:1.0:subject:session-start-time") - ISO8601DateTime sessionStart = new ISO8601DateTime(TimeZone.getDefault().getID(), 2014, 1, 1, 10, 0, 0, 0); - - @XACMLSubject(attributeId="urn:oasis:names:tc:xacml:3.0:subject:authn-locality:ip-address") - IPAddress ip = new IPv4Address(new short[] {123, 134, 156, 255 }, null, null); - - @XACMLSubject(attributeId="urn:oasis:names:tc:xacml:3.0:subject:authn-locality:dns-name") - String dnsName = "localhost"; - - @XACMLAction() - String action; - - @XACMLAction(attributeId="urn:oasis:names:tc:xacml:1.0:action:implied-action") - long impliedAction; - - @XACMLResource() - String resource; - - @XACMLEnvironment() - Date today; - - @XACMLEnvironment() - Calendar yesterday; - - /** - * This field demonstrates how the parser can detect collections and build a bag of values. - */ - @XACMLAttribute(attributeId="foo:bar:attribute") - Collection<Double> fooBar = Arrays.asList(2.5, 3.5); - - /** - * The XACMLAttribute annotation allows one to specify all the - */ - @XACMLAttribute(category="foo:bar:category", attributeId="foo:bar:attribute2") - double fooBar2 = 3.999; - - /** - * This field demonstrates how the parser can detect arrays and build a bag of values. - */ - @XACMLAttribute(category="foo:bar:category", attributeId="foo:bar:attribute:many") - URI[] fooBarMany = new URI[] {URI.create("file://opt/app/test"), URI.create("https://localhost:8443/")}; - - }; - - @XACMLRequest( - Defaults="http://www.w3.org/TR/1999/Rec-xpath-19991116", - multiRequest=@XACMLMultiRequest(values={ - @XACMLRequestReference(values={"subject1", "action", "resource"}), - @XACMLRequestReference(values={"subject2", "action", "resource"})}) - ) - public class MyMultiRequestAttributes { - - @XACMLSubject(id="subject1") - String userID1 = "John"; - - @XACMLSubject(id="subject2") - String userID2 = "Ringo"; - - @XACMLAction(id="action") - String action = "access"; - - @XACMLResource(id="resource") - String resource = "www.mywebsite.com"; - } - - public TestAnnotation(String[] args) throws MalformedURLException, ParseException, HelpException { - super(args); - } - - @Override - public void run() throws IOException, FactoryException { - // - // We are not going to iterate any existing request files. So we will override - // any TestBase code that assumes there are request files present. - // - // - // Configure ourselves - // - this.configure(); - // - // Cycle through creating a few objects - // - this.num = 0; - this.doRequest(new MyRequestAttributes("John", "access", "www.mywebsite.com")); - this.num++; - this.doRequest(new MyRequestAttributes("Ringo", "access", "www.mywebsite.com")); - this.num++; - this.doRequest(new MyMultiRequestAttributes()); - this.num++; - } - - private void doRequest(Object info) { - try { - Response response = this.callPDP(RequestParser.parseRequest(info)); - Path resultFile; - if (this.output != null) { - resultFile = Paths.get(this.output.toString(), "Response." + String.format("%03d", this.num) + ".json"); - } else { - resultFile = Paths.get(this.directory, "results", "Response." + String.format("%03d", this.num) + ".json"); - } - // - // Write the response to the result file - // - logger.info("Response is: " + response.toString()); - if (resultFile != null) { - Files.write(resultFile, response.toString().getBytes()); - } - } catch (IllegalArgumentException | IllegalAccessException | DataTypeException | IOException e) { - logger.error(e); - e.printStackTrace(); - } - } - - public static void main(String[] args) { - try { - new TestAnnotation(args).run(); - } catch (ParseException | IOException | FactoryException e) { - logger.error(e); - } catch (HelpException e) { - // - // ignore this, its thrown just to exit the application - // after dumping help to stdout. - // - } - } -} |