Skip to content

Commit 33e356c

Browse files
authored
Task/fix bxml declaration bug (#135)
* DX-2935 Remove WebRTC * Remove WebRTC Unit Tests & Utilities * Revert statistics api deletion remove sessions api remove tests * DRY Added one test to TerminalVerb base class and removed redundant ones to reduce repetition per @bpateldx's recommendation * Revert "DRY" This reverts commit 3ba082d. * Fix bug with xml declaration `utf8` causes an issue with the backend - `UTF-8` is valid Also updated the import statements so that users can declare `from bandwidth.model.bxml import Response` * Trigger Tests * Remove LXML dependency in `setup.py` * Drop Support for Python 3.7 * Fix tests from merge conflicts
1 parent 409348f commit 33e356c

20 files changed

+31
-83
lines changed

.github/workflows/test.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ on:
1313
type: choice
1414
options:
1515
- WARNING
16-
- DEBUG
16+
- DEBUG
1717

1818
jobs:
1919
deploy:
@@ -22,7 +22,7 @@ jobs:
2222
strategy:
2323
matrix:
2424
os: [windows-2022, windows-2019, ubuntu-18.04, ubuntu-20.04]
25-
python-version: [3.7, 3.8, 3.9, "3.10"]
25+
python-version: [3.8, 3.9, "3.10"]
2626
env:
2727
BW_ACCOUNT_ID: ${{ secrets.BW_ACCOUNT_ID }}
2828
BW_USERNAME: ${{ secrets.BW_USERNAME }}

bandwidth/model/bxml/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
from . import response
2-
from . import bxml
1+
from .response import Response
2+
from .bxml import Bxml
33
from . import verbs

bandwidth/model/bxml/root.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,18 @@ def __len__(self) -> int:
3434
int: Length of self._nested_verbs
3535
"""
3636
return len(self._nested_verbs)
37-
37+
3838
def __getitem__(self, position: int) -> Verb:
3939
"""Override default getitem method. Makes the object iterable.
4040
4141
Args:
4242
position (int): Desired self._nested_verbs list position
4343
4444
Returns:
45-
BxmlVerb: Desired BXML verb
45+
BxmlVerb: Desired BXML verb
4646
"""
4747
return self._nested_verbs[position]
48-
48+
4949
def _generate_xml(self) -> ET.Element:
5050
"""Generates an XML dom
5151
@@ -58,21 +58,20 @@ def _generate_xml(self) -> ET.Element:
5858
root.append(verb._to_etree_element())
5959
dom = ET.ElementTree(root)
6060
return dom
61-
61+
6262
def add_verb(self, verb: Verb) -> None:
6363
"""Add a verb to the object's nested_verbs array
6464
6565
Args:
6666
verb (BxmlVerb): BXML verb to nest within the parent. Becomes a child xml element.
6767
"""
6868
self._nested_verbs.append(verb)
69-
69+
7070
def to_bxml(self) -> str:
7171
"""Return the serialized BXML string
7272
7373
Returns:
7474
str: Serialized BXML string
7575
"""
7676
xml_document = self._generate_xml()
77-
return ET.tostring(xml_document._root, encoding='utf8', method='xml').decode("utf8")
78-
77+
return ET.tostring(xml_document._root, encoding='UTF-8', method='xml', xml_declaration=True).decode("utf8")

bandwidth/model/bxml/verbs/conference.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,13 @@ def __init__(
6565
self.tag = tag
6666
self.callback_timeout = callback_timeout
6767
super().__init__(
68-
tag="Conference",
69-
content=self.name
68+
tag="Conference"
7069
)
7170

7271
@property
7372
def _attributes(self):
7473
return {
74+
"name": self.name,
7575
"mute": self.mute,
7676
"hold": self.hold,
7777
"callIdsToCoach": self.call_ids_to_coach,

setup.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
REQUIRES = [
2424
"urllib3 >= 1.25.3",
2525
"python-dateutil",
26-
"lxml>=4.9.1",
2726
]
2827

2928
setup(

test/unit/bxml/test_base_classes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def test_root(self):
2727
self.root.add_verb(self.verb1)
2828
self.root.add_verb(self.verb2)
2929

30-
expected_bxml = "<?xml version='1.0' encoding='utf8'?>\n<TestRoot><TestVerb1>test</TestVerb1><TestVerb2 /></TestRoot>"
30+
expected_bxml = "<?xml version='1.0' encoding='UTF-8'?>\n<TestRoot><TestVerb1>test</TestVerb1><TestVerb2 /></TestRoot>"
3131
assert(type(self.root[0]) == Verb)
3232
assert(len(self.root) == 2)
3333
assert(expected_bxml == self.root.to_bxml())

test/unit/bxml/test_bridge.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,5 @@ def setUp(self):
2424
self.test_verb = Verb(tag="test")
2525

2626
def test_to_bxml(self):
27-
if os.environ['PYTHON_VERSION'] == '3.7':
28-
expected = '<Bridge bridgeCompleteUrl="https://example.com" tag="test">+19198675309</Bridge>'
29-
else:
30-
expected = '<Bridge bridgeCompleteUrl="https://example.com" tag="test">+19198675309</Bridge>'
27+
expected = '<Bridge bridgeCompleteUrl="https://example.com" tag="test">+19198675309</Bridge>'
3128
assert(expected == self.bridge.to_bxml())

test/unit/bxml/test_bxml.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ class TestBxml(unittest.TestCase):
1515
def setUp(self):
1616
self.response = Bxml()
1717

18-
def test_response_init(self):
18+
def test_bxml_init(self):
1919
"""Test initializing the <Bxml> root
2020
"""
21-
expected_bxml = "<?xml version='1.0' encoding='utf8'?>\n<Bxml />"
21+
expected_bxml = "<?xml version='1.0' encoding='UTF-8'?>\n<Bxml />"
2222
assert self.response.to_bxml() == expected_bxml

test/unit/bxml/test_conference.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,5 @@ def setUp(self):
3434
self.test_verb = Verb(tag="test")
3535

3636
def test_to_bxml(self):
37-
if os.environ['PYTHON_VERSION'] == '3.7':
38-
expected = '<Conference callIdsToCoach="example-call-id" callbackTimeout="5" conferenceEventFallbackMethod="POST" conferenceEventFallbackUrl="backupexample.com/eventurl" conferenceEventMethod="POST" conferenceEventUrl="example.com/eventurl" fallbackPassword="pass" fallbackUsername="user" hold="false" mute="true" password="pass" tag="tag" username="user">conf1</Conference>'
39-
else:
40-
expected = '<Conference mute="true" hold="false" callIdsToCoach="example-call-id" conferenceEventUrl="example.com/eventurl" conferenceEventMethod="POST" conferenceEventFallbackUrl="backupexample.com/eventurl" conferenceEventFallbackMethod="POST" username="user" password="pass" fallbackUsername="user" fallbackPassword="pass" tag="tag" callbackTimeout="5">conf1</Conference>'
37+
expected = '<Conference name="conf1" mute="true" hold="false" callIdsToCoach="example-call-id" conferenceEventUrl="example.com/eventurl" conferenceEventMethod="POST" conferenceEventFallbackUrl="backupexample.com/eventurl" conferenceEventFallbackMethod="POST" username="user" password="pass" fallbackUsername="user" fallbackPassword="pass" tag="tag" callbackTimeout="5" />'
4138
assert(expected == self.conference.to_bxml())

test/unit/bxml/test_forward.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,6 @@ def setUp(self):
2424
)
2525
self.test_verb = Verb(tag="test")
2626

27-
2827
def test_to_bxml(self):
29-
if os.environ['PYTHON_VERSION'] == '3.7':
30-
expected = '<Forward _from="19195554322" callTimeout="15" diversionReason="away" diversionTreatment="propagate" to="19195554321" uui="93d6f3c0be5845960b744fa28015d8ede84bd1a4;encoding=base64,asdf;encoding=jwt" />'
31-
else:
32-
expected = '<Forward to="19195554321" _from="19195554322" callTimeout="15" diversionTreatment="propagate" diversionReason="away" uui="93d6f3c0be5845960b744fa28015d8ede84bd1a4;encoding=base64,asdf;encoding=jwt" />'
28+
expected = '<Forward to="19195554321" _from="19195554322" callTimeout="15" diversionTreatment="propagate" diversionReason="away" uui="93d6f3c0be5845960b744fa28015d8ede84bd1a4;encoding=base64,asdf;encoding=jwt" />'
3329
assert(expected == self.forward.to_bxml())

0 commit comments

Comments
 (0)