mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-27 15:37:02 +00:00
feat(connect): add device identity store and registration proof (#6267)
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
{
|
||||
"protocolVersion": "v1",
|
||||
"fixtureSet": "version",
|
||||
"fixture": "additive-compatibility",
|
||||
"description": "Release skew in both directions. v1 grows by optional fields only, so an unknown field is discarded and an absent one takes its documented default.",
|
||||
"vectors": [
|
||||
{
|
||||
"name": "new agent sends a v1 field this Connect does not know",
|
||||
"direction": "new-agent-to-old-connect",
|
||||
"payload": {
|
||||
"protocolVersion": "v1",
|
||||
"agentVersion": "1.9.0",
|
||||
"capabilities": ["heartbeat"],
|
||||
"telemetryProfile": "extended"
|
||||
},
|
||||
"expected": {
|
||||
"decision": "ACCEPT",
|
||||
"retained": ["protocolVersion", "agentVersion", "capabilities"],
|
||||
"discarded": ["telemetryProfile"],
|
||||
"defaultsApplied": {},
|
||||
"echoedBack": [],
|
||||
"stored": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "new agent sends several unknown optional fields at once",
|
||||
"direction": "new-agent-to-old-connect",
|
||||
"payload": {
|
||||
"protocolVersion": "v1",
|
||||
"capabilities": ["heartbeat", "inventory", "bundle.upload"],
|
||||
"telemetryProfile": "extended",
|
||||
"regionHint": "eu-west",
|
||||
"experimentalFlags": {
|
||||
"fastHeartbeat": true
|
||||
}
|
||||
},
|
||||
"expected": {
|
||||
"decision": "ACCEPT",
|
||||
"retained": ["protocolVersion", "capabilities"],
|
||||
"discarded": ["telemetryProfile", "regionHint", "experimentalFlags"],
|
||||
"defaultsApplied": {
|
||||
"agentVersion": null
|
||||
},
|
||||
"echoedBack": [],
|
||||
"stored": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "old agent omits every optional field",
|
||||
"direction": "old-agent-to-new-connect",
|
||||
"payload": {
|
||||
"protocolVersion": "v1"
|
||||
},
|
||||
"expected": {
|
||||
"decision": "ACCEPT",
|
||||
"retained": ["protocolVersion"],
|
||||
"discarded": [],
|
||||
"defaultsApplied": {
|
||||
"agentVersion": null,
|
||||
"capabilities": []
|
||||
},
|
||||
"echoedBack": [],
|
||||
"stored": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "old agent reports no capabilities but names itself",
|
||||
"direction": "old-agent-to-new-connect",
|
||||
"payload": {
|
||||
"protocolVersion": "v1",
|
||||
"agentVersion": "1.0.0"
|
||||
},
|
||||
"expected": {
|
||||
"decision": "ACCEPT",
|
||||
"retained": ["protocolVersion", "agentVersion"],
|
||||
"discarded": [],
|
||||
"defaultsApplied": {
|
||||
"capabilities": []
|
||||
},
|
||||
"echoedBack": [],
|
||||
"stored": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "unknown fields do not rescue an unsupported major version",
|
||||
"direction": "new-agent-to-old-connect",
|
||||
"payload": {
|
||||
"protocolVersion": "v2",
|
||||
"agentVersion": "2.0.0",
|
||||
"compatibilityShim": "v1"
|
||||
},
|
||||
"expected": {
|
||||
"decision": "REJECT",
|
||||
"reason": "UNSUPPORTED_PROTOCOL",
|
||||
"httpStatus": 400,
|
||||
"retained": [],
|
||||
"discarded": [],
|
||||
"defaultsApplied": {},
|
||||
"echoedBack": [],
|
||||
"stored": []
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user