* ONAP
* ================================================================================
* Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2023 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
package org.onap.policy.controlloop.actor.aai;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertSame;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import jakarta.ws.rs.client.Invocation.Builder;
+import jakarta.ws.rs.client.WebTarget;
import java.util.Map;
-import java.util.concurrent.CompletableFuture;
-import javax.ws.rs.client.InvocationCallback;
+import org.junit.AfterClass;
import org.junit.Before;
+import org.junit.BeforeClass;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.junit.MockitoJUnitRunner;
import org.onap.policy.aai.AaiConstants;
-import org.onap.policy.common.utils.coder.StandardCoder;
-import org.onap.policy.common.utils.coder.StandardCoderObject;
-import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
-import org.onap.policy.controlloop.policy.PolicyResult;
-public class AaiGetOperationTest extends BasicAaiOperation<Void> {
-
- private static final String INPUT_FIELD = "input";
- private static final String TEXT = "my-text";
+@RunWith(MockitoJUnitRunner.class)
+public class AaiGetOperationTest extends BasicAaiOperation {
+ private static final String MY_NAME = "my-operation-name";
+ private static final String PARAM_NAME = "my-param";
+ private static final String PARAM_VALUE = "my-value";
private AaiGetOperation oper;
public AaiGetOperationTest() {
- super(AaiConstants.ACTOR_NAME, AaiGetOperation.TENANT);
+ super(AaiConstants.ACTOR_NAME, MY_NAME);
+ }
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ initBeforeClass();
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() {
+ destroyAfterClass();
}
/**
}
@Test
- public void testGetRetry() {
- // use default if null retry
- assertEquals(AaiGetOperation.DEFAULT_RETRY, oper.getRetry(null));
-
- // otherwise, use specified value
- assertEquals(0, oper.getRetry(0));
- assertEquals(10, oper.getRetry(10));
+ public void testConstructor() {
+ assertEquals(AaiConstants.ACTOR_NAME, oper.getActorName());
+ assertEquals(MY_NAME, oper.getName());
}
@Test
- @SuppressWarnings("unchecked")
- public void testStartOperationAsync_testStartQueryAsync_testPostProcessResponse() throws Exception {
-
- // return a map in the reply
- Map<String, String> reply = Map.of(INPUT_FIELD, TEXT);
- when(rawResponse.readEntity(String.class)).thenReturn(new StandardCoder().encode(reply));
-
- when(webAsync.get(any(InvocationCallback.class))).thenAnswer(provideResponse(rawResponse));
-
- CompletableFuture<OperationOutcome> future2 = oper.startOperationAsync(1, outcome);
- assertFalse(future2.isDone());
-
- executor.runAll(100);
- assertTrue(future2.isDone());
-
- assertEquals(PolicyResult.SUCCESS, future2.get().getResult());
-
- // data should have been cached within the context
- StandardCoderObject data = context.getProperty(AaiGetOperation.getTenantKey(TARGET_ENTITY));
- assertNotNull(data);
- assertEquals(TEXT, data.getString(INPUT_FIELD));
+ public void testGenerateSubRequestId() {
+ oper.generateSubRequestId(3);
+ assertEquals("3", oper.getSubRequestId());
}
- /**
- * Tests startOperationAsync() when there's a failure.
- */
@Test
- @SuppressWarnings("unchecked")
- public void testStartOperationAsyncFailure() throws Exception {
-
- when(rawResponse.getStatus()).thenReturn(500);
- when(rawResponse.readEntity(String.class)).thenReturn("");
-
- when(webAsync.get(any(InvocationCallback.class))).thenAnswer(provideResponse(rawResponse));
-
- CompletableFuture<OperationOutcome> future2 = oper.startOperationAsync(1, outcome);
- assertFalse(future2.isDone());
+ public void testAddQuery() {
+ WebTarget web = mock(WebTarget.class);
+ when(web.queryParam(any(), any())).thenReturn(web);
- executor.runAll(100);
- assertTrue(future2.isDone());
+ StringBuilder bldr = new StringBuilder();
- assertEquals(PolicyResult.FAILURE, future2.get().getResult());
-
- // data should NOT have been cached within the context
- assertNull(context.getProperty(AaiGetOperation.getTenantKey(TARGET_ENTITY)));
+ assertSame(web, oper.addQuery(web, bldr, ",", PARAM_NAME, PARAM_VALUE));
+ assertEquals(",my-param=my-value", bldr.toString());
}
@Test
- public void testMakeHeaders() {
- verifyHeaders(oper.makeHeaders());
+ public void testAddHeaders() {
+ Builder bldr = mock(Builder.class);
+ oper.addHeaders(bldr, Map.of("hdrA", "valA", "hdrB", "valB"));
+
+ verify(bldr, times(2)).header(any(), any());
+ verify(bldr).header("hdrA", "valA");
+ verify(bldr).header("hdrB", "valB");
}
@Test
- public void testAaiGetOperator() {
- assertEquals(AaiConstants.ACTOR_NAME, oper.getActorName());
- assertEquals(AaiGetOperation.TENANT, oper.getName());
+ public void testGetRetry() {
+ // use default if null retry
+ assertEquals(AaiGetOperation.DEFAULT_RETRY, oper.getRetry(null));
+
+ // otherwise, use specified value
+ assertEquals(0, oper.getRetry(0));
+ assertEquals(10, oper.getRetry(10));
}
@Test
- public void testGetTenantKey() {
- assertEquals("AAI.Tenant." + TARGET_ENTITY, AaiGetOperation.getTenantKey(TARGET_ENTITY));
+ public void testMakeHeaders() {
+ verifyHeaders(oper.makeHeaders());
}
}