mirror of
https://github.com/bgp/stayrtr.git
synced 2024-05-06 15:54:54 +00:00
99 lines
2.0 KiB
Go
99 lines
2.0 KiB
Go
package prefixfile
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestDecodeJSONSlurm(t *testing.T) {
|
|
json, err := os.Open("slurm.json")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
decoded, err := DecodeJSONSlurm(json)
|
|
if err != nil {
|
|
t.Errorf("Unable to decode json: %v", err)
|
|
}
|
|
assert.Nil(t, err)
|
|
asn, _ := decoded.ValidationOutputFilters.PrefixFilters[1].GetASN()
|
|
_, asnEmpty := decoded.ValidationOutputFilters.PrefixFilters[0].GetASN()
|
|
assert.Equal(t, uint32(64496), asn)
|
|
assert.True(t, asnEmpty)
|
|
assert.Equal(t, "192.0.2.0/24", decoded.ValidationOutputFilters.PrefixFilters[0].Prefix)
|
|
}
|
|
|
|
func TestFilterOnVRPs(t *testing.T) {
|
|
vrps := []VRPJson{
|
|
{
|
|
ASN: uint32(65001),
|
|
Prefix: "192.168.0.0/25",
|
|
Length: 25,
|
|
},
|
|
{
|
|
ASN: uint32(65002),
|
|
Prefix: "192.168.1.0/24",
|
|
Length: 24,
|
|
},
|
|
{
|
|
ASN: uint32(65003),
|
|
Prefix: "192.168.2.0/24",
|
|
Length: 24,
|
|
},
|
|
{
|
|
ASN: uint32(65004),
|
|
Prefix: "10.0.0.0/24",
|
|
Length: 24,
|
|
},
|
|
{
|
|
ASN: uint32(65005),
|
|
Prefix: "10.1.0.0/24",
|
|
Length: 16, // this VRP is broken, maxlength can't be smaller than plen
|
|
},
|
|
}
|
|
|
|
slurm := SlurmValidationOutputFilters{
|
|
PrefixFilters: []SlurmPrefixFilter{
|
|
{
|
|
Prefix: "10.0.0.0/8",
|
|
},
|
|
{
|
|
ASN: uint32(65001),
|
|
Prefix: "192.168.0.0/24",
|
|
},
|
|
{
|
|
ASN: uint32(65002),
|
|
},
|
|
},
|
|
}
|
|
added, removed := slurm.FilterOnVRPs(vrps)
|
|
assert.Len(t, added, 1)
|
|
assert.Len(t, removed, 4)
|
|
assert.Equal(t, uint32(65001), removed[0].GetASN())
|
|
assert.Equal(t, uint32(65005), removed[3].GetASN())
|
|
}
|
|
|
|
func TestAssertVRPs(t *testing.T) {
|
|
slurm := SlurmLocallyAddedAssertions{
|
|
PrefixAssertions: []SlurmPrefixAssertion{
|
|
{
|
|
ASN: uint32(65001),
|
|
Prefix: "10.0.0.0/8",
|
|
Comment: "Hello",
|
|
},
|
|
{
|
|
ASN: uint32(65001),
|
|
Prefix: "192.168.0.0/24",
|
|
},
|
|
{
|
|
ASN: uint32(65003),
|
|
Prefix: "192.168.0.0/25",
|
|
MaxPrefixLength: 26,
|
|
},
|
|
},
|
|
}
|
|
vrps := slurm.AssertVRPs()
|
|
assert.Len(t, vrps, 3)
|
|
}
|