Fix: attribute vendor codes retrieval

This commit is contained in:
Istvan Ruzman
2020-08-12 08:31:35 +02:00
parent 6e7d3e3761
commit 5c110669b2
2 changed files with 32 additions and 1 deletions

View File

@@ -454,7 +454,7 @@ class Dictionary:
self.cur_vendor.attrs[attrcode] = attribute
if self.cur_vendor != self.rfc_vendor:
codes = [26] + codes
codes = [26, self.cur_vendor.code] + codes
attrcode = codes[0] if len(codes) == 1 else tuple(codes)
self.attrindex[attrcode] = attribute
self.attrindex[name] = attribute

View File

@@ -377,3 +377,34 @@ def test_invalid_attribute_flags(invalid_flag):
dictionary = StringIO(f"ATTRIBUTE NAME 123 octets {invalid_flag}")
with pytest.raises(ParseError):
Dictionary("", dictionary)
@pytest.mark.parametrize(
"attribute", ["RFC-ATTRIBUTE", "VENDOR-ATTRIBUTE", 7, (26, 5555, 7)]
)
def test_get_attributes_from_dictionaries(attribute):
dictionary = StringIO(
"ATTRIBUTE RFC-ATTRIBUTE 7 integer\n"
"VENDOR TEST-VENDOR 5555\n"
"BEGIN-VENDOR TEST-VENDOR\n"
"ATTRIBUTE VENDOR-ATTRIBUTE 7 integer\n"
"END-VENDOR TEST-VENDOR"
)
dd = Dictionary("", dictionary)
_ = dd[attribute]
@pytest.mark.parametrize(
"attribute", ["RFC-ATTRIBUTE1", 8, (26, 5556, 7), (26, 5555, 8)]
)
def test_get_nonexisting_attributes_from_dictionaries(attribute):
dictionary = StringIO(
"ATTRIBUTE RFC-ATTRIBUTE 7 integer\n"
"VENDOR TEST-VENDOR 5555\n"
"BEGIN-VENDOR TEST-VENDOR\n"
"ATTRIBUTE VENDOR-ATTRIBUTE 7 integer\n"
"END-VENDOR TEST-VENDOR"
)
dd = Dictionary("", dictionary)
with pytest.raises(KeyError):
_ = dd[attribute]