Adapt welcome wallpaper to SGU gender
This commit is contained in:
@@ -133,6 +133,64 @@ public sealed class SguProfileParserTests
|
||||
Assert.Null(profile.Email);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("ctl00_contenedor_ddlsexo", "ctl00$contenedor$ddlsexo", "1", InstitutionalGender.Male)]
|
||||
[InlineData("alternate-id", "ctl00$contenedor$ddlsexo", "2", InstitutionalGender.Female)]
|
||||
public void ParsesStaffGenderFromTheSelectedPersonalDataOption(
|
||||
string id,
|
||||
string name,
|
||||
string selectedValue,
|
||||
InstitutionalGender expected)
|
||||
{
|
||||
string html = $"""
|
||||
<select id="{id}" name="{name}">
|
||||
<option value="">Seleccione...</option>
|
||||
<option value="1"{(selectedValue == "1" ? " selected=\"selected\"" : string.Empty)}>Masculino</option>
|
||||
<option value="2"{(selectedValue == "2" ? " selected=\"selected\"" : string.Empty)}>Femenino</option>
|
||||
</select>
|
||||
""";
|
||||
|
||||
InstitutionalProfile? profile = SguProfileParser.ParseAdministrativePersonal(html);
|
||||
|
||||
Assert.NotNull(profile);
|
||||
Assert.Equal(expected, profile.Gender);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("M", InstitutionalGender.Male)]
|
||||
[InlineData("f", InstitutionalGender.Female)]
|
||||
public void ParsesStudentGenderFromTheInformationSpan(
|
||||
string source,
|
||||
InstitutionalGender expected)
|
||||
{
|
||||
string html = $"""
|
||||
<span id="ctl00_contenedor_HistorialAlumno1_lblClaveAlumnoHP">123456</span>
|
||||
<span id="ctl00_contenedor_HistorialAlumno1_lblSexoAlumnoHP">{source}</span>
|
||||
""";
|
||||
|
||||
InstitutionalProfile? profile = SguProfileParser.ParseStudent(html, "123456");
|
||||
|
||||
Assert.NotNull(profile);
|
||||
Assert.Equal(expected, profile.Gender);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void IgnoresUnknownGenderValuesWithoutFailingProfileParsing()
|
||||
{
|
||||
const string html = """
|
||||
<input id="ctl00_contenedor_txtNombre" value="PERSONA" />
|
||||
<select id="ctl00_contenedor_ddlsexo">
|
||||
<option selected="selected" value="9">SIN CLASIFICAR</option>
|
||||
</select>
|
||||
""";
|
||||
|
||||
InstitutionalProfile? profile = SguProfileParser.ParseAdministrativePersonal(html);
|
||||
|
||||
Assert.NotNull(profile);
|
||||
Assert.Equal("Persona", profile.DisplayName);
|
||||
Assert.Null(profile.Gender);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesAdministrativeAddressFromInputsAndSelectedOptions()
|
||||
{
|
||||
@@ -182,7 +240,8 @@ public sealed class SguProfileParserTests
|
||||
InstitutionalProfile personal = new(
|
||||
DisplayName: "María del Carmen de la Fuente",
|
||||
GivenName: "María del Carmen",
|
||||
Surname: "de la Fuente");
|
||||
Surname: "de la Fuente",
|
||||
Gender: InstitutionalGender.Female);
|
||||
InstitutionalProfile location = new(
|
||||
StreetAddress: "Calle Uno 10",
|
||||
City: "Ciudad de México",
|
||||
@@ -200,6 +259,7 @@ public sealed class SguProfileParserTests
|
||||
Assert.Equal("Ingeniería", combined.Department);
|
||||
Assert.Equal("Calle Uno 10", combined.StreetAddress);
|
||||
Assert.Equal("01000", combined.PostalCode);
|
||||
Assert.Equal(InstitutionalGender.Female, combined.Gender);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -215,6 +275,7 @@ public sealed class SguProfileParserTests
|
||||
<span id="ctl00_contenedor_HistorialAlumno1_lblCorreoAlumnoHP">
|
||||
<a href="mailto:alumna@lasalle.mx">ALUMNA@LASALLE.MX</a>
|
||||
</span>
|
||||
<span id="ctl00_contenedor_HistorialAlumno1_lblSexoAlumnoHP">F</span>
|
||||
<span id="ctl00_contenedor_HistorialAlumno1_lblCURPAlumnoHP">
|
||||
DATO-SENSIBLE-QUE-NO-DEBE-EXTRAERSE
|
||||
</span>
|
||||
@@ -262,6 +323,7 @@ public sealed class SguProfileParserTests
|
||||
Assert.Equal("Ciudad de México", profile.City);
|
||||
Assert.Equal("Ciudad de México", profile.State);
|
||||
Assert.Equal("08500", profile.PostalCode);
|
||||
Assert.Equal(InstitutionalGender.Female, profile.Gender);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
using SGU.AuthBroker.Core.Profiles;
|
||||
using SGU.AuthBroker.Services;
|
||||
using Xunit;
|
||||
|
||||
namespace SGU.AuthBroker.Tests;
|
||||
|
||||
public sealed class ActiveDirectorySynchronizerTests
|
||||
{
|
||||
[Fact]
|
||||
public void GenderMetadataPreservesUnmanagedNotesAndReplacesItsManagedLine()
|
||||
{
|
||||
const string existing = " Responsable de laboratorio \r\n\r\nSGU-Gender: Male\r\nTurno vespertino";
|
||||
|
||||
string? updated = ActiveDirectorySynchronizer.MergeGenderMetadata(
|
||||
existing,
|
||||
InstitutionalGender.Female);
|
||||
|
||||
Assert.Equal(
|
||||
" Responsable de laboratorio \r\n\r\nTurno vespertino\r\nSGU-Gender: Female",
|
||||
updated);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GenderMetadataDoesNotTruncateAnExistingFullNotesField()
|
||||
{
|
||||
string existing = new('x', 1024);
|
||||
|
||||
string? updated = ActiveDirectorySynchronizer.MergeGenderMetadata(
|
||||
existing,
|
||||
InstitutionalGender.Male);
|
||||
|
||||
Assert.Null(updated);
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ using System.Net.Http.Headers;
|
||||
using Microsoft.Extensions.Logging.Abstractions;
|
||||
using SGU.AuthBroker.Core.Authentication;
|
||||
using SGU.AuthBroker.Core.Identity;
|
||||
using SGU.AuthBroker.Core.Profiles;
|
||||
using SGU.AuthBroker.Options;
|
||||
using SGU.AuthBroker.Services;
|
||||
using Xunit;
|
||||
@@ -132,6 +133,10 @@ public sealed class NtlmCredentialValidatorTests
|
||||
<input id="ctl00_contenedor_txtNombre" value="MARÍA DEL CARMEN" />
|
||||
<input id="ctl00_contenedor_txtApaterno" value="DE LA FUENTE" />
|
||||
<input id="ctl00_contenedor_txtAmaterno" value="O'CONNOR" />
|
||||
<select name="ctl00$contenedor$ddlsexo">
|
||||
<option value="1">Masculino</option>
|
||||
<option selected="selected" value="2">Femenino</option>
|
||||
</select>
|
||||
"""),
|
||||
Response(
|
||||
HttpStatusCode.OK,
|
||||
@@ -168,6 +173,7 @@ public sealed class NtlmCredentialValidatorTests
|
||||
Assert.Equal("Álvaro Obregón", result.Profile.City);
|
||||
Assert.Equal("Ciudad de México", result.Profile.State);
|
||||
Assert.Equal("01000", result.Profile.PostalCode);
|
||||
Assert.Equal(InstitutionalGender.Female, result.Profile.Gender);
|
||||
Assert.Equal(
|
||||
[
|
||||
"/psulsa/",
|
||||
@@ -224,6 +230,10 @@ public sealed class NtlmCredentialValidatorTests
|
||||
<input id="ctl00_contenedor_txtNombre" value="MARÍA DEL CARMEN" />
|
||||
<input id="ctl00_contenedor_txtApaterno" value="DE LA FUENTE" />
|
||||
<input id="ctl00_contenedor_txtAmaterno" value="O'CONNOR" />
|
||||
<select id="ctl00_contenedor_ddlsexo">
|
||||
<option selected="selected" value="1">Masculino</option>
|
||||
<option value="2">Femenino</option>
|
||||
</select>
|
||||
"""),
|
||||
Response(
|
||||
HttpStatusCode.OK,
|
||||
@@ -262,6 +272,7 @@ public sealed class NtlmCredentialValidatorTests
|
||||
Assert.Equal("Álvaro Obregón", result.Profile.City);
|
||||
Assert.Equal("Ciudad de México", result.Profile.State);
|
||||
Assert.Equal("01000", result.Profile.PostalCode);
|
||||
Assert.Equal(InstitutionalGender.Male, result.Profile.Gender);
|
||||
Assert.Equal(
|
||||
[
|
||||
"/psulsa/",
|
||||
|
||||
Reference in New Issue
Block a user