ATTENTION : Ce contenu est DÉSACTIVÉ. Il est invisible pour les visiteurs.
Nivel de dificultad
Principiante
Publicado el :
Attention : Este código requiere privilegios de administrador.
El script procede en varias etapas clave: 1) Generación de un nombre de grupo único y creación del grupo correspondiente a través de la macro `%ms_creategroup`. 2) Recuperación de todos los grupos del sistema usando `%ms_getgroups` y validación de la presencia del grupo recién creado. El identificador del grupo (GID) se extrae dinámicamente. 3) Adición de un usuario específico a este grupo a través de `%ms_adduser2group`. 4) Verificación final de la pertenencia del usuario al grupo filtrando los grupos por usuario (`%ms_getgroups` con la opción `user=`) y confirmando la presencia del GID. A lo largo del proceso, se utilizan macros de aserción (`%mp_assert`, `%mp_assertdsobs`, `%mp_assertscope`) para garantizar la integridad y el éxito de las operaciones, registrando los resultados de las pruebas en el conjunto de datos `work.test_results`. Este script es esencial para las tareas de administración y prueba de los derechos de acceso.
Análisis de datos
Type : CREATION_INTERNE
El script no se basa en conjuntos de datos externos predefinidos. Genera y manipula conjuntos de datos temporales (`work.test1`, `work.test3`, `work.test_results`) para almacenar la información recuperada de los grupos del sistema y los resultados de las aserciones. La interacción principal se realiza con los metadatos de seguridad y de usuario del entorno SAS Viya.
1 Bloque de código
Macro d'Administration
Explicación : Este bloque inicializa el proceso generando un nombre de grupo único de 8 caracteres a través de `%mf_getuniquename`. Este nombre es utilizado posteriormente por la macro `%ms_creategroup` para crear un nuevo grupo de usuarios en el entorno SAS Viya. El parámetro `desc` asigna una descripción al grupo y `mdebug` activa el modo de depuración. El parámetro `outds=test1` indica que la información relativa a la creación del grupo puede escribirse en un conjunto de datos temporal `test1` (aunque `ms_creategroup` puede no crear observaciones en `outds` para una creación simple exitosa, a menudo se usa para capturar información de estado o error).
Explicación : Este bloque captura el estado inicial del entorno para probarlo (`%mp_assertscope(SNAPSHOT)`). Luego, se invoca la macro administrativa `%ms_getgroups` para recuperar todos los grupos existentes en el sistema, cuyos detalles se almacenan en el conjunto de datos `work.test1`. Finalmente, `%mp_assertscope(COMPARE)` compara el estado actual del entorno con la instantánea inicial. La opción `ignorelist` permite excluir ciertas macrovariables de la comparación, a menudo porque pueden variar naturalmente sin indicar un fallo de la prueba. El objetivo es asegurar que la recuperación de los grupos se realizó según lo previsto y que ningún efecto secundario inesperado modificó el entorno global.
Explicación : Este segmento verifica la correcta creación del grupo. Primero, `%mp_assertdsobs` asegura que el conjunto de datos `work.test1` (que contiene los grupos) contenga al menos una observación, indicando que no está vacío. Luego, se utiliza un `DATA _NULL_` para recorrer `work.test1`. Para cada observación, todas las variables se muestran en el log (`putlog (_all_)(=)`). Si el nombre del grupo encontrado en `work.test1` coincide con el nombre del grupo creado (`&group`), la macro-variable `test2` se establece en 1 y el identificador del grupo (`groupid`) se almacena en la macro-variable `gid` para su uso posterior. Finalmente, `%mp_assert` valida que `test2` sea igual a 1, confirmando que el grupo se ha creado con éxito y se ha encontrado en la lista de grupos del sistema. El resultado de esta aserción se registra en `work.test_results`.
¡Copiado!
%mp_assertdsobs(work.test1,test=ATLEAST 1)
%let test2=0;
%put &=group;
data _null_;
set work.test1;
putlog (_all_)(=);
if upcase(name)="%upcase(&group)" then do;
putlog "&group found!";
call symputx('test2',1);
call symputx('gid',groupid); /* used in next test */
end;
run;
%mp_assert(
iftrue=("&test2"="1"),
desc=Checking group was created,
outds=work.test_results
)
1
%mp_assertdsobs(work.test1,test=ATLEAST 1)
2
3
%let test2=0;
4
%put &=group;
5
DATA _null_;
6
SET work.test1;
7
putlog (_all_)(=);
8
IF upcase(name)="%upcase(&group)"THENDO;
9
putlog "&group found!";
10
call symputx('test2',1);
11
call symputx('gid',groupid); /* used in next test */
12
END;
13
RUN;
14
15
%mp_assert(
16
iftrue=("&test2"="1"),
17
desc=Checking group was created,
18
outds=work.test_results
19
)
4 Bloque de código
Macro d'Administration / DATA STEP / Assertion Data
Explicación : Este bloque finaliza la prueba verificando la funcionalidad de añadir un usuario a un grupo. Se llama a la macro `%ms_adduser2group` para asociar un usuario (con el identificador `uid=1`) al grupo cuyo identificador está almacenado en `&gid`. Luego, se reutiliza `%ms_getgroups`, esta vez con el parámetro `user=secretuser`, para recuperar los grupos a los que 'secretuser' está asignado explícitamente. Los resultados se guardan en `work.test3`. Un `DATA _NULL_` analiza `work.test3` para determinar si el `groupid` creado está presente en la lista de grupos de 'secretuser', actualizando `test3` en consecuencia. Finalmente, `%mp_assert` asegura que `test3` sea 1, confirmando que el usuario se ha añadido correctamente al grupo y que esta pertenencia es verificable. Este resultado también se añade a `work.test_results`.
¡Copiado!
/* now check if the filter for the groups for a user works */
/* add a member */
%ms_adduser2group(uid=1,gid=&gid)
%ms_getgroups(user=secretuser,outds=work.test3)
%let test3=0;
data _null_;
set work.test3;
if groupid=&gid then call symputx('test3',1);
run;
%mp_assert(
iftrue=("&test3"="1"),
desc=Checking group list was returned for a user,
outds=work.test_results
)
1
/* now check if the filter for the groups for a user works */
2
3
/* add a member */
4
%ms_adduser2group(uid=1,gid=&gid)
5
6
%ms_getgroups(user=secretuser,outds=work.test3)
7
8
%let test3=0;
9
DATA _null_;
10
SET work.test3;
11
IF groupid=&gid THEN call symputx('test3',1);
12
RUN;
13
14
%mp_assert(
15
iftrue=("&test3"="1"),
16
desc=Checking group list was returned for a user,
17
outds=work.test_results
18
)
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : El script utiliza macros (ej: `ms_creategroup`, `ms_getgroups`, `mp_assert`) que probablemente pertenecen a bibliotecas de macros SAS sujetas a derechos de autor, como sugiere la estructura de nombres y las referencias en los comentarios (potencialmente de HMS Analytical Software GmbH o SAS Institute Inc., como en `macro_without_brief_tag.sas` y `mfv_existfile.json`).
Documentación relacionada
Aucune documentation spécifique pour cette catégorie.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.