TestModule¶
The host-mountable container under /_test. Aggregates all
test-infrastructure submodules. Refuses to instantiate outside a local
dev server or when activate() has
not run.
TestModule
¶
Bases: Module
Container module aggregating local-only test endpoints under /_test.
Refuses to instantiate outside a local dev server — this is the
structural last line of defence against a host project that
accidentally mounts the test endpoints in production. Also refuses
when :func:viur.testing.activate has not run yet, so a forgotten
activate-call fails loudly at boot rather than silently 403-ing
every later request.
Source code in src/viur/testing/_test/__init__.py
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 | |
register_submodule
classmethod
¶
Add a host-provided submodule that will be mounted under
/_test/<name>/... whenever TestModule itself mounts.
Must be called before viur.core.setup() runs — the
list is consumed in :meth:__init__ when the router builds
the application.
The name is normalised to lowercase because viur-core
lower-cases every URL path segment at request time
(viur.core.request.BrowseHandler). Without normalisation
a registration of userLogin would land in the resolver
as mixed-case while the request looks up userlogin — and
the lookup would silently fail.
Three layered checks gate the name:
- Empty/non-string rejected for a clear error.
- After lower-casing, must match :data:
_SUBMODULE_NAME_RE(ASCII letter prefix + letters/digits/_-) so the name is safely usable as a Python attribute and a URL segment. - Must not collide with any attribute already present on
TestModule(reserved submodules, renderer flags likejson, inherited :class:viur.core.Moduleinternals likehandler/accessRights/_methods). Thehasattrcheck is intentionally permissive — a future viur-core Module addition is caught automatically.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
URL segment under |
required |
module_cls
|
type
|
Subclass of |
required |
Raises:
| Type | Description |
|---|---|
ValueError
|
when |