def test_Resource__local_update(): r = Resource(mock.MagicMock()) stash = r._meta_data.copy() r._local_update({'test': 1}) assert stash == r._meta_data r.__dict__.pop('_meta_data') assert r.__dict__ == {'test': 1}
def test_Resource__local_update_IncompatibleKeys(): r = Resource(mock.MagicMock()) with pytest.raises(DeviceProvidesIncompatibleKey) as DPIKIO: r._local_update({"_meta_data": "foo"}) assert DPIKIO.value.message ==\ "Response contains key '_meta_data' which is incompatible"\ " with this API!!\n Response json: {'_meta_data': 'foo'}" with pytest.raises(DeviceProvidesIncompatibleKey) as DPIKIO: r._local_update({"__MANGLENAME": "foo"}) assert DPIKIO.value.message ==\ "Device provided '__MANGLENAME' which is disallowed,"\ " it mangles into a Python non-public attribute." with pytest.raises(DeviceProvidesIncompatibleKey) as DPIKIO: r._local_update({"for": "foo"}) assert DPIKIO.value.message ==\ "Device provided 'for' which is disallowed because"\ " it's a Python keyword." with pytest.raises(DeviceProvidesIncompatibleKey) as DPIKIO: r._local_update({"%abcd": "foo"}) assert DPIKIO.value.message ==\ "Device provided '%abcd' which is disallowed because"\ " it's not a valid Python 2.7 identifier."