ax(ueps): rename NewBuilder to NewPacketBuilder for AX Principle 1 compliance
Ambiguous constructor name required reading the return type to know what it builds. NewPacketBuilder is self-documenting without context. Co-Authored-By: Charon <charon@lethean.io>
This commit is contained in:
parent
a1939ff5f7
commit
840418c33e
3 changed files with 18 additions and 18 deletions
|
|
@ -37,16 +37,16 @@ type UEPSHeader struct {
|
|||
ThreatScore uint16 // 0–65535; elevated by integrity violations
|
||||
}
|
||||
|
||||
// builder := ueps.NewBuilder(intentID, payload); frame, _ := builder.MarshalAndSign(secret)
|
||||
// builder := ueps.NewPacketBuilder(intentID, payload); frame, _ := builder.MarshalAndSign(secret)
|
||||
type PacketBuilder struct {
|
||||
Header UEPSHeader
|
||||
Payload []byte
|
||||
}
|
||||
|
||||
// builder := ueps.NewBuilder(0x01, []byte("hello"))
|
||||
// builder := ueps.NewPacketBuilder(0x01, []byte("hello"))
|
||||
// builder.Header.ThreatScore = 100
|
||||
// frame, err := builder.MarshalAndSign(sharedSecret)
|
||||
func NewBuilder(intentID uint8, payload []byte) *PacketBuilder {
|
||||
func NewPacketBuilder(intentID uint8, payload []byte) *PacketBuilder {
|
||||
return &PacketBuilder{
|
||||
Header: UEPSHeader{
|
||||
Version: 0x09, // IPv9
|
||||
|
|
|
|||
|
|
@ -6,16 +6,16 @@ import (
|
|||
"testing"
|
||||
)
|
||||
|
||||
// builder := NewBuilder(0x01, []byte("hello"))
|
||||
// builder := NewPacketBuilder(0x01, []byte("hello"))
|
||||
// // builder.Header.Version == 0x09; builder.Header.CurrentLayer == 5
|
||||
func TestPacket_NewBuilder_Good(t *testing.T) {
|
||||
intentID := uint8(0x01)
|
||||
payload := []byte("hello")
|
||||
|
||||
builder := NewBuilder(intentID, payload)
|
||||
builder := NewPacketBuilder(intentID, payload)
|
||||
|
||||
if builder == nil {
|
||||
t.Fatal("NewBuilder returned nil")
|
||||
t.Fatal("NewPacketBuilder returned nil")
|
||||
}
|
||||
if builder.Header.Version != 0x09 {
|
||||
t.Errorf("expected Version 0x09, got 0x%02x", builder.Header.Version)
|
||||
|
|
@ -37,13 +37,13 @@ func TestPacket_NewBuilder_Good(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
// builder := NewBuilder(0x04, nil)
|
||||
// builder := NewPacketBuilder(0x04, nil)
|
||||
// frame, err := builder.MarshalAndSign(secret) // succeeds with zero-length payload
|
||||
func TestPacket_NewBuilder_Bad(t *testing.T) {
|
||||
builder := NewBuilder(0x04, nil)
|
||||
builder := NewPacketBuilder(0x04, nil)
|
||||
|
||||
if builder == nil {
|
||||
t.Fatal("NewBuilder returned nil for nil payload")
|
||||
t.Fatal("NewPacketBuilder returned nil for nil payload")
|
||||
}
|
||||
if builder.Payload != nil {
|
||||
t.Errorf("expected nil Payload, got %v", builder.Payload)
|
||||
|
|
@ -58,11 +58,11 @@ func TestPacket_NewBuilder_Bad(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
// builder := NewBuilder(0x00, largePayload)
|
||||
// builder := NewPacketBuilder(0x00, largePayload)
|
||||
// frame, err := builder.MarshalAndSign(secret) // succeeds; 0xFF tag appended without length prefix
|
||||
func TestPacket_NewBuilder_Ugly(t *testing.T) {
|
||||
largePayload := bytes.Repeat([]byte("x"), 300)
|
||||
builder := NewBuilder(0x00, largePayload)
|
||||
builder := NewPacketBuilder(0x00, largePayload)
|
||||
|
||||
if builder.Header.IntentID != 0x00 {
|
||||
t.Errorf("expected IntentID 0x00, got 0x%02x", builder.Header.IntentID)
|
||||
|
|
@ -77,10 +77,10 @@ func TestPacket_NewBuilder_Ugly(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
// builder := NewBuilder(0x01, []byte("ping"))
|
||||
// builder := NewPacketBuilder(0x01, []byte("ping"))
|
||||
// frame, err := builder.MarshalAndSign([]byte("my-shared-secret"))
|
||||
func TestPacket_MarshalAndSign_Good(t *testing.T) {
|
||||
builder := NewBuilder(0x01, []byte("ping"))
|
||||
builder := NewPacketBuilder(0x01, []byte("ping"))
|
||||
sharedSecret := []byte("my-shared-secret")
|
||||
|
||||
frame, err := builder.MarshalAndSign(sharedSecret)
|
||||
|
|
@ -104,7 +104,7 @@ func TestPacket_MarshalAndSign_Good(t *testing.T) {
|
|||
// frameWithSecretB, _ := builder.MarshalAndSign([]byte("secret-b"))
|
||||
// // frameWithSecretA != frameWithSecretB (HMAC tag differs)
|
||||
func TestPacket_MarshalAndSign_Bad(t *testing.T) {
|
||||
builder := NewBuilder(0x02, []byte("data"))
|
||||
builder := NewPacketBuilder(0x02, []byte("data"))
|
||||
|
||||
frameWithSecretA, err := builder.MarshalAndSign([]byte("secret-a"))
|
||||
if err != nil {
|
||||
|
|
@ -126,7 +126,7 @@ func TestPacket_MarshalAndSign_Bad(t *testing.T) {
|
|||
// _, err := ReadAndVerify(bufio.NewReader(bytes.NewReader(corrupted)), secret)
|
||||
// // err == errIntegrityViolation (HMAC mismatch detected)
|
||||
func TestPacket_MarshalAndSign_Ugly(t *testing.T) {
|
||||
builder := NewBuilder(0x03, []byte("sensitive"))
|
||||
builder := NewPacketBuilder(0x03, []byte("sensitive"))
|
||||
sharedSecret := []byte("my-secret")
|
||||
|
||||
frame, err := builder.MarshalAndSign(sharedSecret)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ import (
|
|||
"testing"
|
||||
)
|
||||
|
||||
// builder := NewBuilder(0x01, []byte("hello")); frame, _ := builder.MarshalAndSign(secret)
|
||||
// builder := NewPacketBuilder(0x01, []byte("hello")); frame, _ := builder.MarshalAndSign(secret)
|
||||
// packet, err := ReadAndVerify(bufio.NewReader(bytes.NewReader(frame)), secret)
|
||||
// // packet.Header.IntentID == 0x01; packet.Payload == []byte("hello")
|
||||
func TestReader_ReadAndVerify_Good(t *testing.T) {
|
||||
|
|
@ -14,7 +14,7 @@ func TestReader_ReadAndVerify_Good(t *testing.T) {
|
|||
payload := []byte("hello world")
|
||||
intentID := uint8(0x01)
|
||||
|
||||
builder := NewBuilder(intentID, payload)
|
||||
builder := NewPacketBuilder(intentID, payload)
|
||||
frame, err := builder.MarshalAndSign(sharedSecret)
|
||||
if err != nil {
|
||||
t.Fatalf("MarshalAndSign failed: %v", err)
|
||||
|
|
@ -46,7 +46,7 @@ func TestReader_ReadAndVerify_Good(t *testing.T) {
|
|||
func TestReader_ReadAndVerify_Bad(t *testing.T) {
|
||||
sharedSecret := []byte("test-shared-secret")
|
||||
|
||||
builder := NewBuilder(0x02, []byte("sensitive data"))
|
||||
builder := NewPacketBuilder(0x02, []byte("sensitive data"))
|
||||
frame, err := builder.MarshalAndSign(sharedSecret)
|
||||
if err != nil {
|
||||
t.Fatalf("MarshalAndSign failed: %v", err)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue