Add endpointType in tests

This commit is contained in:
Koen Vlaswinkel
2024-02-08 11:02:09 +01:00
parent c9be2ce32c
commit 6fd628b49c
10 changed files with 71 additions and 33 deletions

View File

@@ -63,6 +63,10 @@ export function decodeBqrsToMethods(
classification = CallClassification.Unknown;
}
if ((type as string) === "") {
type = "none";
}
if (methodName === "") {
endpointType = EndpointType.Class;
}

View File

@@ -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),

View File

@@ -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]}`,

View File

@@ -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[]);
});
});

View File

@@ -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", () => {

View File

@@ -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[]);
});
});
});

View File

@@ -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[]);
});
});

View File

@@ -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 () => {

View File

@@ -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", () => {

View File

@@ -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(