async def test_get_no_key_500(patched_send, opsdroid_matrix): patched_send.return_value = nio.RoomGetStateEventError({"code": 500}) db = DatabaseMatrix( {"should_encrypt": False, "single_state_key": False}, opsdroid=opsdroid_matrix ) db.should_migrate = False with pytest.raises(RuntimeError): await db.get("twim")
async def test_get_no_key_404(patched_send, opsdroid_matrix): patched_send.return_value = nio.RoomGetStateEventError({"errcode": "M_NOTFOUND"}) patched_send.return_value.transport_response = AsyncMock() patched_send.return_value.transport_response.status = 404 db = DatabaseMatrix( {"should_encrypt": False, "single_state_key": False}, opsdroid=opsdroid_matrix ) db.should_migrate = False data = await db.get("twim") assert data is None
def side_effect(resp, *args, **kwargs): if resp is nio.RoomGetStateResponse: return nio.RoomGetStateResponse( [{ "type": "opsdroid.database", "state_key": "twim", "event_id": "roomeventid", "content": { "hello": "world" }, }], "!notaroomid", ) else: return nio.RoomGetStateEventError(message="testing")
async def test_errors(patched_send, opsdroid_matrix, mocker, caplog, patched_uuid): def side_effect(resp, *args, **kwargs): if resp is nio.RoomGetStateEventResponse: resp = nio.RoomGetStateEventResponse( {"twim": { "encrypted_val": "enceventid" }}, "", "", "") return resp else: return nio.RoomGetEventError(message="testing") patched_send.side_effect = side_effect db = DatabaseMatrix({"should_encrypt": False}, opsdroid=opsdroid_matrix) caplog.clear() db.should_migrate = False await db.get("twim") assert [ "Error decrypting event enceventid while getting twim: testing(None)" ] == [rec.message for rec in caplog.records] patched_send.side_effect = [ nio.RoomGetStateError(message="testing"), nio.RoomGetStateEventError(message="testing"), ] caplog.clear() db.should_migrate = True with pytest.raises(RuntimeError): await db.get("hello") assert [ "Error migrating from opsdroid.database to dev.opsdroid.database in room !notaroomid: testing(None)" ] == [rec.message for rec in caplog.records] patched_send.side_effect = [ nio.RoomGetStateError(message="testing"), nio.RoomGetStateEventError(message="testing"), ] caplog.clear() db.should_migrate = True await db.delete("hello") assert [ "Error migrating from opsdroid.database to dev.opsdroid.database in room !notaroomid: testing(None)", "Error deleting hello from matrix room !notaroomid: testing(None)", ] == [rec.message for rec in caplog.records] def side_effect(resp, *args, **kwargs): if resp is nio.RoomGetStateEventResponse: resp = nio.RoomGetStateEventResponse( {"hello": { "encrypted_val": "enceventid" }}, "", "", "") return resp else: return nio.RoomGetEventError(message="testing") patched_send.side_effect = side_effect caplog.clear() db.connector._allow_encryption = True db.should_migrate = False db._single_state_key = False with pytest.raises(MatrixException): await db.put("twim", {"hello": "world"}) assert [ "Error decrypting event enceventid while getting twim: testing(None)" ] == [rec.message for rec in caplog.records]