[VOL-4437] Adding support for unkown attributes

Change-Id: I54b1fbefdb75ca3ec4abfc83b57b232d07c76873
diff --git a/internal/common/omci/onu_mib_db_test.go b/internal/common/omci/onu_mib_db_test.go
index 2794aa4..7a589ad 100644
--- a/internal/common/omci/onu_mib_db_test.go
+++ b/internal/common/omci/onu_mib_db_test.go
@@ -17,9 +17,11 @@
 package omci
 
 import (
+	"fmt"
+	"github.com/google/gopacket"
+	"github.com/opencord/bbsim/internal/common"
 	"testing"
 
-	"github.com/opencord/bbsim/internal/common"
 	"github.com/opencord/omci-lib-go/v2"
 	me "github.com/opencord/omci-lib-go/v2/generated"
 	"github.com/stretchr/testify/assert"
@@ -56,6 +58,11 @@
 }
 
 func Test_GenerateMibDatabase(t *testing.T) {
+	common.Config = &common.GlobalConfig{
+		BBSim: common.BBSimConfig{
+			InjectOmciUnknownAttributes: false,
+		},
+	}
 	const uniPortCount = 4
 	mibDb, err := GenerateMibDatabase(uniPortCount, 0, common.XGSPON)
 
@@ -93,6 +100,11 @@
 }
 
 func Test_GenerateMibDatabase_withPots(t *testing.T) {
+	common.Config = &common.GlobalConfig{
+		BBSim: common.BBSimConfig{
+			InjectOmciUnknownAttributes: false,
+		},
+	}
 	const uniPortCount = 4
 	const potsPortCount = 1
 	mibDb, err := GenerateMibDatabase(uniPortCount, potsPortCount, common.XGSPON)
@@ -129,3 +141,38 @@
 	}
 
 }
+
+func Test_GenerateMibDatabase_withUnkownAttrs(t *testing.T) {
+
+	common.Config = &common.GlobalConfig{
+		BBSim: common.BBSimConfig{
+			InjectOmciUnknownAttributes: true,
+		},
+	}
+
+	const uniPortCount = 4
+	const baseMibEntries = 291                    // see Test_GenerateMibDatabase for breakdown
+	const expectedMibEntries = baseMibEntries + 1 // expecting one hardcoded packet
+	mibDb, err := GenerateMibDatabase(uniPortCount, 0, common.XGSPON)
+
+	assert.NoError(t, err)
+	assert.NotNil(t, mibDb)
+	assert.Equal(t, expectedMibEntries, int(mibDb.NumberOfCommands))
+
+	entry := mibDb.items[expectedMibEntries-1] // select the last entry, it's the hardcoded packet
+	fmt.Println(entry.packet)
+	assert.NotNil(t, entry)
+	assert.Equal(t, me.ClassID(37), entry.classId)
+	assert.Nil(t, entry.entityId)
+	assert.Equal(t, 0, len(entry.params))
+	assert.NotNil(t, entry.packet)
+
+	// check that we're generating a valid OMCI payload
+	packet := gopacket.NewPacket(entry.packet, omci.LayerTypeOMCI, gopacket.Lazy)
+	omciLayer := packet.Layer(omci.LayerTypeOMCI)
+	assert.NotNil(t, omciLayer)
+	omciMsg, ok := omciLayer.(*omci.OMCI)
+	assert.True(t, ok)
+	assert.Equal(t, omci.MibUploadNextResponseType, omciMsg.MessageType)
+	assert.Equal(t, uint16(33066), omciMsg.TransactionID)
+}