Better logging style and improved tests.
This commit is contained in:
parent
79f682cbb7
commit
7634f0f530
|
@ -485,7 +485,7 @@ async def test_User_sync_existing(client_fixture, caplog):
|
||||||
|
|
||||||
await c.sync()
|
await c.sync()
|
||||||
|
|
||||||
assert "[existing_user] sync -> res:" in caplog.text
|
assert f"User({c.name}): synced" in caplog.text
|
||||||
assert client_fixture.called_with_args["search"]["args"] == (c.dn, 0)
|
assert client_fixture.called_with_args["search"]["args"] == (c.dn, 0)
|
||||||
for k, v in EXISTING_USER[0].items():
|
for k, v in EXISTING_USER[0].items():
|
||||||
if k != "dn":
|
if k != "dn":
|
||||||
|
@ -504,7 +504,7 @@ async def test_User_sync_not_existing(client_fixture, caplog):
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_User_modify_existing(client_fixture):
|
async def test_User_modify_existing(client_fixture, caplog):
|
||||||
c = User("existing_user", client_fixture)
|
c = User("existing_user", client_fixture)
|
||||||
c._entry = mock.MagicMock()
|
c._entry = mock.MagicMock()
|
||||||
|
|
||||||
|
@ -516,12 +516,13 @@ async def test_User_modify_existing(client_fixture):
|
||||||
await c.sync()
|
await c.sync()
|
||||||
await c.modify("mail", "other@existing.org")
|
await c.modify("mail", "other@existing.org")
|
||||||
|
|
||||||
|
assert f"User({c.name}): modified (mail)" in caplog.text
|
||||||
c._entry.__setitem__.assert_called_with("mail", "other@existing.org")
|
c._entry.__setitem__.assert_called_with("mail", "other@existing.org")
|
||||||
c._entry.__delitem__.assert_called_with("mail")
|
c._entry.__delitem__.assert_called_with("mail")
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_User_modify_existing_append(client_fixture):
|
async def test_User_modify_existing_append(client_fixture, caplog):
|
||||||
c = User("existing_user", client_fixture)
|
c = User("existing_user", client_fixture)
|
||||||
c._entry = mock.MagicMock()
|
c._entry = mock.MagicMock()
|
||||||
|
|
||||||
|
@ -533,6 +534,7 @@ async def test_User_modify_existing_append(client_fixture):
|
||||||
await c.sync()
|
await c.sync()
|
||||||
await c.modify("mail", "other@existing.org", append=True)
|
await c.modify("mail", "other@existing.org", append=True)
|
||||||
|
|
||||||
|
assert f"User({c.name}): modified (mail)" in caplog.text
|
||||||
c._entry.__setitem__.assert_called_with("mail", "other@existing.org")
|
c._entry.__setitem__.assert_called_with("mail", "other@existing.org")
|
||||||
c._entry.__delitem__.assert_not_called()
|
c._entry.__delitem__.assert_not_called()
|
||||||
|
|
||||||
|
@ -541,7 +543,7 @@ async def test_User_modify_existing_append(client_fixture):
|
||||||
async def test_User_modify_not_existing(client_fixture):
|
async def test_User_modify_not_existing(client_fixture):
|
||||||
c = User("existing_user", client_fixture)
|
c = User("existing_user", client_fixture)
|
||||||
c._entry = mock.MagicMock()
|
c._entry = mock.MagicMock()
|
||||||
attr = {'__delitem__.side_effect': KeyError}
|
attr = {"__delitem__.side_effect": KeyError}
|
||||||
c._entry.configure_mock(**attr)
|
c._entry.configure_mock(**attr)
|
||||||
|
|
||||||
async def _modify():
|
async def _modify():
|
||||||
|
@ -550,12 +552,14 @@ async def test_User_modify_not_existing(client_fixture):
|
||||||
c._entry.modify = _modify
|
c._entry.modify = _modify
|
||||||
|
|
||||||
await c.sync()
|
await c.sync()
|
||||||
with pytest.raises(PhiAttributeMissing):
|
with pytest.raises(PhiAttributeMissing) as e:
|
||||||
await c.modify("snafu", "modified")
|
await c.modify("snafu", "modified")
|
||||||
|
|
||||||
|
assert c.dn in str(e.value)
|
||||||
|
assert "snafu" in str(e.value)
|
||||||
|
|
||||||
@pytest.mark.asyncio
|
@pytest.mark.asyncio
|
||||||
async def test_User_remove_existing(client_fixture):
|
async def test_User_remove_existing(client_fixture, caplog):
|
||||||
c = User("existing_user", client_fixture)
|
c = User("existing_user", client_fixture)
|
||||||
c._entry = mock.MagicMock()
|
c._entry = mock.MagicMock()
|
||||||
|
|
||||||
|
@ -570,6 +574,7 @@ async def test_User_remove_existing(client_fixture):
|
||||||
await c.sync()
|
await c.sync()
|
||||||
await c.remove()
|
await c.remove()
|
||||||
|
|
||||||
|
assert f"User({c.name}): removed" in caplog.text
|
||||||
delete.assert_called_once()
|
delete.assert_called_once()
|
||||||
|
|
||||||
|
|
||||||
|
@ -585,9 +590,10 @@ async def test_User_remove_not_existing(client_fixture):
|
||||||
delete = _delete()
|
delete = _delete()
|
||||||
c._entry.delete = delete
|
c._entry.delete = delete
|
||||||
|
|
||||||
with pytest.raises(PhiUserDoesNotExist):
|
with pytest.raises(PhiEntryDoesNotExist) as e:
|
||||||
await c.remove()
|
await c.remove()
|
||||||
|
|
||||||
|
assert c.dn in str(e.value)
|
||||||
|
|
||||||
def test_Service(client_fixture):
|
def test_Service(client_fixture):
|
||||||
c = Service("phi", client_fixture)
|
c = Service("phi", client_fixture)
|
||||||
|
|
|
@ -265,16 +265,17 @@ class User(Hackers):
|
||||||
self._entry = await create_new_(
|
self._entry = await create_new_(
|
||||||
self, uid=self.name, mail=mail, sn=_sn, cn=_cn, userPassword=hashed
|
self, uid=self.name, mail=mail, sn=_sn, cn=_cn, userPassword=hashed
|
||||||
)
|
)
|
||||||
|
alog.info("User(%s): created", self.name)
|
||||||
|
|
||||||
async def sync(self):
|
async def sync(self):
|
||||||
async with self.client.connect(is_async=True) as conn:
|
async with self.client.connect(is_async=True) as conn:
|
||||||
res = await conn.search(self.dn, 0)
|
res = await conn.search(self.dn, 0)
|
||||||
alog.debug("[%s] sync -> res: %s", self.name, res)
|
|
||||||
if len(res) == 0:
|
if len(res) == 0:
|
||||||
raise PhiEntryDoesNotExist(self.dn)
|
raise PhiEntryDoesNotExist(self.dn)
|
||||||
for k, v in res[0].items():
|
for k, v in res[0].items():
|
||||||
if not k == "dn":
|
if not k == "dn":
|
||||||
self._entry[k] = v
|
self._entry[k] = v
|
||||||
|
alog.info("User(%s): synced", self.name)
|
||||||
|
|
||||||
async def modify(self, key, value, append=False):
|
async def modify(self, key, value, append=False):
|
||||||
async with self.client.connect(is_async=True) as conn:
|
async with self.client.connect(is_async=True) as conn:
|
||||||
|
@ -286,12 +287,14 @@ class User(Hackers):
|
||||||
except KeyError:
|
except KeyError:
|
||||||
raise PhiAttributeMissing(self.dn, key)
|
raise PhiAttributeMissing(self.dn, key)
|
||||||
await self._entry.modify()
|
await self._entry.modify()
|
||||||
|
alog.info("User(%s): modified (%s)", self.name, key)
|
||||||
|
|
||||||
async def remove(self):
|
async def remove(self):
|
||||||
async with self.client.connect(is_async=True) as conn:
|
async with self.client.connect(is_async=True) as conn:
|
||||||
self._entry.connection = conn
|
self._entry.connection = conn
|
||||||
try:
|
try:
|
||||||
await self._entry.delete()
|
await self._entry.delete()
|
||||||
|
alog.info("User(%s): removed", self.name)
|
||||||
except NoSuchObjectError:
|
except NoSuchObjectError:
|
||||||
raise PhiEntryDoesNotExist(self.dn)
|
raise PhiEntryDoesNotExist(self.dn)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user