blob: afce38cb7d88ad788b8f94061f25950db16a6eeb [file] [log] [blame]
/**
* Copyright 2020-present NAVER Corp.
*
* 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.
*/
package com.navercorp.openwhisk.intellij.common.whisk.model;
import com.navercorp.openwhisk.intellij.common.Icons;
import com.navercorp.openwhisk.intellij.common.whisk.model.action.ExecutableWhiskAction;
import com.navercorp.openwhisk.intellij.common.whisk.model.action.WhiskActionMetaData;
import com.navercorp.openwhisk.intellij.common.whisk.model.exec.CodeExec;
import com.navercorp.openwhisk.intellij.common.whisk.model.exec.ExecMetaData;
import com.navercorp.openwhisk.intellij.explorer.editor.model.ComboBoxEntityEntry;
import com.navercorp.openwhisk.intellij.explorer.editor.model.ComboBoxEntityType;
import org.junit.Test;
import javax.swing.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import static com.navercorp.openwhisk.intellij.utils.AnnotationHelper.createActionAnnotation;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class WhiskActionTest {
private String name = "testName";
private String namespace = "testNamespace";
private String pkg = "testPkg";
private String version = "1.0.0";
private long updated = 1581316522182L;
private boolean publish = false;
private List<Map<String, Object>> annotations = createActionAnnotation(false, false, false, false, "nodejs:12");
private Limits limits = new Limits(1, 1, 256, 60000);
private ExecMetaData exec = new ExecMetaData(false);
@Test
public void testGetWhiskPackage() {
String expectedPkg = pkg;
WhiskActionMetaData action = new WhiskActionMetaData(name, namespace, version, updated, publish, annotations, limits, exec);
WhiskActionMetaData actionWithPkg = new WhiskActionMetaData(name, namespace + "/" + pkg, version, updated, publish, annotations, limits, exec);
assertEquals(Optional.empty(), action.getWhiskPackage());
assertEquals(Optional.of(expectedPkg), actionWithPkg.getWhiskPackage());
}
@Test
public void testGetNamespacePath() {
String expectedNamespace = namespace;
WhiskActionMetaData action = new WhiskActionMetaData(name, namespace, version, updated, publish, annotations, limits, exec);
WhiskActionMetaData actionWithPkg = new WhiskActionMetaData(name, namespace + "/" + pkg, version, updated, publish, annotations, limits, exec);
assertEquals(expectedNamespace, action.getNamespacePath());
assertEquals(expectedNamespace, actionWithPkg.getNamespacePath());
}
@Test
public void testGetFullyQualifiedName() {
String expectedFQN = namespace + "/" + name;
String expectedPkgFQN = namespace + "/" + pkg + "/" + name;
WhiskActionMetaData action = new WhiskActionMetaData(name, namespace, version, updated, publish, annotations, limits, exec);
WhiskActionMetaData actionWithPkg = new WhiskActionMetaData(name, namespace + "/" + pkg, version, updated, publish, annotations, limits, exec);
assertEquals(expectedFQN, action.getFullyQualifiedName());
assertEquals(expectedPkgFQN, actionWithPkg.getFullyQualifiedName());
}
@Test
public void testGetKind() {
String expectedNodeKind = "nodejs:12";
String expectedRubyKind = "ruby:2.5";
String expectedPhpKind = "php:7.3";
List<Map<String, Object>> nodeKindAnnotations = createActionAnnotation(false, false, false, false, expectedNodeKind);
List<Map<String, Object>> rubyKindAnnotations = createActionAnnotation(false, false, false, false, expectedRubyKind);
List<Map<String, Object>> phpKindAnnotations = createActionAnnotation(false, false, false, false, expectedPhpKind);
WhiskActionMetaData nodeAction = new WhiskActionMetaData(name, namespace, version, updated, publish, nodeKindAnnotations, limits, exec);
WhiskActionMetaData rubyAction = new WhiskActionMetaData(name, namespace, version, updated, publish, rubyKindAnnotations, limits, exec);
WhiskActionMetaData phpAction = new WhiskActionMetaData(name, namespace, version, updated, publish, phpKindAnnotations, limits, exec);
assertEquals(expectedNodeKind, nodeAction.getKind());
assertEquals(expectedRubyKind, rubyAction.getKind());
assertEquals(expectedPhpKind, phpAction.getKind());
}
@Test
public void testGetKindExtension() {
String expectedNodeExtension = ".js";
String expectedRubyExtension = ".rb";
String expectedPhpExtension = ".php";
String nodeKind = "nodejs:12";
String rubyKind = "ruby:2.5";
String phpKind = "php:7.3";
List<Map<String, Object>> nodeKindAnnotations = createActionAnnotation(false, false, false, false, nodeKind);
List<Map<String, Object>> rubyKindAnnotations = createActionAnnotation(false, false, false, false, rubyKind);
List<Map<String, Object>> phpKindAnnotations = createActionAnnotation(false, false, false, false, phpKind);
WhiskActionMetaData nodeAction = new WhiskActionMetaData(name, namespace, version, updated, publish, nodeKindAnnotations, limits, exec);
WhiskActionMetaData rubyAction = new WhiskActionMetaData(name, namespace, version, updated, publish, rubyKindAnnotations, limits, exec);
WhiskActionMetaData phpAction = new WhiskActionMetaData(name, namespace, version, updated, publish, phpKindAnnotations, limits, exec);
assertEquals(expectedNodeExtension, nodeAction.getKindExtension());
assertEquals(expectedRubyExtension, rubyAction.getKindExtension());
assertEquals(expectedPhpExtension, phpAction.getKindExtension());
}
@Test
public void testGetKindIcon() {
Icon expectedNodeIcon = Icons.KIND_JS;
Icon expectedRubyIcon = Icons.KIND_RUBY;
Icon expectedPhpIcon = Icons.KIND_PHP;
String nodeKind = "nodejs:12";
String rubyKind = "ruby:2.5";
String phpKind = "php:7.3";
List<Map<String, Object>> nodeKindAnnotations = createActionAnnotation(false, false, false, false, nodeKind);
List<Map<String, Object>> rubyKindAnnotations = createActionAnnotation(false, false, false, false, rubyKind);
List<Map<String, Object>> phpKindAnnotations = createActionAnnotation(false, false, false, false, phpKind);
WhiskActionMetaData nodeAction = new WhiskActionMetaData(name, namespace, version, updated, publish, nodeKindAnnotations, limits, exec);
WhiskActionMetaData rubyAction = new WhiskActionMetaData(name, namespace, version, updated, publish, rubyKindAnnotations, limits, exec);
WhiskActionMetaData phpAction = new WhiskActionMetaData(name, namespace, version, updated, publish, phpKindAnnotations, limits, exec);
assertEquals(expectedNodeIcon, nodeAction.getKindIcon());
assertEquals(expectedRubyIcon, rubyAction.getKindIcon());
assertEquals(expectedPhpIcon, phpAction.getKindIcon());
}
@Test
public void testIsSequenceAction() {
List<Map<String, Object>> sequenceAnnotations = createActionAnnotation(false, false, false, false, "sequence");
List<Map<String, Object>> parameters = new ArrayList<>();
List<String> components = new ArrayList<>();
components.add("/testNs/testAction1");
components.add("/testNs/testAction2");
components.add("/testNs/testAction3");
CodeExec codeExec = new CodeExec(false, "sequence", null, null, null, components);
ExecutableWhiskAction sequenceAction = new ExecutableWhiskAction(name, namespace, version, updated, publish,
sequenceAnnotations, limits, codeExec, parameters);
assertTrue(sequenceAction.isSequenceAction());
}
@Test
public void testWhiskActionWebActionOptions() {
List<Map<String, Object>> webAnnotations = createActionAnnotation(true, false, false, false, "nodejs:12");
List<Map<String, Object>> rawHttpAnnotations = createActionAnnotation(true, true, false, false, "nodejs:12");
List<Map<String, Object>> customOptionsAnnotations = createActionAnnotation(true, true, true, false, "nodejs:12");
List<Map<String, Object>> finalAnnotations = createActionAnnotation(true, false, false, true, "nodejs:12");
WhiskActionMetaData webAction = new WhiskActionMetaData(name, namespace, version, updated, publish, webAnnotations, limits, exec);
WhiskActionMetaData rawHttpAction = new WhiskActionMetaData(name, namespace, version, updated, publish, rawHttpAnnotations, limits, exec);
WhiskActionMetaData customOptionsAction = new WhiskActionMetaData(name, namespace, version, updated, publish, customOptionsAnnotations, limits, exec);
WhiskActionMetaData finalAction = new WhiskActionMetaData(name, namespace, version, updated, publish, finalAnnotations, limits, exec);
assertTrue(webAction.isWebAction());
assertTrue(rawHttpAction.isWebAction());
assertTrue(rawHttpAction.isRawHttp());
assertTrue(customOptionsAction.isWebAction());
assertTrue(customOptionsAction.isRawHttp());
assertTrue(finalAction.isWebAction());
assertTrue(finalAction.isFinalDefaultParameter());
}
@Test
public void testWhiskActionMetaDataToString() {
String expected = name;
WhiskActionMetaData action = new WhiskActionMetaData(name, namespace, version, updated, publish, annotations, limits, exec);
assertEquals(expected, action.toString());
}
@Test
public void testWhiskActionMetaDataWithPackageToString() {
String expected = pkg + "/" + name;
WhiskActionMetaData actionWithPackage = new WhiskActionMetaData(name, namespace + "/" + pkg, version, updated, publish, annotations, limits, exec);
assertEquals(expected, actionWithPackage.toString());
}
@Test
public void testWhiskActionMetaDataToCombBoxEntityEntry() {
WhiskActionMetaData actionMetaData = new WhiskActionMetaData(name, namespace, version, updated, publish, annotations, limits, exec);
ComboBoxEntityEntry expectedEntry = new ComboBoxEntityEntry(actionMetaData.toString(), ComboBoxEntityType.ACTION);
assertEquals(expectedEntry, actionMetaData.toCombBoxEntityEntry());
}
}