mirror of
https://github.com/elicpeter/nyx.git
synced 2026-06-27 20:29:39 +02:00
refactor(dynamic): enhance resolver detection for frameworks, refine SSA receiver validation, and expand test coverage
This commit is contained in:
parent
3027c1afa7
commit
f49211d788
38 changed files with 1198 additions and 137 deletions
16
tests/fixtures/fp_guards/broker_adapter_collisions/expectations.json
vendored
Normal file
16
tests/fixtures/fp_guards/broker_adapter_collisions/expectations.json
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"required_findings": [],
|
||||
"forbidden_findings": [
|
||||
{ "id_prefix": "taint-unsanitised-flow" }
|
||||
],
|
||||
"noise_budget": {
|
||||
"max_total_findings": 0,
|
||||
"max_high_findings": 0
|
||||
},
|
||||
"performance_expectations": {
|
||||
"max_ms_no_index": 1000,
|
||||
"max_ms_index_cold": 1500,
|
||||
"max_ms_index_warm": 500,
|
||||
"ci_mode": "lenient"
|
||||
}
|
||||
}
|
||||
19
tests/fixtures/fp_guards/broker_adapter_collisions/node_non_sqs_send.js
vendored
Normal file
19
tests/fixtures/fp_guards/broker_adapter_collisions/node_non_sqs_send.js
vendored
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
const { SQSClient } = require("@aws-sdk/client-sqs");
|
||||
|
||||
class MetricsPublisher {
|
||||
send(event) {
|
||||
return Promise.resolve({ ok: true, event });
|
||||
}
|
||||
}
|
||||
|
||||
const sqs = new SQSClient({});
|
||||
const metrics = new MetricsPublisher();
|
||||
|
||||
function handler(event) {
|
||||
return metrics.send({
|
||||
type: "delivery_attempt",
|
||||
requestId: event.requestId,
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = { handler, sqs };
|
||||
16
tests/fixtures/fp_guards/broker_adapter_collisions/python_non_broker_handler.py
vendored
Normal file
16
tests/fixtures/fp_guards/broker_adapter_collisions/python_non_broker_handler.py
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
import boto3
|
||||
|
||||
|
||||
sqs = boto3.client("sqs")
|
||||
|
||||
|
||||
class AuditCache:
|
||||
def process_message(self, envelope):
|
||||
return {"stored": True, "id": envelope.get("id")}
|
||||
|
||||
|
||||
cache = AuditCache()
|
||||
|
||||
|
||||
def handler(envelope):
|
||||
return cache.process_message(envelope)
|
||||
13
tests/fixtures/fp_guards/broker_adapter_collisions/python_non_rabbit_process.py
vendored
Normal file
13
tests/fixtures/fp_guards/broker_adapter_collisions/python_non_rabbit_process.py
vendored
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
import pika
|
||||
|
||||
|
||||
class ReportWorker:
|
||||
def process(self, report):
|
||||
return {"status": "queued", "report_id": report.get("id")}
|
||||
|
||||
|
||||
worker = ReportWorker()
|
||||
|
||||
|
||||
def process(report):
|
||||
return worker.process(report)
|
||||
16
tests/fixtures/fp_guards/phase21_adapter_collisions/expectations.json
vendored
Normal file
16
tests/fixtures/fp_guards/phase21_adapter_collisions/expectations.json
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
"required_findings": [],
|
||||
"forbidden_findings": [
|
||||
{ "id_prefix": "taint-unsanitised-flow" }
|
||||
],
|
||||
"noise_budget": {
|
||||
"max_total_findings": 0,
|
||||
"max_high_findings": 0
|
||||
},
|
||||
"performance_expectations": {
|
||||
"max_ms_no_index": 1000,
|
||||
"max_ms_index_cold": 1500,
|
||||
"max_ms_index_warm": 500,
|
||||
"ci_mode": "lenient"
|
||||
}
|
||||
}
|
||||
14
tests/fixtures/fp_guards/phase21_adapter_collisions/go_gqlgen_helper.go
vendored
Normal file
14
tests/fixtures/fp_guards/phase21_adapter_collisions/go_gqlgen_helper.go
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
package graph
|
||||
|
||||
import "context"
|
||||
|
||||
// import "github.com/99designs/gqlgen/graphql"
|
||||
type queryResolver struct{}
|
||||
|
||||
func (r *queryResolver) User(ctx context.Context, id string) (string, error) {
|
||||
return id, nil
|
||||
}
|
||||
|
||||
func NormalizeID(id string) string {
|
||||
return id
|
||||
}
|
||||
15
tests/fixtures/fp_guards/phase21_adapter_collisions/java_quartz_queue_schedule.java
vendored
Normal file
15
tests/fixtures/fp_guards/phase21_adapter_collisions/java_quartz_queue_schedule.java
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
import org.quartz.Job;
|
||||
import org.quartz.JobExecutionContext;
|
||||
|
||||
class TickJob implements Job {
|
||||
public void execute(JobExecutionContext context) {}
|
||||
|
||||
public void enqueue(Object payload) {
|
||||
NotificationQueue queue = new NotificationQueue();
|
||||
queue.scheduleJob(payload);
|
||||
}
|
||||
}
|
||||
|
||||
class NotificationQueue {
|
||||
void scheduleJob(Object payload) {}
|
||||
}
|
||||
11
tests/fixtures/fp_guards/phase21_adapter_collisions/java_spring_middleware_helper.java
vendored
Normal file
11
tests/fixtures/fp_guards/phase21_adapter_collisions/java_spring_middleware_helper.java
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
|
||||
class AuditInterceptor implements HandlerInterceptor {
|
||||
public boolean preHandle(Object request, Object response, Object handler) {
|
||||
return true;
|
||||
}
|
||||
|
||||
public String normalize(String payload) {
|
||||
return payload;
|
||||
}
|
||||
}
|
||||
11
tests/fixtures/fp_guards/phase21_adapter_collisions/js_relay_helper.js
vendored
Normal file
11
tests/fixtures/fp_guards/phase21_adapter_collisions/js_relay_helper.js
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
const { nodeDefinitions } = require('graphql-relay');
|
||||
|
||||
function resolveNode(globalId) {
|
||||
return globalId;
|
||||
}
|
||||
|
||||
function normalizeId(id) {
|
||||
return String(id);
|
||||
}
|
||||
|
||||
module.exports = { resolveNode, normalizeId, nodeDefinitions };
|
||||
15
tests/fixtures/fp_guards/phase21_adapter_collisions/js_sequelize_helper.js
vendored
Normal file
15
tests/fixtures/fp_guards/phase21_adapter_collisions/js_sequelize_helper.js
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
module.exports = {
|
||||
async up(queryInterface, Sequelize) {
|
||||
await queryInterface.createTable('users', {});
|
||||
},
|
||||
|
||||
async down(queryInterface, Sequelize) {
|
||||
await queryInterface.dropTable('users');
|
||||
},
|
||||
};
|
||||
|
||||
function normalizeName(name) {
|
||||
return String(name);
|
||||
}
|
||||
|
||||
module.exports.normalizeName = normalizeName;
|
||||
9
tests/fixtures/fp_guards/phase21_adapter_collisions/php_laravel_bootstrapper.php
vendored
Normal file
9
tests/fixtures/fp_guards/phase21_adapter_collisions/php_laravel_bootstrapper.php
vendored
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<?php
|
||||
|
||||
class Bootstrapper
|
||||
{
|
||||
public function configure($app)
|
||||
{
|
||||
return $app->withMiddleware([]);
|
||||
}
|
||||
}
|
||||
11
tests/fixtures/fp_guards/phase21_adapter_collisions/python_alembic_helper.py
vendored
Normal file
11
tests/fixtures/fp_guards/phase21_adapter_collisions/python_alembic_helper.py
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
from alembic import op
|
||||
|
||||
revision = "abc123def4"
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.create_table("users")
|
||||
|
||||
|
||||
def normalize_name(name):
|
||||
return str(name)
|
||||
16
tests/fixtures/fp_guards/phase21_adapter_collisions/python_celery_mailer_delay.py
vendored
Normal file
16
tests/fixtures/fp_guards/phase21_adapter_collisions/python_celery_mailer_delay.py
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
from celery import shared_task
|
||||
|
||||
|
||||
@shared_task
|
||||
def tick(payload):
|
||||
return payload
|
||||
|
||||
|
||||
class Mailer:
|
||||
def delay(self, payload):
|
||||
return payload
|
||||
|
||||
|
||||
def enqueue(payload):
|
||||
mailer = Mailer()
|
||||
return mailer.delay(payload)
|
||||
10
tests/fixtures/fp_guards/phase21_adapter_collisions/python_channels_helper.py
vendored
Normal file
10
tests/fixtures/fp_guards/phase21_adapter_collisions/python_channels_helper.py
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
from channels.generic.websocket import WebsocketConsumer
|
||||
|
||||
|
||||
class ChatConsumer(WebsocketConsumer):
|
||||
def receive(self, text_data=None, bytes_data=None):
|
||||
return text_data
|
||||
|
||||
|
||||
def normalize_frame(text_data):
|
||||
return str(text_data)
|
||||
10
tests/fixtures/fp_guards/phase21_adapter_collisions/python_django_middleware_helper.py
vendored
Normal file
10
tests/fixtures/fp_guards/phase21_adapter_collisions/python_django_middleware_helper.py
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
from django.utils.deprecation import MiddlewareMixin
|
||||
|
||||
|
||||
class AuditMiddleware(MiddlewareMixin):
|
||||
def process_request(self, request):
|
||||
return None
|
||||
|
||||
|
||||
def normalize_request(request):
|
||||
return request
|
||||
11
tests/fixtures/fp_guards/phase21_adapter_collisions/python_django_migration_helper.py
vendored
Normal file
11
tests/fixtures/fp_guards/phase21_adapter_collisions/python_django_migration_helper.py
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
operations = [
|
||||
migrations.CreateModel(name="User", fields=[]),
|
||||
]
|
||||
|
||||
|
||||
def normalize_name(name):
|
||||
return str(name)
|
||||
12
tests/fixtures/fp_guards/phase21_adapter_collisions/python_graphene_helper.py
vendored
Normal file
12
tests/fixtures/fp_guards/phase21_adapter_collisions/python_graphene_helper.py
vendored
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
import graphene
|
||||
|
||||
|
||||
class Query(graphene.ObjectType):
|
||||
user = graphene.String()
|
||||
|
||||
def resolve_user(self, info, id):
|
||||
return id
|
||||
|
||||
|
||||
def normalize_id(raw):
|
||||
return str(raw)
|
||||
12
tests/fixtures/fp_guards/phase21_adapter_collisions/python_socketio_helper.py
vendored
Normal file
12
tests/fixtures/fp_guards/phase21_adapter_collisions/python_socketio_helper.py
vendored
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
import socketio
|
||||
|
||||
sio = socketio.Server()
|
||||
|
||||
|
||||
@sio.on("message")
|
||||
def message(sid, data):
|
||||
return data
|
||||
|
||||
|
||||
def normalize(data):
|
||||
return str(data)
|
||||
13
tests/fixtures/fp_guards/phase21_adapter_collisions/ruby_actioncable_helper.rb
vendored
Normal file
13
tests/fixtures/fp_guards/phase21_adapter_collisions/ruby_actioncable_helper.rb
vendored
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
class ChatChannel < ApplicationCable::Channel
|
||||
def subscribed
|
||||
stream_from "chat_room"
|
||||
end
|
||||
|
||||
def receive(data)
|
||||
data
|
||||
end
|
||||
|
||||
def normalize(data)
|
||||
data.to_s
|
||||
end
|
||||
end
|
||||
14
tests/fixtures/fp_guards/phase21_adapter_collisions/rust_juniper_helper.rs
vendored
Normal file
14
tests/fixtures/fp_guards/phase21_adapter_collisions/rust_juniper_helper.rs
vendored
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
use juniper::graphql_object;
|
||||
|
||||
pub struct Query;
|
||||
|
||||
#[graphql_object]
|
||||
impl Query {
|
||||
fn user(&self, id: String) -> String {
|
||||
id
|
||||
}
|
||||
}
|
||||
|
||||
pub fn normalize_id(id: &str) -> String {
|
||||
id.to_string()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue