Source code for aries_cloudagent.config.tests.test_injection_context

from asynctest import TestCase as AsyncTestCase

from ..base import BaseInjector, InjectorError
from ..injection_context import InjectionContext, InjectionContextError


[docs]class TestInjectionContext(AsyncTestCase):
[docs] def setUp(self): self.test_key = "TEST" self.test_value = "VALUE" self.test_scope = "SCOPE" self.test_settings = {self.test_key: self.test_value} self.test_instance = InjectionContext(settings=self.test_settings)
[docs] def test_settings_init(self): """Test settings initialization.""" assert self.test_instance.scope_name == self.test_instance.ROOT_SCOPE for key in self.test_settings: assert key in self.test_instance.settings assert self.test_instance.settings[key] == self.test_settings[key]
[docs] def test_simple_scope(self): """Test scope entrance and exit.""" with self.assertRaises(InjectionContextError): self.test_instance.start_scope(None) with self.assertRaises(InjectionContextError): self.test_instance.start_scope(self.test_instance.ROOT_SCOPE) context = self.test_instance.start_scope(self.test_scope) assert context.scope_name == self.test_scope with self.assertRaises(InjectionContextError): context.start_scope(self.test_instance.ROOT_SCOPE) assert self.test_instance.scope_name == self.test_instance.ROOT_SCOPE
[docs] def test_settings_scope(self): """Test scoped settings.""" upd_settings = {self.test_key: "NEWVAL"} context = self.test_instance.start_scope(self.test_scope, upd_settings) assert context.settings[self.test_key] == "NEWVAL" assert self.test_instance.settings[self.test_key] == self.test_value root = context.injector_for_scope(context.ROOT_SCOPE) assert root.settings[self.test_key] == self.test_value
[docs] async def test_inject_simple(self): """Test a basic injection.""" assert (await self.test_instance.inject(str, required=False)) is None with self.assertRaises(InjectorError): await self.test_instance.inject(str) self.test_instance.injector.bind_instance(str, self.test_value) assert (await self.test_instance.inject(str)) is self.test_value
[docs] async def test_inject_scope(self): """Test a scoped injection.""" context = self.test_instance.start_scope(self.test_scope) assert (await context.inject(str, required=False)) is None context.injector.bind_instance(str, self.test_value) assert (await context.inject(str)) is self.test_value assert (await self.test_instance.inject(str, required=False)) is None root = context.injector_for_scope(context.ROOT_SCOPE) assert (await root.inject(str, required=False)) is None