From 68084b6cfb4b7a448b4a3497f004c1998ddec727 Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Tue, 10 Feb 2015 18:11:09 +0300 Subject: [PATCH] IDEA-133425 Add simple test for JSON injection in Java string --- json/tests/json-tests.iml | 4 +- .../com/intellij/json/JsonInjectionTest.java | 43 +++++++++++++++++++ .../JsonFragmentInjectedInJavaString.java | 4 ++ 3 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 json/tests/test/com/intellij/json/JsonInjectionTest.java create mode 100644 json/tests/testData/injected/JsonFragmentInjectedInJavaString.java diff --git a/json/tests/json-tests.iml b/json/tests/json-tests.iml index 0a54b519abcf..f411c5bd703b 100644 --- a/json/tests/json-tests.iml +++ b/json/tests/json-tests.iml @@ -12,6 +12,6 @@ + - - + \ No newline at end of file diff --git a/json/tests/test/com/intellij/json/JsonInjectionTest.java b/json/tests/test/com/intellij/json/JsonInjectionTest.java new file mode 100644 index 000000000000..61e75fa46867 --- /dev/null +++ b/json/tests/test/com/intellij/json/JsonInjectionTest.java @@ -0,0 +1,43 @@ +package com.intellij.json; + +import com.intellij.codeInsight.daemon.impl.HighlightInfo; +import com.intellij.codeInsight.injected.InjectedLanguageTestCase; +import com.intellij.codeInspection.LocalInspectionTool; +import com.intellij.json.codeinsight.JsonStandardComplianceInspection; +import com.intellij.lang.annotation.HighlightSeverity; +import com.intellij.openapi.util.Condition; +import com.intellij.testFramework.PlatformTestUtil; +import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.NotNull; + +import java.io.File; +import java.util.List; + +/** + * @author Mikhail Golubev + */ +public class JsonInjectionTest extends InjectedLanguageTestCase { + // PY-133425 + public void testJsonFragmentInjectedInJavaString() { + configureByFile("/injected/" + getTestName(false) + ".java"); + final List highlightInfos = doHighlighting(HighlightSeverity.WARNING); + assertNull(ContainerUtil.find(highlightInfos, new Condition() { + @Override + public boolean value(HighlightInfo info) { + return info.getDescription().equals(JsonBundle.message("msg.compliance.problem.illegal.property.key")); + } + })); + } + + @NotNull + @Override + protected LocalInspectionTool[] configureLocalInspectionTools() { + return new LocalInspectionTool[]{new JsonStandardComplianceInspection()}; + } + + @NotNull + @Override + protected String getTestDataPath() { + return PlatformTestUtil.getCommunityPath().replace(File.separatorChar, '/') + "/json/tests/testData"; + } +} diff --git a/json/tests/testData/injected/JsonFragmentInjectedInJavaString.java b/json/tests/testData/injected/JsonFragmentInjectedInJavaString.java new file mode 100644 index 000000000000..5cb0a396b0fb --- /dev/null +++ b/json/tests/testData/injected/JsonFragmentInjectedInJavaString.java @@ -0,0 +1,4 @@ +class JsonFragmentInjectedInJavaString { + // language=JSON + String json = "{\"foo\": null}"; +} \ No newline at end of file