feat(protocol): job messages, protocol version and job model (#7)
This commit is contained in:
@@ -47,3 +47,35 @@ func TestDecodeRejectsMalformedPayload(t *testing.T) {
|
||||
_, err := Decode[Hello](Envelope{Type: TypeHello, Payload: json.RawMessage(`{"hostname": 5}`)})
|
||||
assert.ErrorContains(t, err, "decode hello")
|
||||
}
|
||||
|
||||
func TestEncodeJob_CarriesID(t *testing.T) {
|
||||
in := JobStart{Kind: KindSwarm, SwarmService: "gitea_gitea", Ref: "gitea/gitea:1.27"}
|
||||
env, err := EncodeJob(TypeJobStart, "42", in)
|
||||
require.NoError(t, err)
|
||||
|
||||
raw, err := json.Marshal(env)
|
||||
require.NoError(t, err)
|
||||
var back Envelope
|
||||
require.NoError(t, json.Unmarshal(raw, &back))
|
||||
|
||||
assert.Equal(t, "42", back.ID)
|
||||
assert.Equal(t, TypeJobStart, back.Type)
|
||||
out, err := Decode[JobStart](back)
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, in, out)
|
||||
}
|
||||
|
||||
func TestHello_PhaseOneDecodesAsVersionZero(t *testing.T) {
|
||||
var h Hello
|
||||
require.NoError(t, json.Unmarshal([]byte(`{"agent_version":"x","hostname":"h","swarm_manager":false}`), &h))
|
||||
assert.Equal(t, 0, h.ProtocolVersion)
|
||||
assert.Nil(t, h.KnownJobs)
|
||||
}
|
||||
|
||||
func TestEnvelope_InventoryHasNoID(t *testing.T) {
|
||||
env, err := Encode(TypeSnapshot, Snapshot{})
|
||||
require.NoError(t, err)
|
||||
raw, err := json.Marshal(env)
|
||||
require.NoError(t, err)
|
||||
assert.NotContains(t, string(raw), `"id"`)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user