fix(netflow): завершить локальную приёмку и объединить сценарий сброса

This commit is contained in:
Denozordec committed 2026-10-03 13:07:39 +07:00
1 parent d9e09281e8
commit 2215007c91
13 files changed
+31 -41

No files matched your search

@@ -11,10 +11,10 @@ assert.equal(permissionForRequest("GET","/api/traffic/flow/host-files?download=t
assert.equal(permissionForRequest("GET","/api/traffic/flow/settings"),"mm:traffic:read")
const app=Fastify();await app.register(authPlugin);app.addHook("preHandler",requireAuth)
let invoked=0
for(const [method,url] of [["GET","/api/traffic/flow/settings"],["GET","/api/traffic/flow/host-files"],["POST","/api/traffic/flow/settings/generate-keys"],["PUT","/api/traffic/flow/settings"]] as const) app.route({method,url,handler:async()=>{invoked++;return {ok:true}}})
for(const [method,url] of [["GET","/api/traffic/flow/settings"],["GET","/api/traffic/flow/host-files"],["POST","/api/traffic/flow/settings/generate-keys"],["PUT","/api/traffic/flow/settings"],["POST","/api/traffic/flow/purge"]] as const) app.route({method,url,handler:async()=>{invoked++;return {ok:true}}})
for(const permission of ["mm:dashboard:read","mm:traffic:read","mm:traffic:write","mm:traffic:admin","mm:settings:admin"]){
const token=await new SignJWT({sub:"fixture",apps:["mm"],permissions:[permission]}).setProtectedHeader({alg:"HS256"}).setIssuer("https://auth.test.local").setExpirationTime("1h").sign(new TextEncoder().encode("netflow-test-secret"))
for(const [method,url] of [["GET","/api/traffic/flow/settings"],["GET","/api/traffic/flow/host-files"],["POST","/api/traffic/flow/settings/generate-keys"],["PUT","/api/traffic/flow/settings"]] as const){
for(const [method,url] of [["GET","/api/traffic/flow/settings"],["GET","/api/traffic/flow/host-files"],["POST","/api/traffic/flow/settings/generate-keys"],["PUT","/api/traffic/flow/settings"],["POST","/api/traffic/flow/purge"]] as const){
const before=invoked;const response=await app.inject({method,url,headers:{authorization:"Bearer "+token}})
const allowed=permission==="mm:traffic:write"||permission==="mm:traffic:admin"||(permission==="mm:traffic:read"&&url.endsWith("/settings")&&method==="GET")
assert.equal(response.statusCode,allowed?200:403,permission+" "+method+" "+url);assert.equal(invoked,before+(allowed?1:0))