Skip to content

Commit 6c51db6

Browse files
committed
feat: wire PiiMasker into both repositories for email, phone, and address
1 parent 63570f6 commit 6c51db6

4 files changed

Lines changed: 37 additions & 14 deletions

File tree

src/SEBT.Portal.Infrastructure/Repositories/HouseholdRepository.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,15 @@ private static HouseholdData ApplyPiiVisibility(HouseholdData source, PiiVisibil
105105
State = source.AddressOnFile.State,
106106
PostalCode = source.AddressOnFile.PostalCode
107107
}
108-
: null
108+
: source.AddressOnFile != null
109+
? new Address
110+
{
111+
StreetAddress1 = PiiMasker.MaskStreetAddress(source.AddressOnFile.StreetAddress1, source.AddressOnFile.StreetAddress2),
112+
City = source.AddressOnFile.City,
113+
State = source.AddressOnFile.State,
114+
PostalCode = source.AddressOnFile.PostalCode
115+
}
116+
: null
109117
};
110118
}
111119

src/SEBT.Portal.Infrastructure/Repositories/MockHouseholdRepository.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -475,8 +475,8 @@ private static HouseholdData CreateCopy(HouseholdData source, PiiVisibility piiV
475475
{
476476
return source with
477477
{
478-
Email = piiVisibility.IncludeEmail ? source.Email : null,
479-
Phone = piiVisibility.IncludePhone ? source.Phone : null,
478+
Email = piiVisibility.IncludeEmail ? source.Email : PiiMasker.MaskEmail(source.Email),
479+
Phone = piiVisibility.IncludePhone ? source.Phone : PiiMasker.MaskPhone(source.Phone),
480480
AddressOnFile = piiVisibility.IncludeAddress && source.AddressOnFile != null
481481
? new Address
482482
{
@@ -486,7 +486,15 @@ private static HouseholdData CreateCopy(HouseholdData source, PiiVisibility piiV
486486
State = source.AddressOnFile.State,
487487
PostalCode = source.AddressOnFile.PostalCode
488488
}
489-
: null,
489+
: source.AddressOnFile != null
490+
? new Address
491+
{
492+
StreetAddress1 = PiiMasker.MaskStreetAddress(source.AddressOnFile.StreetAddress1, source.AddressOnFile.StreetAddress2),
493+
City = source.AddressOnFile.City,
494+
State = source.AddressOnFile.State,
495+
PostalCode = source.AddressOnFile.PostalCode
496+
}
497+
: null,
490498
BenefitIssuanceType = source.BenefitIssuanceType,
491499
UserProfile = source.UserProfile != null
492500
? new UserProfile

test/SEBT.Portal.Tests/Unit/Repositories/HouseholdRepositoryTests.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ public async Task GetHouseholdByEmailAsync_WhenPiiExcludesPhone_ReturnsMaskedPho
168168
}
169169

170170
[Fact]
171-
public async Task GetHouseholdByEmailAsync_WhenPiiExcludesAddress_ReturnsNullAddress()
171+
public async Task GetHouseholdByEmailAsync_WhenPiiExcludesAddress_ReturnsMaskedAddress()
172172
{
173173
_summerEbtCaseService
174174
.GetHouseholdByGuardianEmailAsync(Arg.Any<string>(), Arg.Any<PluginPiiVisibility>(), Arg.Any<PluginIdentityAssuranceLevel>(), Arg.Any<CancellationToken>())
@@ -191,7 +191,12 @@ public async Task GetHouseholdByEmailAsync_WhenPiiExcludesAddress_ReturnsNullAdd
191191
var result = await _repository.GetHouseholdByEmailAsync("u@e.com", noAddressPii, UserIalLevel.IAL1plus);
192192

193193
Assert.NotNull(result);
194-
Assert.Null(result.AddressOnFile);
194+
Assert.NotNull(result.AddressOnFile);
195+
Assert.Equal("****", result.AddressOnFile.StreetAddress1);
196+
Assert.Null(result.AddressOnFile.StreetAddress2);
197+
Assert.Equal("Denver", result.AddressOnFile.City);
198+
Assert.Equal("CO", result.AddressOnFile.State);
199+
Assert.Equal("80202", result.AddressOnFile.PostalCode);
195200
}
196201

197202
[Fact]

test/SEBT.Portal.Tests/Unit/Repositories/MockHouseholdRepositoryTests.cs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ public async Task GetHouseholdByEmailAsync_WhenIncludeAddressIsTrue_ReturnsAddre
180180
}
181181

182182
[Fact]
183-
public async Task GetHouseholdByEmailAsync_WhenIncludeAddressIsFalse_DoesNotReturnAddress()
183+
public async Task GetHouseholdByEmailAsync_WhenIncludeAddressIsFalse_ReturnsMaskedAddress()
184184
{
185185
// Arrange
186186
var email = "verified@example.com";
@@ -190,7 +190,9 @@ public async Task GetHouseholdByEmailAsync_WhenIncludeAddressIsFalse_DoesNotRetu
190190

191191
// Assert
192192
Assert.NotNull(result);
193-
Assert.Null(result.AddressOnFile);
193+
Assert.NotNull(result.AddressOnFile);
194+
Assert.Equal("****", result.AddressOnFile.StreetAddress1);
195+
Assert.Equal("Denver", result.AddressOnFile.City);
194196
}
195197

196198
[Fact]
@@ -429,7 +431,7 @@ public async Task GetHouseholdByEmailAsync_MinimalScenario_HasCorrectData()
429431
}
430432

431433
[Fact]
432-
public async Task GetHouseholdByEmailAsync_WhenIncludeEmailFalse_ReturnsEmptyEmail()
434+
public async Task GetHouseholdByEmailAsync_WhenIncludeEmailFalse_ReturnsMaskedEmail()
433435
{
434436
// Arrange
435437
var email = "verified@example.com";
@@ -440,15 +442,15 @@ public async Task GetHouseholdByEmailAsync_WhenIncludeEmailFalse_ReturnsEmptyEma
440442

441443
// Assert
442444
Assert.NotNull(result);
443-
Assert.Null(result.Email);
445+
Assert.Equal("v***@example.com", result.Email);
444446
Assert.NotNull(result.Phone);
445447
}
446448

447449
[Fact]
448-
public async Task GetHouseholdByEmailAsync_WhenIncludePhoneFalse_ReturnsNullPhone()
450+
public async Task GetHouseholdByEmailAsync_WhenIncludePhoneFalse_ReturnsMaskedPhone()
449451
{
450-
// Arrange
451-
var email = "verified@example.com";
452+
// Arrange — non-co-loaded scenario has an explicit phone number
453+
var email = "non-co-loaded@example.com";
452454
var noPhoneVisibility = new PiiVisibility(IncludeAddress: true, IncludeEmail: true, IncludePhone: false);
453455

454456
// Act
@@ -457,7 +459,7 @@ public async Task GetHouseholdByEmailAsync_WhenIncludePhoneFalse_ReturnsNullPhon
457459
// Assert
458460
Assert.NotNull(result);
459461
Assert.Equal(email, result.Email);
460-
Assert.Null(result.Phone);
462+
Assert.Equal("***-***-4567", result.Phone);
461463
}
462464

463465
[Fact]

0 commit comments

Comments
 (0)