Tenho um teste de unidade para uma função segura de URL Base64 e quero ter certeza de que ele está lidando corretamente com três coisas:
- Substitui
+
por-
- Substitui
/
por_
- Acabamentos
=
na ponta
Quero que meu teste unitário tenha uma string que produza +
e termine com um =
da string. Mas não estou conseguindo criar o /
.
public void ToBase64Url_ValidInput_ReturnsExpectedEncodedString()
{
// Arrange
var allAciiChars = "\0\u0001\u0002\u0003\u0004\u0005\u0006\a\b\t\n\v\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007f";
var inputBytes = Encoding.UTF8.GetBytes(allAciiChars);
var expectedEncodedString = "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0-P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn8";
// Act
var result = inputBytes.ToBase64Url();
// Assert
Assert.Equal(expectedEncodedString, result);
}
O que preciso atualizar na string para produzir a barra quando ela for convertida para base64?
Você precisa obter o binário 111111 em uma das etapas da codificação (antes da conversão final de binário para texto). Se você triplicar o ponto de interrogação na sua string de teste, deverá obter uma barra. Por exemplo: