Documentación de Proyecto Sincro

PanelAdminTest extends ApiTestCase

Sección PANEL ADMIN de la API — gestión de usuarios y de sus permisos.

El foco de estos tests es la ESCALADA DE PRIVILEGIOS: que un usuario estándar (tipo 0) no pueda ejecutar acciones administrativas y que un administrador (tipo 1) no pueda superar su propio nivel.

Tags
see
ControladorUsers
see
ControladorPermisos
requires

PHP 8.0 Uso de tipado estricto y funciones de strings

requires

PHPUnit.

Attributes
#[Group]
'trackingweb'
#[Group]
'panel-admin'

Table of Contents

Properties

$cookieJar  : CookieJar
$debug  : bool
$http  : Client

Methods

accionesAdminProvider()  : array<string|int, mixed>
entradasInvalidasProvider()  : array<string|int, mixed>
modosBorradoProvider()  : array<string|int, mixed>
testAdminNoPuedeCrearUsuarioDeRolSuperior()  : void
Un administrador no puede crear un usuario de rol superior al suyo.
testAdminNoPuedePromocionarPorEncimaDeSuRol()  : void
Un administrador no puede promocionar a otro usuario por encima de su rol.
testEntradasInvalidasNoProvocanErrorDeServidor()  : void
Entradas inválidas deben resolverse con 4xx, nunca con un 5xx.
testListadoDeUsuariosNoExponeContrasenas()  : void
El listado de usuarios no debe exponer nunca el hash de contraseña.
testNoSePuedenCrearDosUsuariosConElMismoLogin()  : void
Crear dos veces el mismo login debe rechazarse con 409.
testUsuarioNoPuedeBorrarseASiMismo()  : void
Nadie puede eliminarse ni desactivarse a sí mismo.
assertNoFiltraDetallesInternos()  : void
Verifica que un mensaje de error no filtra detalles internos del servidor (SQL, rutas de archivo, clases o trazas de excepción).
assertRespuestaApi()  : void
Verifica que la respuesta cumple el contrato mínimo de la API: JSON válido con una clave booleana 'ok'.
credenciales()  : array{0: string, 1: string}
Devuelve las credenciales de test del entorno.
idSesion()  : string|null
Devuelve el identificador de sesión actual del cookieJar, si existe.
iniciarSesion()  : void
Inicia sesión con las credenciales del entorno.
nuevoCliente()  : Client
Crea un cliente HTTP que comparte el cookieJar del test.
post()  : array{0: int, 1: array}
Ejecuta un POST contra la API y devuelve [statusCode, bodyArray].
setUp()  : void
Carga el entorno de test, el cookieJar y el cliente HTTP.
trace()  : void
Imprime una traza de ejecución con contexto, dirección y payload.

Properties

Methods

accionesAdminProvider()

public static accionesAdminProvider() : array<string|int, mixed>
Return values
array<string|int, mixed>

entradasInvalidasProvider()

public static entradasInvalidasProvider() : array<string|int, mixed>
Return values
array<string|int, mixed>

modosBorradoProvider()

public static modosBorradoProvider() : array<string|int, mixed>
Return values
array<string|int, mixed>

testAdminNoPuedeCrearUsuarioDeRolSuperior()

Un administrador no puede crear un usuario de rol superior al suyo.

public testAdminNoPuedeCrearUsuarioDeRolSuperior() : void

Se prueba la vía SIN permisos (create_user sin el campo 'permisos'), que es la que no pasa por createUsuarioConPermisos.

Tags
throws
GuzzleException
Attributes
#[Group]
'escritura'

testAdminNoPuedePromocionarPorEncimaDeSuRol()

Un administrador no puede promocionar a otro usuario por encima de su rol.

public testAdminNoPuedePromocionarPorEncimaDeSuRol() : void
Tags
throws
GuzzleException

testEntradasInvalidasNoProvocanErrorDeServidor()

Entradas inválidas deben resolverse con 4xx, nunca con un 5xx.

public testEntradasInvalidasNoProvocanErrorDeServidor(string $accion, array<string|int, mixed> $params) : void
Parameters
$accion : string
$params : array<string|int, mixed>
Tags
throws
GuzzleException
Attributes
#[DataProvider]
'entradasInvalidasProvider'

testListadoDeUsuariosNoExponeContrasenas()

El listado de usuarios no debe exponer nunca el hash de contraseña.

public testListadoDeUsuariosNoExponeContrasenas() : void
Tags
throws
GuzzleException

testNoSePuedenCrearDosUsuariosConElMismoLogin()

Crear dos veces el mismo login debe rechazarse con 409.

public testNoSePuedenCrearDosUsuariosConElMismoLogin() : void
Tags
throws
GuzzleException
Attributes
#[Group]
'escritura'

testUsuarioNoPuedeBorrarseASiMismo()

Nadie puede eliminarse ni desactivarse a sí mismo.

public testUsuarioNoPuedeBorrarseASiMismo(string $modo) : void
Parameters
$modo : string
Tags
throws
GuzzleException
Attributes
#[DataProvider]
'modosBorradoProvider'

assertNoFiltraDetallesInternos()

Verifica que un mensaje de error no filtra detalles internos del servidor (SQL, rutas de archivo, clases o trazas de excepción).

protected assertNoFiltraDetallesInternos(array<string|int, mixed> $body[, string $contexto = '' ]) : void
Parameters
$body : array<string|int, mixed>

: Cuerpo decodificado

$contexto : string = ''

: Texto identificativo para el mensaje de fallo

assertRespuestaApi()

Verifica que la respuesta cumple el contrato mínimo de la API: JSON válido con una clave booleana 'ok'.

protected assertRespuestaApi(array<string|int, mixed> $body[, string $contexto = '' ]) : void
Parameters
$body : array<string|int, mixed>

: Cuerpo decodificado

$contexto : string = ''

: Texto identificativo para el mensaje de fallo

credenciales()

Devuelve las credenciales de test del entorno.

protected credenciales([bool $admin = false ]) : array{0: string, 1: string}
Parameters
$admin : bool = false

: true para las credenciales de administrador

Return values
array{0: string, 1: string}

idSesion()

Devuelve el identificador de sesión actual del cookieJar, si existe.

protected idSesion() : string|null

Se busca por coincidencia parcial para soportar session.name personalizado.

Return values
string|null

iniciarSesion()

Inicia sesión con las credenciales del entorno.

protected iniciarSesion([bool $admin = false ]) : void

Marca el test como skipped si no están configuradas.

Parameters
$admin : bool = false

: true para iniciar como administrador

Tags
throws
GuzzleException

nuevoCliente()

Crea un cliente HTTP que comparte el cookieJar del test.

protected nuevoCliente([array<string|int, mixed> $headers = [] ]) : Client

Permite sobreescribir cabeceras (útil para probar el binding de UA).

Parameters
$headers : array<string|int, mixed> = []

: Cabeceras adicionales o sobreescritas

Return values
Client

post()

Ejecuta un POST contra la API y devuelve [statusCode, bodyArray].

protected post(string $endpoint, array<string|int, mixed> $params) : array{0: int, 1: array}
Parameters
$endpoint : string

: Punto de entrada

$params : array<string|int, mixed>

: Parametros de la peticion

Tags
throws
GuzzleException
Return values
array{0: int, 1: array}

setUp()

Carga el entorno de test, el cookieJar y el cliente HTTP.

protected setUp() : void

El cookieJar se recrea en cada test para garantizar aislamiento.

trace()

Imprime una traza de ejecución con contexto, dirección y payload.

protected trace(string $contexto, string $mensaje[, mixed|null $payload = null ]) : void

Los valores sensibles se sustituyen por '***'.

Parameters
$contexto : string

: Contexto del mensaje

$mensaje : string

: Mensaje

$payload : mixed|null = null

: Carga del mensaje


        
On this page

Search results