Skip to content

Commit 4427536

Browse files
authored
Address.unresolved should return an Address (#601)
1 parent 965c3dc commit 4427536

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

neo4j/addressing.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ def host_name(self):
232232

233233
@property
234234
def unresolved(self):
235-
return (self._host_name, *self[1:])
235+
return super().__new__(Address, (self._host_name, *self[1:]))
236236

237237
def resolve(self, family=0, resolver=None):
238238
return [self]

tests/unit/test_addressing.py

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -230,15 +230,29 @@ def test_address_resolve_with_unresolvable_address(test_input, expected):
230230

231231
def test_address_resolve_with_custom_resolver():
232232
# python -m pytest tests/unit/test_addressing.py -s -k test_address_resolve_with_custom_resolver
233-
custom_resolver = lambda a: [("127.0.0.1", 7687), ("localhost", 1234)]
233+
custom_resolver = lambda _: [("127.0.0.1", 7687), ("localhost", 1234)]
234234

235235
address = Address(("127.0.0.1", 7687))
236236
resolved = address.resolve(family=AF_INET, resolver=custom_resolver)
237237
assert isinstance(resolved, Address) is False
238238
assert isinstance(resolved, list) is True
239-
if len(resolved) == 2:
240-
# IPv4 only
241-
assert resolved[0] == IPv4Address(('127.0.0.1', 7687))
242-
assert resolved[1] == IPv4Address(('127.0.0.1', 1234))
243-
else:
244-
assert False
239+
assert len(resolved) == 2 # IPv4 only
240+
assert resolved[0] == IPv4Address(('127.0.0.1', 7687))
241+
assert resolved[1] == IPv4Address(('127.0.0.1', 1234))
242+
243+
244+
def test_address_unresolve():
245+
# python -m pytest tests/unit/test_addressing.py -s -k test_address_unresolve
246+
custom_resolved = [("127.0.0.1", 7687), ("localhost", 4321)]
247+
custom_resolver = lambda _: custom_resolved
248+
249+
address = Address(("foobar", 1234))
250+
unresolved = address.unresolved
251+
assert address.__class__ == unresolved.__class__
252+
assert address == unresolved
253+
resolved = address.resolve(family=AF_INET, resolver=custom_resolver)
254+
custom_resolved = sorted(Address(a) for a in custom_resolved)
255+
unresolved = sorted(a.unresolved for a in resolved)
256+
assert custom_resolved == unresolved
257+
assert (list(map(lambda a: a.__class__, custom_resolved))
258+
== list(map(lambda a: a.__class__, unresolved)))

0 commit comments

Comments
 (0)