1 package com.google.protobuf; 2 3 import static com.google.common.truth.Truth.assertThat; 4 5 import protobuf_unittest.UnittestProto; 6 import org.junit.Test; 7 import org.junit.runner.RunWith; 8 import org.junit.runners.JUnit4; 9 10 @RunWith(JUnit4.class) 11 public final class LegacyUnredactedTextFormatTest { 12 13 @Test legacyUnredactedTextFormatMessage_defaultMessageIsEmpty()14 public void legacyUnredactedTextFormatMessage_defaultMessageIsEmpty() { 15 UnittestProto.TestEmptyMessage message = UnittestProto.TestEmptyMessage.getDefaultInstance(); 16 assertThat(LegacyUnredactedTextFormat.legacyUnredactedMultilineString(message)).isEmpty(); 17 18 UnittestProto.TestEmptyMessage singleLineMessage = 19 UnittestProto.TestEmptyMessage.getDefaultInstance(); 20 assertThat(LegacyUnredactedTextFormat.legacyUnredactedSingleLineString(singleLineMessage)) 21 .isEmpty(); 22 } 23 24 @Test legacyUnredactedTextFormatMessage_hasExpectedFormats()25 public void legacyUnredactedTextFormatMessage_hasExpectedFormats() { 26 UnittestProto.RedactedFields message = 27 UnittestProto.RedactedFields.newBuilder() 28 .setOptionalRedactedString("redacted") 29 .setOptionalUnredactedString("hello") 30 .setOptionalRedactedMessage( 31 UnittestProto.TestNestedMessageRedaction.newBuilder() 32 .setOptionalRedactedNestedString("nested") 33 .build()) 34 .setOptionalUnredactedMessage( 35 UnittestProto.TestNestedMessageRedaction.newBuilder() 36 .setOptionalUnredactedNestedString("unredacted") 37 .build()) 38 .build(); 39 assertThat(LegacyUnredactedTextFormat.legacyUnredactedMultilineString(message)) 40 .isEqualTo( 41 "optional_redacted_string: \"redacted\"\n" 42 + "optional_unredacted_string: \"hello\"\n" 43 + "optional_redacted_message {\n" 44 + " optional_redacted_nested_string: \"nested\"\n" 45 + "}\n" 46 + "optional_unredacted_message {\n" 47 + " optional_unredacted_nested_string: \"unredacted\"\n" 48 + "}\n"); 49 assertThat(LegacyUnredactedTextFormat.legacyUnredactedSingleLineString(message)) 50 .isEqualTo( 51 "optional_redacted_string: \"redacted\"" 52 + " optional_unredacted_string: \"hello\"" 53 + " optional_redacted_message {" 54 + " optional_redacted_nested_string: \"nested\"" 55 + " }" 56 + " optional_unredacted_message {" 57 + " optional_unredacted_nested_string: \"unredacted\"" 58 + " }"); 59 } 60 makeUnknownFieldSet()61 private UnknownFieldSet makeUnknownFieldSet() { 62 return UnknownFieldSet.newBuilder() 63 .addField( 64 5, 65 UnknownFieldSet.Field.newBuilder() 66 .addVarint(1) 67 .addFixed32(2) 68 .addFixed64(3) 69 .addLengthDelimited(ByteString.copyFromUtf8("4")) 70 .addLengthDelimited( 71 UnknownFieldSet.newBuilder() 72 .addField(12, UnknownFieldSet.Field.newBuilder().addVarint(6).build()) 73 .build() 74 .toByteString()) 75 .addGroup( 76 UnknownFieldSet.newBuilder() 77 .addField(10, UnknownFieldSet.Field.newBuilder().addVarint(5).build()) 78 .build()) 79 .build()) 80 .addField( 81 8, UnknownFieldSet.Field.newBuilder().addVarint(1).addVarint(2).addVarint(3).build()) 82 .addField( 83 15, 84 UnknownFieldSet.Field.newBuilder() 85 .addVarint(0xABCDEF1234567890L) 86 .addFixed32(0xABCD1234) 87 .addFixed64(0xABCDEF1234567890L) 88 .build()) 89 .build(); 90 } 91 92 @Test legacyUnredactedTextFormatUnknownFields_hasExpectedFormats()93 public void legacyUnredactedTextFormatUnknownFields_hasExpectedFormats() { 94 UnknownFieldSet unknownFields = makeUnknownFieldSet(); 95 assertThat(LegacyUnredactedTextFormat.legacyUnredactedMultilineString(unknownFields)) 96 .isEqualTo( 97 "5: 1\n" 98 + "5: 0x00000002\n" 99 + "5: 0x0000000000000003\n" 100 + "5: \"4\"\n" 101 + "5: {\n" 102 + " 12: 6\n" 103 + "}\n" 104 + "5 {\n" 105 + " 10: 5\n" 106 + "}\n" 107 + "8: 1\n" 108 + "8: 2\n" 109 + "8: 3\n" 110 + "15: 12379813812177893520\n" 111 + "15: 0xabcd1234\n" 112 + "15: 0xabcdef1234567890\n"); 113 assertThat(LegacyUnredactedTextFormat.legacyUnredactedSingleLineString(unknownFields)) 114 .isEqualTo( 115 "5: 1" 116 + " 5: 0x00000002" 117 + " 5: 0x0000000000000003" 118 + " 5: \"4\"" 119 + " 5: {" 120 + " 12: 6" 121 + " }" 122 + " 5 {" 123 + " 10: 5" 124 + " }" 125 + " 8: 1" 126 + " 8: 2" 127 + " 8: 3" 128 + " 15: 12379813812177893520" 129 + " 15: 0xabcd1234" 130 + " 15: 0xabcdef1234567890"); 131 } 132 } 133