diff --git a/vscode-extensions/vscode-manifest-yaml/src/test/java/org/springframework/ide/vscode/manifest/yaml/BasicCfClientHarness.java b/vscode-extensions/vscode-manifest-yaml/src/test/java/org/springframework/ide/vscode/manifest/yaml/BasicCfClientHarness.java
deleted file mode 100644
index 8eb1301cc..000000000
--- a/vscode-extensions/vscode-manifest-yaml/src/test/java/org/springframework/ide/vscode/manifest/yaml/BasicCfClientHarness.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Pivotal, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Pivotal, Inc. - initial API and implementation
- *******************************************************************************/
-package org.springframework.ide.vscode.manifest.yaml;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ExecutionException;
-
-import org.springframework.ide.vscode.commons.cloudfoundry.client.CFBuildpack;
-import org.springframework.ide.vscode.commons.cloudfoundry.client.CFEntities;
-import org.springframework.ide.vscode.commons.cloudfoundry.client.CFServiceInstance;
-import org.springframework.ide.vscode.commons.cloudfoundry.client.ClientRequests;
-import org.springframework.ide.vscode.commons.cloudfoundry.client.ClientTimeouts;
-import org.springframework.ide.vscode.commons.cloudfoundry.client.CloudFoundryClientFactory;
-import org.springframework.ide.vscode.commons.cloudfoundry.client.cftarget.CFClientParams;
-import org.springframework.ide.vscode.commons.cloudfoundry.client.cftarget.CFCredentials;
-import org.springframework.ide.vscode.commons.cloudfoundry.client.cftarget.ClientParamsProvider;
-import org.springframework.ide.vscode.commons.cloudfoundry.client.cftarget.NoTargetsException;
-
-import com.google.common.collect.ImmutableList;
-
-/**
- * An alternative to using mockito for mocking the CF client, as the mockito
- * version of the CF client seems to fail when run on OpenJDK (which is used for
- * the sts4 concourse ci build).
- *
- * This also allows additional testing of the general manifest-yaml vscode
- * framework, as the framework should be able to take any client factory,
- * including the basic one below, and still produce correct results for content
- * assist as well as reconcile
- *
- */
-public class BasicCfClientHarness {
-
- private BasicCFClientFactory clientFactory = new BasicCFClientFactory();
-
- private ClientParamsProvider paramsProvider = new BasicClientParamsProvider(ImmutableList.of(DEFAULT_PARAMS));
-
- public static CFClientParams DEFAULT_PARAMS = new CFClientParams("test.io", "testuser",
- CFCredentials.fromRefreshToken("refreshtoken"), false);
-
- public BasicCFClientFactory getBasicClientFactory() {
- return clientFactory;
- }
-
- public ClientParamsProvider getParamsProvider() {
- return paramsProvider;
- }
-
- public void addServiceInstances(String... serviceInstances) {
- List services = null;
- if (serviceInstances != null) {
- services = new ArrayList();
- for (String name : serviceInstances) {
- services.add(createServiceInstance(name));
- }
- }
- getBasicClientFactory().getExistingClientInHarness().setServices(services);
- }
-
- public void addBuildpacks(String... buildpacks) {
-
- // Allow testing of null condition when vscode asks for buildpacks from
- // the client and
- // client returns null instead of empty list
- List asList = null;
- if (buildpacks != null) {
- asList = new ArrayList();
- for (String name : buildpacks) {
- asList.add(CFEntities.createBuildpack(name));
- }
- }
-
- getBasicClientFactory().getExistingClientInHarness().setBuildPacks(asList);
- }
-
- protected CFServiceInstance createServiceInstance(String name) {
- return CFEntities.createServiceInstance(name, null, null, null, null, null);
- }
-
- ////////////////////////////////////////////////
- // "Mocked" CF client types
-
- public static final class BasicCFClientFactory implements CloudFoundryClientFactory {
-
- /*
- * Create the client "ahead of time" so that it can be configured before
- * the language server is tested
- */
- private BasicClientRequests preexistingClient = new BasicClientRequests(DEFAULT_PARAMS, new ClientTimeouts());
-
- @Override
- public ClientRequests getClient(CFClientParams params, ClientTimeouts timeouts) throws Exception {
- return this.preexistingClient;
- }
-
- /**
- * Convenient non-framework method to fetch the existing client so that
- * values can be set to simulate values from CF.
- *
- * @return
- */
- public BasicClientRequests getExistingClientInHarness() {
- return this.preexistingClient;
- }
- }
-
- static class BasicClientParamsProvider implements ClientParamsProvider {
-
- private List params;
-
- public BasicClientParamsProvider(List defaultParams) {
- this.params = defaultParams;
- }
-
- public void setParams(List params) {
- this.params = params;
- }
-
- @Override
- public List getParams() throws NoTargetsException, ExecutionException {
- return this.params;
- }
-
- }
-
- static class BasicClientRequests implements ClientRequests {
-
- private List buildpacks;
- private List serviceInstances;
- private CFClientParams params;
- private ClientTimeouts timeouts;
-
- public BasicClientRequests(CFClientParams params, ClientTimeouts timeouts) {
- this.params = params;
- this.timeouts = timeouts;
- }
-
- @Override
- public List getBuildpacks() throws Exception {
- return this.buildpacks;
- }
-
- @Override
- public List getServices() throws Exception {
- return this.serviceInstances;
- }
-
- public void setBuildPacks(List buildpacks) {
- this.buildpacks = buildpacks;
- }
-
- public void setServices(List serviceInstances) {
- this.serviceInstances = serviceInstances;
- }
- }
-
-}
diff --git a/vscode-extensions/vscode-manifest-yaml/src/test/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlEditorCFBasicTest.java b/vscode-extensions/vscode-manifest-yaml/src/test/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlEditorCFBasicTest.java
deleted file mode 100644
index e913530fd..000000000
--- a/vscode-extensions/vscode-manifest-yaml/src/test/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlEditorCFBasicTest.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2017 Pivotal, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Pivotal, Inc. - initial API and implementation
- *******************************************************************************/
-package org.springframework.ide.vscode.manifest.yaml;
-
-import static org.junit.Assert.assertEquals;
-
-import org.eclipse.lsp4j.Diagnostic;
-import org.eclipse.lsp4j.DiagnosticSeverity;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.springframework.ide.vscode.languageserver.testharness.Editor;
-import org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness;
-
-/**
- * Basic CF tests for services and buildpacks, using a basic CF client that
- * requires no actual CF connection.
- *
- *
- * This is an alternative to using mockito, and also tests that the
- * vscode-manifest framework can take any clients, including the basic one used
- * in this test, and still function as expected for CF content assist and
- * reconcile
- *
- */
-public class ManifestYamlEditorCFBasicTest {
- LanguageServerHarness harness;
- BasicCfClientHarness basicCfClientHarness = new BasicCfClientHarness();
-
- @Before
- public void setup() throws Exception {
- harness = new LanguageServerHarness(() -> new ManifestYamlLanguageServer(
- basicCfClientHarness.getBasicClientFactory(), basicCfClientHarness.getParamsProvider()));
- harness.intialize(null);
- }
-
- @Test
- public void contentAssistBuildpack() throws Exception {
- basicCfClientHarness.addBuildpacks("java_buildpack");
- assertContainsCompletions("buildpack: <*>", "buildpack: java_buildpack<*>");
- }
-
- @Test
- public void contentAssistDoesNotContainBuildpack() throws Exception {
- basicCfClientHarness.addBuildpacks("java_buildpack");
- assertDoesNotContainCompletions("buildpack: <*>", "buildpack: wrong_buildpack<*>");
- }
-
- @Test
- public void contentAssistServices() throws Exception {
- basicCfClientHarness.addServiceInstances("mysql");
- assertContainsCompletions("services:\n" + " - <*>", "mysql");
- }
-
- @Test
- public void contentAssistDoesNotContainServices() throws Exception {
- basicCfClientHarness.addServiceInstances("mysql");
- assertDoesNotContainCompletions("services:\n" + " - <*>", "wrongsql");
- }
-
- @Test
- public void contentAssistDoesNotContainServicesEmptyServices() throws Exception {
- basicCfClientHarness.addServiceInstances(/*no services*/);
- assertDoesNotContainCompletions("services:\n" + " - <*>", "mysql");
- }
-
- @Test
- public void reconcileCFService() throws Exception {
- basicCfClientHarness.addServiceInstances("myservice");
- Editor editor = harness.newEditor("applications:\n" //
- + "- name: foo\n" //
- + " services:\n" //
- + " - myservice\n" //
- );
- // Should have no problems
- editor.assertProblems(/* none */);
- }
-
- @Test
- public void reconcileShowsWarningOnUnknownService() throws Exception {
- basicCfClientHarness.addServiceInstances("myservice");
- Editor editor = harness.newEditor("applications:\n" //
- + "- name: foo\n" //
- + " services:\n" //
- + " - bad-service\n" //
-
- );
- editor.assertProblems("bad-service|There is no service instance called");
-
- Diagnostic problem = editor.assertProblem("bad-service");
- assertEquals(DiagnosticSeverity.Warning, problem.getSeverity());
- }
-
- @Test
- public void reconcileShowsWarningOnEmptyServices() throws Exception {
- // Add empty list of services
- basicCfClientHarness.addServiceInstances();
- Editor editor = harness.newEditor("applications:\n" //
- + "- name: foo\n" //
- + " services:\n" //
- + " - bad-service\n");//
- editor.assertProblems("bad-service|There is no service instance called");
-
- Diagnostic problem = editor.assertProblem("bad-service");
- assertEquals(DiagnosticSeverity.Warning, problem.getSeverity());
- }
-
- //////////////////////////////////////////////////////////////////////////////
-
- private void assertContainsCompletions(String textBefore, String... textAfter) throws Exception {
- Editor editor = harness.newEditor(textBefore);
- editor.assertContainsCompletions(textAfter);
- }
-
- private void assertDoesNotContainCompletions(String textBefore, String... notToBeFound) throws Exception {
- Editor editor = harness.newEditor(textBefore);
- editor.assertDoesNotContainCompletions(notToBeFound);
- }
-
-}
diff --git a/vscode-extensions/vscode-manifest-yaml/src/test/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlEditorTest.java b/vscode-extensions/vscode-manifest-yaml/src/test/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlEditorTest.java
index c645971b5..4444cf279 100644
--- a/vscode-extensions/vscode-manifest-yaml/src/test/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlEditorTest.java
+++ b/vscode-extensions/vscode-manifest-yaml/src/test/java/org/springframework/ide/vscode/manifest/yaml/ManifestYamlEditorTest.java
@@ -12,30 +12,25 @@ package org.springframework.ide.vscode.manifest.yaml;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.*;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.when;
import java.io.IOException;
-import java.util.List;
import org.eclipse.lsp4j.CompletionItem;
import org.eclipse.lsp4j.Diagnostic;
import org.eclipse.lsp4j.DiagnosticSeverity;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.mockito.Mockito;
+import org.springframework.ide.vscode.commons.cloudfoundry.client.CFBuildpack;
import org.springframework.ide.vscode.commons.cloudfoundry.client.CFServiceInstance;
import org.springframework.ide.vscode.commons.cloudfoundry.client.ClientRequests;
-import org.springframework.ide.vscode.commons.cloudfoundry.client.cftarget.CFClientParams;
-import org.springframework.ide.vscode.commons.cloudfoundry.client.cftarget.CFCredentials;
-import org.springframework.ide.vscode.commons.cloudfoundry.client.cftarget.ClientParamsProvider;
import org.springframework.ide.vscode.commons.cloudfoundry.client.cftarget.NoTargetsException;
-import org.springframework.ide.vscode.commons.util.CollectionUtil;
import org.springframework.ide.vscode.languageserver.testharness.Editor;
import org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness;
-import static org.springframework.ide.vscode.languageserver.testharness.TestAsserts.*;
-
import com.google.common.collect.ImmutableList;
public class ManifestYamlEditorTest {
@@ -896,6 +891,51 @@ public class ManifestYamlEditorTest {
//query string should match the 'filter text' otherwise vscode will filter the item and it will be gone!
assertEquals("something", completion.getFilterText());
}
+
+ @Test
+ public void serviceContentAssistEmptyServices() throws Exception {
+ ClientRequests cfClient = cloudfoundry.client;
+ when(cfClient.getServices()).thenReturn(ImmutableList.of());
+ assertDoesNotContainCompletions("services:\n" + " - <*>", "mysql");
+ }
+
+ @Test
+ public void serviceContentAssistDoesNotContainServices() throws Exception {
+ ClientRequests cfClient = cloudfoundry.client;
+ CFServiceInstance service = Mockito.mock(CFServiceInstance.class);
+ when(service.getName()).thenReturn("mysql");
+ when(cfClient.getServices()).thenReturn(ImmutableList.of(service));
+ assertDoesNotContainCompletions("services:\n" + " - <*>", "wrongsql");
+ }
+
+ @Test
+ public void serviceContentAssist() throws Exception {
+ ClientRequests cfClient = cloudfoundry.client;
+ CFServiceInstance service = Mockito.mock(CFServiceInstance.class);
+ when(service.getName()).thenReturn("mysql");
+ when(cfClient.getServices()).thenReturn(ImmutableList.of(service));
+
+ assertContainsCompletions("services:\n" + " - <*>", "mysql");
+ }
+
+ @Test
+ public void buildpackContentAssist() throws Exception {
+ ClientRequests cfClient = cloudfoundry.client;
+ CFBuildpack buildPack = Mockito.mock(CFBuildpack.class);
+ when(buildPack.getName()).thenReturn("java_buildpack");
+ when(cfClient.getBuildpacks()).thenReturn(ImmutableList.of(buildPack));
+
+ assertContainsCompletions("buildpack: <*>", "buildpack: java_buildpack<*>");
+ }
+
+ @Test
+ public void buildpackContentAssistDoesNotContainCompletion() throws Exception {
+ ClientRequests cfClient = cloudfoundry.client;
+ CFBuildpack buildPack = Mockito.mock(CFBuildpack.class);
+ when(buildPack.getName()).thenReturn("java_buildpack");
+ when(cfClient.getBuildpacks()).thenReturn(ImmutableList.of(buildPack));
+ assertDoesNotContainCompletions("buildpack: <*>", "buildpack: wrong_buildpack<*>");
+ }
//////////////////////////////////////////////////////////////////////////////
@@ -903,5 +943,15 @@ public class ManifestYamlEditorTest {
Editor editor = harness.newEditor(textBefore);
editor.assertCompletions(textAfter);
}
+
+ private void assertDoesNotContainCompletions(String textBefore, String... notToBeFound) throws Exception {
+ Editor editor = harness.newEditor(textBefore);
+ editor.assertDoesNotContainCompletions(notToBeFound);
+ }
+
+ private void assertContainsCompletions(String textBefore, String... textAfter) throws Exception {
+ Editor editor = harness.newEditor(textBefore);
+ editor.assertContainsCompletions(textAfter);
+ }
}