Add endpointType in tests
This commit is contained in:
@@ -63,6 +63,10 @@ export function decodeBqrsToMethods(
|
||||
classification = CallClassification.Unknown;
|
||||
}
|
||||
|
||||
if ((type as string) === "") {
|
||||
type = "none";
|
||||
}
|
||||
|
||||
if (methodName === "") {
|
||||
endpointType = EndpointType.Class;
|
||||
}
|
||||
|
||||
@@ -38,7 +38,6 @@ export const ruby: ModelsAsDataLanguage = {
|
||||
);
|
||||
return {
|
||||
type: "source",
|
||||
input: "",
|
||||
output,
|
||||
kind: row[2] as string,
|
||||
provenance: "manual",
|
||||
@@ -72,7 +71,6 @@ export const ruby: ModelsAsDataLanguage = {
|
||||
return {
|
||||
type: "sink",
|
||||
input,
|
||||
output: "",
|
||||
kind: row[2] as string,
|
||||
provenance: "manual",
|
||||
signature: rubyMethodSignature(typeName, methodName),
|
||||
@@ -131,8 +129,6 @@ export const ruby: ModelsAsDataLanguage = {
|
||||
const methodName = parseRubyMethodFromPath(row[1] as string);
|
||||
return {
|
||||
type: "neutral",
|
||||
input: "",
|
||||
output: "",
|
||||
kind: row[2] as string,
|
||||
provenance: "manual",
|
||||
signature: rubyMethodSignature(typeName, methodName),
|
||||
|
||||
@@ -38,7 +38,6 @@ export const staticLanguage: ModelsAsDataLanguage = {
|
||||
],
|
||||
readModeledMethod: (row) => ({
|
||||
type: "source",
|
||||
input: "",
|
||||
output: row[6] as string,
|
||||
kind: row[7] as string,
|
||||
provenance: row[8] as Provenance,
|
||||
@@ -71,7 +70,6 @@ export const staticLanguage: ModelsAsDataLanguage = {
|
||||
readModeledMethod: (row) => ({
|
||||
type: "sink",
|
||||
input: row[6] as string,
|
||||
output: "",
|
||||
kind: row[7] as string,
|
||||
provenance: row[8] as Provenance,
|
||||
signature: readRowToMethod(row),
|
||||
@@ -131,8 +129,6 @@ export const staticLanguage: ModelsAsDataLanguage = {
|
||||
],
|
||||
readModeledMethod: (row) => ({
|
||||
type: "neutral",
|
||||
input: "",
|
||||
output: "",
|
||||
kind: row[4] as string,
|
||||
provenance: row[5] as Provenance,
|
||||
signature: `${row[0]}.${row[1]}#${row[2]}${row[3]}`,
|
||||
|
||||
@@ -167,13 +167,14 @@ describe(MultipleModeledMethodsPanel.name, () => {
|
||||
...modeledMethods,
|
||||
{
|
||||
signature: method.signature,
|
||||
endpointType: method.endpointType,
|
||||
packageName: method.packageName,
|
||||
typeName: method.typeName,
|
||||
methodName: method.methodName,
|
||||
methodParameters: method.methodParameters,
|
||||
type: "none",
|
||||
},
|
||||
]);
|
||||
] satisfies ModeledMethod[]);
|
||||
});
|
||||
|
||||
it("changes selection to the newly added modeling", async () => {
|
||||
@@ -368,6 +369,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
|
||||
expect(onChange).toHaveBeenCalledWith(method.signature, [
|
||||
{
|
||||
signature: method.signature,
|
||||
endpointType: method.endpointType,
|
||||
packageName: method.packageName,
|
||||
typeName: method.typeName,
|
||||
methodName: method.methodName,
|
||||
@@ -378,7 +380,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
|
||||
provenance: "manual",
|
||||
},
|
||||
...modeledMethods.slice(1),
|
||||
]);
|
||||
] satisfies ModeledMethod[]);
|
||||
});
|
||||
|
||||
it("can update the second modeling", async () => {
|
||||
@@ -403,6 +405,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
|
||||
...modeledMethods.slice(0, 1),
|
||||
{
|
||||
signature: method.signature,
|
||||
endpointType: method.endpointType,
|
||||
packageName: method.packageName,
|
||||
typeName: method.typeName,
|
||||
methodName: method.methodName,
|
||||
@@ -412,7 +415,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
|
||||
kind: "value",
|
||||
provenance: "manual",
|
||||
},
|
||||
]);
|
||||
] satisfies ModeledMethod[]);
|
||||
});
|
||||
|
||||
it("can delete modeling", async () => {
|
||||
@@ -449,13 +452,14 @@ describe(MultipleModeledMethodsPanel.name, () => {
|
||||
...modeledMethods,
|
||||
{
|
||||
signature: method.signature,
|
||||
endpointType: method.endpointType,
|
||||
packageName: method.packageName,
|
||||
typeName: method.typeName,
|
||||
methodName: method.methodName,
|
||||
methodParameters: method.methodParameters,
|
||||
type: "none",
|
||||
},
|
||||
]);
|
||||
] satisfies ModeledMethod[]);
|
||||
});
|
||||
|
||||
it("shows an error when adding a neutral modeling", async () => {
|
||||
@@ -826,13 +830,14 @@ describe(MultipleModeledMethodsPanel.name, () => {
|
||||
...modeledMethods.slice(0, 1),
|
||||
{
|
||||
signature: method.signature,
|
||||
endpointType: method.endpointType,
|
||||
packageName: method.packageName,
|
||||
typeName: method.typeName,
|
||||
methodName: method.methodName,
|
||||
methodParameters: method.methodParameters,
|
||||
type: "none",
|
||||
},
|
||||
]);
|
||||
] satisfies ModeledMethod[]);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -85,12 +85,13 @@ describe(MethodRow.name, () => {
|
||||
kind: "value",
|
||||
provenance: "manual",
|
||||
signature: method.signature,
|
||||
endpointType: method.endpointType,
|
||||
packageName: method.packageName,
|
||||
typeName: method.typeName,
|
||||
methodName: method.methodName,
|
||||
methodParameters: method.methodParameters,
|
||||
},
|
||||
]);
|
||||
] satisfies ModeledMethod[]);
|
||||
});
|
||||
|
||||
it("can change the kind", async () => {
|
||||
@@ -111,7 +112,7 @@ describe(MethodRow.name, () => {
|
||||
...modeledMethod,
|
||||
kind: "value",
|
||||
},
|
||||
]);
|
||||
] satisfies ModeledMethod[]);
|
||||
});
|
||||
|
||||
it("changes the provenance when the kind is changed", async () => {
|
||||
@@ -137,7 +138,7 @@ describe(MethodRow.name, () => {
|
||||
kind: "value",
|
||||
provenance: "df-manual",
|
||||
},
|
||||
]);
|
||||
] satisfies ModeledMethod[]);
|
||||
});
|
||||
|
||||
it("has the correct input options", () => {
|
||||
@@ -232,7 +233,7 @@ describe(MethodRow.name, () => {
|
||||
{ ...modeledMethod, type: "source" },
|
||||
{ ...modeledMethod, type: "sink", kind: "sql-injection" },
|
||||
{ ...modeledMethod, type: "summary" },
|
||||
]);
|
||||
] satisfies ModeledMethod[]);
|
||||
});
|
||||
|
||||
it("renders an unmodelable method", () => {
|
||||
@@ -333,12 +334,13 @@ describe(MethodRow.name, () => {
|
||||
{
|
||||
type: "none",
|
||||
signature: method.signature,
|
||||
endpointType: method.endpointType,
|
||||
packageName: method.packageName,
|
||||
typeName: method.typeName,
|
||||
methodName: method.methodName,
|
||||
methodParameters: method.methodParameters,
|
||||
},
|
||||
]);
|
||||
] satisfies ModeledMethod[]);
|
||||
});
|
||||
|
||||
it("cannot delete the first modeled method (but delete second instead)", async () => {
|
||||
@@ -359,7 +361,7 @@ describe(MethodRow.name, () => {
|
||||
{ ...modeledMethod, type: "source" },
|
||||
{ ...modeledMethod, type: "none" },
|
||||
{ ...modeledMethod, type: "summary" },
|
||||
]);
|
||||
] satisfies ModeledMethod[]);
|
||||
});
|
||||
|
||||
it("can delete a modeled method in the middle", async () => {
|
||||
@@ -380,7 +382,7 @@ describe(MethodRow.name, () => {
|
||||
{ ...modeledMethod, type: "source" },
|
||||
{ ...modeledMethod, type: "sink" },
|
||||
{ ...modeledMethod, type: "summary" },
|
||||
]);
|
||||
] satisfies ModeledMethod[]);
|
||||
});
|
||||
|
||||
it("does not display validation errors when everything is valid", () => {
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
import { decodeBqrsToMethods } from "../../../src/model-editor/bqrs";
|
||||
import type { DecodedBqrsChunk } from "../../../src/common/bqrs-cli-types";
|
||||
import { CallClassification } from "../../../src/model-editor/method";
|
||||
import type { Method } from "../../../src/model-editor/method";
|
||||
import {
|
||||
CallClassification,
|
||||
EndpointType,
|
||||
} from "../../../src/model-editor/method";
|
||||
import { Mode } from "../../../src/model-editor/shared/mode";
|
||||
import { QueryLanguage } from "../../../src/common/query-language";
|
||||
|
||||
@@ -245,6 +249,7 @@ describe("decodeBqrsToMethods", () => {
|
||||
library: "rt",
|
||||
libraryVersion: undefined,
|
||||
signature: "java.io.PrintStream#println(String)",
|
||||
endpointType: EndpointType.Method,
|
||||
packageName: "java.io",
|
||||
typeName: "PrintStream",
|
||||
methodName: "println",
|
||||
@@ -271,6 +276,7 @@ describe("decodeBqrsToMethods", () => {
|
||||
libraryVersion: "3.0.2",
|
||||
signature:
|
||||
"org.springframework.boot.SpringApplication#run(Class,String[])",
|
||||
endpointType: EndpointType.Method,
|
||||
packageName: "org.springframework.boot",
|
||||
typeName: "SpringApplication",
|
||||
methodName: "run",
|
||||
@@ -296,6 +302,7 @@ describe("decodeBqrsToMethods", () => {
|
||||
library: "sql2o",
|
||||
libraryVersion: "1.6.0",
|
||||
signature: "org.sql2o.Connection#createQuery(String)",
|
||||
endpointType: EndpointType.Method,
|
||||
packageName: "org.sql2o",
|
||||
typeName: "Connection",
|
||||
methodName: "createQuery",
|
||||
@@ -333,6 +340,7 @@ describe("decodeBqrsToMethods", () => {
|
||||
library: "sql2o",
|
||||
libraryVersion: "1.6.0",
|
||||
signature: "org.sql2o.Query#executeScalar(Class)",
|
||||
endpointType: EndpointType.Method,
|
||||
packageName: "org.sql2o",
|
||||
typeName: "Query",
|
||||
methodName: "executeScalar",
|
||||
@@ -370,6 +378,7 @@ describe("decodeBqrsToMethods", () => {
|
||||
library: "sql2o",
|
||||
libraryVersion: "1.6.0",
|
||||
signature: "org.sql2o.Sql2o#open()",
|
||||
endpointType: EndpointType.Method,
|
||||
packageName: "org.sql2o",
|
||||
typeName: "Sql2o",
|
||||
methodName: "open",
|
||||
@@ -407,6 +416,7 @@ describe("decodeBqrsToMethods", () => {
|
||||
library: "sql2o",
|
||||
libraryVersion: "1.6.0",
|
||||
signature: "org.sql2o.Sql2o#Sql2o(String,String,String)",
|
||||
endpointType: EndpointType.Method,
|
||||
packageName: "org.sql2o",
|
||||
typeName: "Sql2o",
|
||||
methodName: "Sql2o",
|
||||
@@ -432,6 +442,7 @@ describe("decodeBqrsToMethods", () => {
|
||||
library: "sql2o",
|
||||
libraryVersion: "1.6.0",
|
||||
signature: "org.sql2o.Sql2o#Sql2o(String)",
|
||||
endpointType: EndpointType.Method,
|
||||
packageName: "org.sql2o",
|
||||
typeName: "Sql2o",
|
||||
methodName: "Sql2o",
|
||||
@@ -453,7 +464,7 @@ describe("decodeBqrsToMethods", () => {
|
||||
},
|
||||
],
|
||||
},
|
||||
]);
|
||||
] satisfies Method[]);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -519,12 +530,13 @@ describe("decodeBqrsToMethods", () => {
|
||||
library: "",
|
||||
libraryVersion: undefined,
|
||||
signature: "org.example.HelloController#connect(String)",
|
||||
endpointType: EndpointType.Method,
|
||||
packageName: "org.example",
|
||||
typeName: "HelloController",
|
||||
methodName: "connect",
|
||||
methodParameters: "(String)",
|
||||
supported: false,
|
||||
supportedType: "",
|
||||
supportedType: "none",
|
||||
usages: [
|
||||
{
|
||||
label: "connect",
|
||||
@@ -544,6 +556,7 @@ describe("decodeBqrsToMethods", () => {
|
||||
library: "",
|
||||
libraryVersion: undefined,
|
||||
signature: "org.example.HelloController#index(String)",
|
||||
endpointType: EndpointType.Method,
|
||||
packageName: "org.example",
|
||||
typeName: "HelloController",
|
||||
methodName: "index",
|
||||
@@ -565,7 +578,7 @@ describe("decodeBqrsToMethods", () => {
|
||||
},
|
||||
],
|
||||
},
|
||||
]);
|
||||
] satisfies Method[]);
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -619,6 +632,7 @@ describe("decodeBqrsToMethods", () => {
|
||||
libraryVersion: "4.0.0.0",
|
||||
signature:
|
||||
"System.Reflection.RuntimeReflectionExtensions#GetMethodInfo(System.Delegate)",
|
||||
endpointType: EndpointType.Method,
|
||||
packageName: "System.Reflection",
|
||||
typeName: "RuntimeReflectionExtensions",
|
||||
methodName: "GetMethodInfo",
|
||||
@@ -640,7 +654,7 @@ describe("decodeBqrsToMethods", () => {
|
||||
},
|
||||
],
|
||||
},
|
||||
]);
|
||||
] satisfies Method[]);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -687,12 +701,13 @@ describe("decodeBqrsToMethods", () => {
|
||||
library: "Times",
|
||||
libraryVersion: undefined,
|
||||
signature: "Moq.Times#Validate(System.Int32)",
|
||||
endpointType: EndpointType.Method,
|
||||
packageName: "Moq",
|
||||
typeName: "Times",
|
||||
methodName: "Validate",
|
||||
methodParameters: "(System.Int32)",
|
||||
supported: false,
|
||||
supportedType: "",
|
||||
supportedType: "none",
|
||||
usages: [
|
||||
{
|
||||
label: "Validate",
|
||||
@@ -708,7 +723,7 @@ describe("decodeBqrsToMethods", () => {
|
||||
},
|
||||
],
|
||||
},
|
||||
]);
|
||||
] satisfies Method[]);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -2,6 +2,8 @@ import type { DecodedBqrs } from "../../../../../src/common/bqrs-cli-types";
|
||||
import { parseGenerateModelResults } from "../../../../../src/model-editor/languages/ruby/generate";
|
||||
import { ruby } from "../../../../../src/model-editor/languages/ruby";
|
||||
import { createMockLogger } from "../../../../__mocks__/loggerMock";
|
||||
import type { ModeledMethod } from "../../../../../src/model-editor/modeled-method";
|
||||
import { EndpointType } from "../../../../../src/model-editor/method";
|
||||
|
||||
describe("parseGenerateModelResults", () => {
|
||||
it("should return the results", async () => {
|
||||
@@ -77,6 +79,7 @@ describe("parseGenerateModelResults", () => {
|
||||
);
|
||||
expect(result).toEqual([
|
||||
{
|
||||
endpointType: EndpointType.Method,
|
||||
methodName: "types",
|
||||
methodParameters: "",
|
||||
packageName: "",
|
||||
@@ -87,6 +90,7 @@ describe("parseGenerateModelResults", () => {
|
||||
typeName: "SQLite3::ResultSet",
|
||||
},
|
||||
{
|
||||
endpointType: EndpointType.Method,
|
||||
methodName: "columns",
|
||||
methodParameters: "",
|
||||
packageName: "",
|
||||
@@ -97,6 +101,7 @@ describe("parseGenerateModelResults", () => {
|
||||
typeName: "SQLite3::ResultSet",
|
||||
},
|
||||
{
|
||||
endpointType: EndpointType.Method,
|
||||
methodName: "types",
|
||||
methodParameters: "",
|
||||
packageName: "",
|
||||
@@ -107,6 +112,7 @@ describe("parseGenerateModelResults", () => {
|
||||
typeName: "SQLite3::Statement",
|
||||
},
|
||||
{
|
||||
endpointType: EndpointType.Method,
|
||||
methodName: "columns",
|
||||
methodParameters: "",
|
||||
packageName: "",
|
||||
@@ -117,6 +123,7 @@ describe("parseGenerateModelResults", () => {
|
||||
typeName: "SQLite3::Statement",
|
||||
},
|
||||
{
|
||||
endpointType: EndpointType.Method,
|
||||
input: "Argument[self]",
|
||||
kind: "value",
|
||||
methodName: "create_function",
|
||||
@@ -129,6 +136,7 @@ describe("parseGenerateModelResults", () => {
|
||||
typeName: "SQLite3::Database",
|
||||
},
|
||||
{
|
||||
endpointType: EndpointType.Method,
|
||||
input: "Argument[1]",
|
||||
kind: "value",
|
||||
methodName: "new",
|
||||
@@ -140,6 +148,6 @@ describe("parseGenerateModelResults", () => {
|
||||
type: "summary",
|
||||
typeName: "SQLite3::Value!",
|
||||
},
|
||||
]);
|
||||
] satisfies ModeledMethod[]);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -2,6 +2,9 @@ import type { DecodedBqrsChunk } from "../../../../../src/common/bqrs-cli-types"
|
||||
import { ruby } from "../../../../../src/model-editor/languages/ruby";
|
||||
import { createMockLogger } from "../../../../__mocks__/loggerMock";
|
||||
import { parseAccessPathSuggestionsResults } from "../../../../../src/model-editor/languages/ruby/suggestions";
|
||||
import type { AccessPathSuggestionRow } from "../../../../../src/model-editor/suggestions";
|
||||
import { AccessPathSuggestionDefinitionType } from "../../../../../src/model-editor/suggestions";
|
||||
import { EndpointType } from "../../../../../src/model-editor/method";
|
||||
|
||||
describe("parseAccessPathSuggestionsResults", () => {
|
||||
it("should parse the results", async () => {
|
||||
@@ -50,6 +53,7 @@ describe("parseAccessPathSuggestionsResults", () => {
|
||||
expect(result).toEqual([
|
||||
{
|
||||
method: {
|
||||
endpointType: EndpointType.Method,
|
||||
packageName: "",
|
||||
typeName: "Correctness",
|
||||
methodName: "assert!",
|
||||
@@ -58,9 +62,9 @@ describe("parseAccessPathSuggestionsResults", () => {
|
||||
},
|
||||
value: "Argument[self]",
|
||||
details: "self in assert!",
|
||||
definitionType: "parameter",
|
||||
definitionType: AccessPathSuggestionDefinitionType.Parameter,
|
||||
},
|
||||
]);
|
||||
] satisfies AccessPathSuggestionRow[]);
|
||||
});
|
||||
|
||||
it("should not parse an incorrect result format", async () => {
|
||||
|
||||
@@ -1194,17 +1194,17 @@ describe("loadDataExtensionYaml", () => {
|
||||
{
|
||||
input: "Argument[0]",
|
||||
kind: "sql",
|
||||
output: "",
|
||||
type: "sink",
|
||||
provenance: "manual",
|
||||
signature: "org.sql2o.Connection#createQuery(String)",
|
||||
endpointType: EndpointType.Method,
|
||||
packageName: "org.sql2o",
|
||||
typeName: "Connection",
|
||||
methodName: "createQuery",
|
||||
methodParameters: "(String)",
|
||||
},
|
||||
],
|
||||
});
|
||||
} satisfies Record<string, ModeledMethod[]>);
|
||||
});
|
||||
|
||||
it("returns undefined if given a string", () => {
|
||||
|
||||
@@ -11,6 +11,8 @@ import { CancellationTokenSource } from "vscode-jsonrpc";
|
||||
import { QueryOutputDir } from "../../../../src/local-queries/query-output-dir";
|
||||
import { runGenerateQueries } from "../../../../src/model-editor/generate";
|
||||
import { ruby } from "../../../../src/model-editor/languages/ruby";
|
||||
import type { ModeledMethod } from "../../../../src/model-editor/modeled-method";
|
||||
import { EndpointType } from "../../../../src/model-editor/method";
|
||||
|
||||
describe("runGenerateQueries", () => {
|
||||
const modelsAsDataLanguage = ruby;
|
||||
@@ -137,6 +139,7 @@ describe("runGenerateQueries", () => {
|
||||
});
|
||||
expect(onResults).toHaveBeenCalledWith([
|
||||
{
|
||||
endpointType: EndpointType.Method,
|
||||
methodName: "types",
|
||||
methodParameters: "",
|
||||
packageName: "",
|
||||
@@ -147,6 +150,7 @@ describe("runGenerateQueries", () => {
|
||||
typeName: "SQLite3::ResultSet",
|
||||
},
|
||||
{
|
||||
endpointType: EndpointType.Method,
|
||||
methodName: "columns",
|
||||
methodParameters: "",
|
||||
packageName: "",
|
||||
@@ -157,6 +161,7 @@ describe("runGenerateQueries", () => {
|
||||
typeName: "SQLite3::ResultSet",
|
||||
},
|
||||
{
|
||||
endpointType: EndpointType.Method,
|
||||
methodName: "types",
|
||||
methodParameters: "",
|
||||
packageName: "",
|
||||
@@ -167,6 +172,7 @@ describe("runGenerateQueries", () => {
|
||||
typeName: "SQLite3::Statement",
|
||||
},
|
||||
{
|
||||
endpointType: EndpointType.Method,
|
||||
methodName: "columns",
|
||||
methodParameters: "",
|
||||
packageName: "",
|
||||
@@ -177,6 +183,7 @@ describe("runGenerateQueries", () => {
|
||||
typeName: "SQLite3::Statement",
|
||||
},
|
||||
{
|
||||
endpointType: EndpointType.Method,
|
||||
input: "Argument[self]",
|
||||
kind: "value",
|
||||
methodName: "create_function",
|
||||
@@ -189,6 +196,7 @@ describe("runGenerateQueries", () => {
|
||||
typeName: "SQLite3::Database",
|
||||
},
|
||||
{
|
||||
endpointType: EndpointType.Method,
|
||||
input: "Argument[1]",
|
||||
kind: "value",
|
||||
methodName: "new",
|
||||
@@ -200,7 +208,7 @@ describe("runGenerateQueries", () => {
|
||||
type: "summary",
|
||||
typeName: "SQLite3::Value!",
|
||||
},
|
||||
]);
|
||||
] satisfies ModeledMethod[]);
|
||||
|
||||
expect(options.queryRunner.createQueryRun).toHaveBeenCalledTimes(1);
|
||||
expect(options.queryRunner.createQueryRun).toHaveBeenCalledWith(
|
||||
|
||||
Reference in New Issue
Block a user