tunnel: Add an initial set of unit tests
Includes a control set of broken configuration files that we attempt to parse and verify that the parser fails in a predictable and consistent manner. Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
		
							parent
							
								
									6c8a4a6a28
								
							
						
					
					
						commit
						093139bc91
					
				@ -9,7 +9,6 @@
 | 
				
			|||||||
      </option>
 | 
					      </option>
 | 
				
			||||||
      <option name="nonThreadSafeTypes" value="" />
 | 
					      <option name="nonThreadSafeTypes" value="" />
 | 
				
			||||||
    </inspection_tool>
 | 
					    </inspection_tool>
 | 
				
			||||||
    <inspection_tool class="AndroidLintGoogleAppIndexingWarning" enabled="false" level="WARNING" enabled_by_default="false" />
 | 
					 | 
				
			||||||
    <inspection_tool class="AndroidLintIconExpectedSize" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="AndroidLintIconExpectedSize" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="AndroidLintNegativeMargin" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="AndroidLintNegativeMargin" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="AndroidLintTypographyQuotes" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="AndroidLintTypographyQuotes" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
@ -40,7 +39,9 @@
 | 
				
			|||||||
    <inspection_tool class="AssignmentToLambdaParameter" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="AssignmentToLambdaParameter" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="AssignmentToSuperclassField" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="AssignmentToSuperclassField" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="AssignmentUsedAsCondition" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="AssignmentUsedAsCondition" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="AutoCloseableResource" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="AutoCloseableResource" enabled="true" level="WARNING" enabled_by_default="true">
 | 
				
			||||||
 | 
					      <option name="METHOD_MATCHER_CONFIG" value="java.util.Formatter,format,java.io.Writer,append,com.google.common.base.Preconditions,checkNotNull,org.hibernate.Session,close,java.io.PrintWriter,printf,java.util.HashMap,put,java.util.Map,put" />
 | 
				
			||||||
 | 
					    </inspection_tool>
 | 
				
			||||||
    <inspection_tool class="BadExceptionCaught" enabled="true" level="WARNING" enabled_by_default="true">
 | 
					    <inspection_tool class="BadExceptionCaught" enabled="true" level="WARNING" enabled_by_default="true">
 | 
				
			||||||
      <option name="exceptionsString" value="" />
 | 
					      <option name="exceptionsString" value="" />
 | 
				
			||||||
      <option name="exceptions">
 | 
					      <option name="exceptions">
 | 
				
			||||||
@ -59,6 +60,9 @@
 | 
				
			|||||||
    <inspection_tool class="CallToStringConcatCanBeReplacedByOperator" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="CallToStringConcatCanBeReplacedByOperator" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="CannotResolve" enabled="true" level="ERROR" enabled_by_default="true" />
 | 
					    <inspection_tool class="CannotResolve" enabled="true" level="ERROR" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="CastConflictsWithInstanceof" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="CastConflictsWithInstanceof" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
 | 
					    <inspection_tool class="CatchMayIgnoreException" enabled="true" level="WARNING" enabled_by_default="true">
 | 
				
			||||||
 | 
					      <option name="m_ignoreCatchBlocksWithComments" value="false" />
 | 
				
			||||||
 | 
					    </inspection_tool>
 | 
				
			||||||
    <inspection_tool class="ChainedEquality" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="ChainedEquality" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="ClassInitializer" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="ClassInitializer" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="ClassNameDiffersFromFileName" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="ClassNameDiffersFromFileName" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
@ -103,9 +107,6 @@
 | 
				
			|||||||
    <inspection_tool class="DoubleLiteralMayBeFloatLiteral" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="DoubleLiteralMayBeFloatLiteral" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="DuplicateAlternationBranch" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="DuplicateAlternationBranch" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="DuplicateBooleanBranch" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="DuplicateBooleanBranch" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="DuplicateCondition" enabled="true" level="WARNING" enabled_by_default="true">
 | 
					 | 
				
			||||||
      <option name="ignoreSideEffectConditions" value="true" />
 | 
					 | 
				
			||||||
    </inspection_tool>
 | 
					 | 
				
			||||||
    <inspection_tool class="DuplicateDeclarations" enabled="true" level="ERROR" enabled_by_default="true" />
 | 
					    <inspection_tool class="DuplicateDeclarations" enabled="true" level="ERROR" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="DynamicRegexReplaceableByCompiledPattern" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="DynamicRegexReplaceableByCompiledPattern" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="ElementOnlyUsedFromTestCode" enabled="false" level="WARNING" enabled_by_default="false" />
 | 
					    <inspection_tool class="ElementOnlyUsedFromTestCode" enabled="false" level="WARNING" enabled_by_default="false" />
 | 
				
			||||||
@ -196,7 +197,6 @@
 | 
				
			|||||||
    <inspection_tool class="ImplicitSubclassInspection" enabled="false" level="ERROR" enabled_by_default="false" />
 | 
					    <inspection_tool class="ImplicitSubclassInspection" enabled="false" level="ERROR" enabled_by_default="false" />
 | 
				
			||||||
    <inspection_tool class="IncompatibleTypes" enabled="true" level="ERROR" enabled_by_default="true" />
 | 
					    <inspection_tool class="IncompatibleTypes" enabled="true" level="ERROR" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="InitializerIssues" enabled="true" level="ERROR" enabled_by_default="true" />
 | 
					    <inspection_tool class="InitializerIssues" enabled="true" level="ERROR" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="InnerClassMayBeStatic" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					 | 
				
			||||||
    <inspection_tool class="InnerClassReferencedViaSubclass" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="InnerClassReferencedViaSubclass" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="InnerClassVariableHidesOuterClassVariable" enabled="true" level="WARNING" enabled_by_default="true">
 | 
					    <inspection_tool class="InnerClassVariableHidesOuterClassVariable" enabled="true" level="WARNING" enabled_by_default="true">
 | 
				
			||||||
      <option name="m_ignoreInvisibleFields" value="true" />
 | 
					      <option name="m_ignoreInvisibleFields" value="true" />
 | 
				
			||||||
@ -215,7 +215,6 @@
 | 
				
			|||||||
    <inspection_tool class="InstanceofThis" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="InstanceofThis" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="InstantiationOfUtilityClass" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="InstantiationOfUtilityClass" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="IntLiteralMayBeLongLiteral" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="IntLiteralMayBeLongLiteral" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="IntegerDivisionInFloatingPointContext" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					 | 
				
			||||||
    <inspection_tool class="IntegerTypeRequired" enabled="true" level="ERROR" enabled_by_default="true" />
 | 
					    <inspection_tool class="IntegerTypeRequired" enabled="true" level="ERROR" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="InterfaceMayBeAnnotatedFunctional" enabled="true" level="INFORMATION" enabled_by_default="true" />
 | 
					    <inspection_tool class="InterfaceMayBeAnnotatedFunctional" enabled="true" level="INFORMATION" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="InterfaceNamingConvention" enabled="false" level="WARNING" enabled_by_default="false">
 | 
					    <inspection_tool class="InterfaceNamingConvention" enabled="false" level="WARNING" enabled_by_default="false">
 | 
				
			||||||
@ -294,6 +293,7 @@
 | 
				
			|||||||
      <option name="ignoreForLoopDeclarations" value="true" />
 | 
					      <option name="ignoreForLoopDeclarations" value="true" />
 | 
				
			||||||
    </inspection_tool>
 | 
					    </inspection_tool>
 | 
				
			||||||
    <inspection_tool class="MultipleTopLevelClassesInFile" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="MultipleTopLevelClassesInFile" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
 | 
					    <inspection_tool class="MultipleVariablesInDeclaration" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="NamedResource" enabled="true" level="ERROR" enabled_by_default="true" />
 | 
					    <inspection_tool class="NamedResource" enabled="true" level="ERROR" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="NativeMethodNamingConvention" enabled="false" level="WARNING" enabled_by_default="false" />
 | 
					    <inspection_tool class="NativeMethodNamingConvention" enabled="false" level="WARNING" enabled_by_default="false" />
 | 
				
			||||||
    <inspection_tool class="NegatedConditional" enabled="true" level="WARNING" enabled_by_default="true">
 | 
					    <inspection_tool class="NegatedConditional" enabled="true" level="WARNING" enabled_by_default="true">
 | 
				
			||||||
@ -347,7 +347,6 @@
 | 
				
			|||||||
    <inspection_tool class="OverriddenMethodCallDuringObjectConstruction" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="OverriddenMethodCallDuringObjectConstruction" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="PackageInfoWithoutPackage" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="PackageInfoWithoutPackage" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="PointerTypeRequired" enabled="true" level="ERROR" enabled_by_default="true" />
 | 
					    <inspection_tool class="PointerTypeRequired" enabled="true" level="ERROR" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="PointlessNullCheck" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					 | 
				
			||||||
    <inspection_tool class="ProblematicVarargsMethodOverride" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="ProblematicVarargsMethodOverride" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="ProtectedField" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="ProtectedField" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="ProtectedInnerClass" enabled="true" level="WARNING" enabled_by_default="true">
 | 
					    <inspection_tool class="ProtectedInnerClass" enabled="true" level="WARNING" enabled_by_default="true">
 | 
				
			||||||
@ -394,7 +393,13 @@
 | 
				
			|||||||
    <inspection_tool class="SizeReplaceableByIsEmpty" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="SizeReplaceableByIsEmpty" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="StaticCallOnSubclass" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="StaticCallOnSubclass" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="StaticFieldReferenceOnSubclass" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="StaticFieldReferenceOnSubclass" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="StaticImport" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="StaticImport" enabled="true" level="WARNING" enabled_by_default="true">
 | 
				
			||||||
 | 
					      <option name="allowedClasses">
 | 
				
			||||||
 | 
					        <set>
 | 
				
			||||||
 | 
					          <option value="org.junit.Assert" />
 | 
				
			||||||
 | 
					        </set>
 | 
				
			||||||
 | 
					      </option>
 | 
				
			||||||
 | 
					    </inspection_tool>
 | 
				
			||||||
    <inspection_tool class="StaticInheritance" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="StaticInheritance" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="StaticMethodNamingConvention" enabled="false" level="WARNING" enabled_by_default="false">
 | 
					    <inspection_tool class="StaticMethodNamingConvention" enabled="false" level="WARNING" enabled_by_default="false">
 | 
				
			||||||
      <option name="m_regex" value="[a-z][A-Za-z\d]*" />
 | 
					      <option name="m_regex" value="[a-z][A-Za-z\d]*" />
 | 
				
			||||||
@ -432,7 +437,6 @@
 | 
				
			|||||||
    <inspection_tool class="TemplateArgumentsIssues" enabled="true" level="ERROR" enabled_by_default="true" />
 | 
					    <inspection_tool class="TemplateArgumentsIssues" enabled="true" level="ERROR" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="TestMethodWithoutAssertion" enabled="false" level="WARNING" enabled_by_default="false">
 | 
					    <inspection_tool class="TestMethodWithoutAssertion" enabled="false" level="WARNING" enabled_by_default="false">
 | 
				
			||||||
      <option name="assertionMethods" value="org.junit.Assert,assert.*|fail.*,junit.framework.Assert,assert.*|fail.*,org.junit.jupiter.api.Assertions,assert.*|fail.*,org.mockito.Mockito,verify.*,org.mockito.InOrder,verify,org.junit.rules.ExpectedException,expect.*,org.hamcrest.MatcherAssert,assertThat" />
 | 
					      <option name="assertionMethods" value="org.junit.Assert,assert.*|fail.*,junit.framework.Assert,assert.*|fail.*,org.junit.jupiter.api.Assertions,assert.*|fail.*,org.mockito.Mockito,verify.*,org.mockito.InOrder,verify,org.junit.rules.ExpectedException,expect.*,org.hamcrest.MatcherAssert,assertThat" />
 | 
				
			||||||
      <option name="assertKeywordIsAssertion" value="false" />
 | 
					 | 
				
			||||||
    </inspection_tool>
 | 
					    </inspection_tool>
 | 
				
			||||||
    <inspection_tool class="TestNGMethodNamingConvention" enabled="false" level="WARNING" enabled_by_default="false" />
 | 
					    <inspection_tool class="TestNGMethodNamingConvention" enabled="false" level="WARNING" enabled_by_default="false" />
 | 
				
			||||||
    <inspection_tool class="ThisEscapedInConstructor" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="ThisEscapedInConstructor" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
@ -440,7 +444,6 @@
 | 
				
			|||||||
      <option name="ignoreRethrownExceptions" value="true" />
 | 
					      <option name="ignoreRethrownExceptions" value="true" />
 | 
				
			||||||
    </inspection_tool>
 | 
					    </inspection_tool>
 | 
				
			||||||
    <inspection_tool class="ThrowsRuntimeException" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="ThrowsRuntimeException" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="ToArrayCallWithZeroLengthArrayArgument" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					 | 
				
			||||||
    <inspection_tool class="TooBroadScope" enabled="true" level="WARNING" enabled_by_default="true">
 | 
					    <inspection_tool class="TooBroadScope" enabled="true" level="WARNING" enabled_by_default="true">
 | 
				
			||||||
      <option name="m_allowConstructorAsInitializer" value="false" />
 | 
					      <option name="m_allowConstructorAsInitializer" value="false" />
 | 
				
			||||||
      <option name="m_onlyLookAtBlocks" value="true" />
 | 
					      <option name="m_onlyLookAtBlocks" value="true" />
 | 
				
			||||||
@ -466,10 +469,8 @@
 | 
				
			|||||||
    <inspection_tool class="UnnecessaryBlockStatement" enabled="true" level="WARNING" enabled_by_default="true">
 | 
					    <inspection_tool class="UnnecessaryBlockStatement" enabled="true" level="WARNING" enabled_by_default="true">
 | 
				
			||||||
      <option name="ignoreSwitchBranches" value="false" />
 | 
					      <option name="ignoreSwitchBranches" value="false" />
 | 
				
			||||||
    </inspection_tool>
 | 
					    </inspection_tool>
 | 
				
			||||||
    <inspection_tool class="UnnecessaryCallToStringValueOf" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					 | 
				
			||||||
    <inspection_tool class="UnnecessaryConstantArrayCreationExpression" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="UnnecessaryConstantArrayCreationExpression" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="UnnecessaryConstructor" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="UnnecessaryConstructor" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="UnnecessaryDefault" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					 | 
				
			||||||
    <inspection_tool class="UnnecessaryExplicitNumericCast" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
					    <inspection_tool class="UnnecessaryExplicitNumericCast" enabled="true" level="WARNING" enabled_by_default="true" />
 | 
				
			||||||
    <inspection_tool class="UnnecessaryFullyQualifiedName" enabled="true" level="WARNING" enabled_by_default="true">
 | 
					    <inspection_tool class="UnnecessaryFullyQualifiedName" enabled="true" level="WARNING" enabled_by_default="true">
 | 
				
			||||||
      <option name="m_ignoreJavadoc" value="false" />
 | 
					      <option name="m_ignoreJavadoc" value="false" />
 | 
				
			||||||
 | 
				
			|||||||
@ -29,6 +29,7 @@ buildscript {
 | 
				
			|||||||
        eddsaVersion = '0.3.0'
 | 
					        eddsaVersion = '0.3.0'
 | 
				
			||||||
        bintrayPluginVersion = '1.8.4'
 | 
					        bintrayPluginVersion = '1.8.4'
 | 
				
			||||||
        mavenPluginVersion = '2.1'
 | 
					        mavenPluginVersion = '2.1'
 | 
				
			||||||
 | 
					        junitVersion = '4.13'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        groupName = 'com.wireguard.android'
 | 
					        groupName = 'com.wireguard.android'
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -21,6 +21,11 @@ android {
 | 
				
			|||||||
            path 'tools/CMakeLists.txt'
 | 
					            path 'tools/CMakeLists.txt'
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    testOptions.unitTests.all {
 | 
				
			||||||
 | 
					        testLogging {
 | 
				
			||||||
 | 
					            events 'passed', 'skipped', 'failed', 'standardOut', 'standardError'
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dependencies {
 | 
					dependencies {
 | 
				
			||||||
@ -30,6 +35,7 @@ dependencies {
 | 
				
			|||||||
    implementation "com.google.code.findbugs:jsr305:$jsr305Version"
 | 
					    implementation "com.google.code.findbugs:jsr305:$jsr305Version"
 | 
				
			||||||
    implementation "com.jakewharton.threetenabp:threetenabp:$threetenabpVersion"
 | 
					    implementation "com.jakewharton.threetenabp:threetenabp:$threetenabpVersion"
 | 
				
			||||||
    implementation "net.i2p.crypto:eddsa:$eddsaVersion"
 | 
					    implementation "net.i2p.crypto:eddsa:$eddsaVersion"
 | 
				
			||||||
 | 
					    testImplementation "junit:junit:$junitVersion"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
apply from: "publish.gradle"
 | 
					apply from: "publish.gradle"
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,172 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright © 2020 WireGuard LLC. All Rights Reserved.
 | 
				
			||||||
 | 
					 * SPDX-License-Identifier: Apache-2.0
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package com.wireguard.config;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.wireguard.config.BadConfigException.Location;
 | 
				
			||||||
 | 
					import com.wireguard.config.BadConfigException.Reason;
 | 
				
			||||||
 | 
					import com.wireguard.config.BadConfigException.Section;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.junit.AfterClass;
 | 
				
			||||||
 | 
					import org.junit.BeforeClass;
 | 
				
			||||||
 | 
					import org.junit.Test;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					import java.io.InputStream;
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static org.junit.Assert.*;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class BadConfigExceptionTest {
 | 
				
			||||||
 | 
					    private static final String[] CONFIG_NAMES = {
 | 
				
			||||||
 | 
					            "invalid-key",
 | 
				
			||||||
 | 
					            "invalid-number",
 | 
				
			||||||
 | 
					            "invalid-value",
 | 
				
			||||||
 | 
					            "missing-attribute",
 | 
				
			||||||
 | 
					            "missing-section",
 | 
				
			||||||
 | 
					            "syntax-error",
 | 
				
			||||||
 | 
					            "unknown-attribute",
 | 
				
			||||||
 | 
					            "unknown-section"
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    private static final Map<String, InputStream> CONFIG_MAP = new HashMap<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @BeforeClass
 | 
				
			||||||
 | 
					    public static void readConfigs() {
 | 
				
			||||||
 | 
					        for (final String config: CONFIG_NAMES) {
 | 
				
			||||||
 | 
					            CONFIG_MAP.put(config, BadConfigExceptionTest.class.getClassLoader().getResourceAsStream(config + ".conf"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @AfterClass
 | 
				
			||||||
 | 
					    public static void closeStreams() {
 | 
				
			||||||
 | 
					        for (final InputStream inputStream : CONFIG_MAP.values()) {
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                inputStream.close();
 | 
				
			||||||
 | 
					            } catch (final IOException ignored) {
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void throws_correctly_with_INVALID_KEY_reason() {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            Config.parse(CONFIG_MAP.get("invalid-key"));
 | 
				
			||||||
 | 
					            fail("Config parsing must fail in this test");
 | 
				
			||||||
 | 
					        } catch (final BadConfigException e) {
 | 
				
			||||||
 | 
					            assertEquals(e.getReason(), Reason.INVALID_KEY);
 | 
				
			||||||
 | 
					            assertEquals(e.getLocation(), Location.PUBLIC_KEY);
 | 
				
			||||||
 | 
					            assertEquals(e.getSection(), Section.PEER);
 | 
				
			||||||
 | 
					        } catch (final IOException e) {
 | 
				
			||||||
 | 
					            e.printStackTrace();
 | 
				
			||||||
 | 
					            fail("IOException thrown during test");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void throws_correctly_with_INVALID_NUMBER_reason() {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            Config.parse(CONFIG_MAP.get("invalid-number"));
 | 
				
			||||||
 | 
					            fail("Config parsing must fail in this test");
 | 
				
			||||||
 | 
					        } catch (final BadConfigException e) {
 | 
				
			||||||
 | 
					            assertEquals(e.getReason(), Reason.INVALID_NUMBER);
 | 
				
			||||||
 | 
					            assertEquals(e.getLocation(), Location.PERSISTENT_KEEPALIVE);
 | 
				
			||||||
 | 
					            assertEquals(e.getSection(), Section.PEER);
 | 
				
			||||||
 | 
					        } catch (final IOException e) {
 | 
				
			||||||
 | 
					            e.printStackTrace();
 | 
				
			||||||
 | 
					            fail("IOException thrown during test");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void throws_correctly_with_INVALID_VALUE_reason() {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            Config.parse(CONFIG_MAP.get("invalid-value"));
 | 
				
			||||||
 | 
					            fail("Config parsing must fail in this test");
 | 
				
			||||||
 | 
					        } catch (final BadConfigException e) {
 | 
				
			||||||
 | 
					            assertEquals(e.getReason(), Reason.INVALID_VALUE);
 | 
				
			||||||
 | 
					            assertEquals(e.getLocation(), Location.DNS);
 | 
				
			||||||
 | 
					            assertEquals(e.getSection(), Section.INTERFACE);
 | 
				
			||||||
 | 
					        } catch (final IOException e) {
 | 
				
			||||||
 | 
					            e.printStackTrace();
 | 
				
			||||||
 | 
					            fail("IOException throwing during test");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void throws_correctly_with_MISSING_ATTRIBUTE_reason() {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            Config.parse(CONFIG_MAP.get("missing-attribute"));
 | 
				
			||||||
 | 
					            fail("Config parsing must fail in this test");
 | 
				
			||||||
 | 
					        } catch (final BadConfigException e) {
 | 
				
			||||||
 | 
					            assertEquals(e.getReason(), Reason.MISSING_ATTRIBUTE);
 | 
				
			||||||
 | 
					            assertEquals(e.getLocation(), Location.PUBLIC_KEY);
 | 
				
			||||||
 | 
					            assertEquals(e.getSection(), Section.PEER);
 | 
				
			||||||
 | 
					        } catch (final IOException e) {
 | 
				
			||||||
 | 
					            e.printStackTrace();
 | 
				
			||||||
 | 
					            fail("IOException throwing during test");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void throws_correctly_with_MISSING_SECTION_reason() {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            Config.parse(CONFIG_MAP.get("missing-section"));
 | 
				
			||||||
 | 
					            fail("Config parsing must fail in this test");
 | 
				
			||||||
 | 
					        } catch (final BadConfigException e) {
 | 
				
			||||||
 | 
					            assertEquals(e.getReason(), Reason.MISSING_SECTION);
 | 
				
			||||||
 | 
					            assertEquals(e.getLocation(), Location.TOP_LEVEL);
 | 
				
			||||||
 | 
					            assertEquals(e.getSection(), Section.CONFIG);
 | 
				
			||||||
 | 
					        } catch (final IOException e) {
 | 
				
			||||||
 | 
					            e.printStackTrace();
 | 
				
			||||||
 | 
					            fail("IOException throwing during test");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void throws_correctly_with_SYNTAX_ERROR_reason() {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            Config.parse(CONFIG_MAP.get("syntax-error"));
 | 
				
			||||||
 | 
					            fail("Config parsing must fail in this test");
 | 
				
			||||||
 | 
					        } catch (final BadConfigException e) {
 | 
				
			||||||
 | 
					            assertEquals(e.getReason(), Reason.SYNTAX_ERROR);
 | 
				
			||||||
 | 
					            assertEquals(e.getLocation(), Location.TOP_LEVEL);
 | 
				
			||||||
 | 
					            assertEquals(e.getSection(), Section.PEER);
 | 
				
			||||||
 | 
					        } catch (final IOException e) {
 | 
				
			||||||
 | 
					            e.printStackTrace();
 | 
				
			||||||
 | 
					            fail("IOException throwing during test");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void throws_correctly_with_UNKNOWN_ATTRIBUTE_reason() {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            Config.parse(CONFIG_MAP.get("unknown-attribute"));
 | 
				
			||||||
 | 
					            fail("Config parsing must fail in this test");
 | 
				
			||||||
 | 
					        } catch (final BadConfigException e) {
 | 
				
			||||||
 | 
					            assertEquals(e.getReason(), Reason.UNKNOWN_ATTRIBUTE);
 | 
				
			||||||
 | 
					            assertEquals(e.getLocation(), Location.TOP_LEVEL);
 | 
				
			||||||
 | 
					            assertEquals(e.getSection(), Section.PEER);
 | 
				
			||||||
 | 
					        } catch (final IOException e) {
 | 
				
			||||||
 | 
					            e.printStackTrace();
 | 
				
			||||||
 | 
					            fail("IOException throwing during test");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void throws_correctly_with_UNKNOWN_SECTION_reason() {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            Config.parse(CONFIG_MAP.get("unknown-section"));
 | 
				
			||||||
 | 
					            fail("Config parsing must fail in this test");
 | 
				
			||||||
 | 
					        } catch (final BadConfigException e) {
 | 
				
			||||||
 | 
					            assertEquals(e.getReason(), Reason.UNKNOWN_SECTION);
 | 
				
			||||||
 | 
					            assertEquals(e.getLocation(), Location.TOP_LEVEL);
 | 
				
			||||||
 | 
					            assertEquals(e.getSection(), Section.CONFIG);
 | 
				
			||||||
 | 
					        } catch (final IOException e) {
 | 
				
			||||||
 | 
					            e.printStackTrace();
 | 
				
			||||||
 | 
					            fail("IOException throwing during test");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										45
									
								
								tunnel/src/test/java/com/wireguard/config/ConfigTest.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								tunnel/src/test/java/com/wireguard/config/ConfigTest.java
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,45 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright © 2020 WireGuard LLC. All Rights Reserved.
 | 
				
			||||||
 | 
					 * SPDX-License-Identifier: Apache-2.0
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package com.wireguard.config;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static org.junit.Assert.*;
 | 
				
			||||||
 | 
					import org.junit.Test;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					import java.io.InputStream;
 | 
				
			||||||
 | 
					import java.util.Arrays;
 | 
				
			||||||
 | 
					import java.util.Collection;
 | 
				
			||||||
 | 
					import java.util.HashSet;
 | 
				
			||||||
 | 
					import java.util.Objects;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class ConfigTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void valid_config_parses_correctly() throws IOException, ParseException {
 | 
				
			||||||
 | 
					        Config config = null;
 | 
				
			||||||
 | 
					        final Collection<InetNetwork> expectedAllowedIps = new HashSet<>(Arrays.asList(InetNetwork.parse("0.0.0.0/0"), InetNetwork.parse("::0/0")));
 | 
				
			||||||
 | 
					        try (final InputStream is = Objects.requireNonNull(getClass().getClassLoader()).getResourceAsStream("working.conf")) {
 | 
				
			||||||
 | 
					            config = Config.parse(is);
 | 
				
			||||||
 | 
					        } catch (final BadConfigException e) {
 | 
				
			||||||
 | 
					            fail("'working.conf' should never fail to parse");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        assertNotNull("config cannot be null after parsing", config);
 | 
				
			||||||
 | 
					        assertTrue(
 | 
				
			||||||
 | 
					                "No applications should be excluded by default",
 | 
				
			||||||
 | 
					                config.getInterface().getExcludedApplications().isEmpty()
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        assertEquals("Test config has exactly one peer", 1, config.getPeers().size());
 | 
				
			||||||
 | 
					        assertEquals("Test config's allowed IPs are 0.0.0.0/0 and ::0/0", config.getPeers().get(0).getAllowedIps(), expectedAllowedIps);
 | 
				
			||||||
 | 
					        assertEquals("Test config has one DNS server", 1, config.getInterface().getDnsServers().size());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test(expected = BadConfigException.class)
 | 
				
			||||||
 | 
					    public void invalid_config_throws() throws IOException, BadConfigException {
 | 
				
			||||||
 | 
					        try (final InputStream is = Objects.requireNonNull(getClass().getClassLoader()).getResourceAsStream("broken.conf")) {
 | 
				
			||||||
 | 
					            Config.parse(is);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										9
									
								
								tunnel/src/test/resources/broken.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								tunnel/src/test/resources/broken.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					[Interface]
 | 
				
			||||||
 | 
					PrivateKey = l0lth1s1sd3f1n1t3lybr0k3n=
 | 
				
			||||||
 | 
					Address = 192.0.2.2/32,2001:db8:ffff:ffff:ffff:ffff:ffff:ffff/128
 | 
				
			||||||
 | 
					DNS = 192.0.2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Peer]
 | 
				
			||||||
 | 
					PublicKey = vBN7qyUTb5lJtWYJ8LhbPio1Z4RcyBPGnqFBGn6O6Qg=
 | 
				
			||||||
 | 
					AllowedIPs = 0.0.0.0/0,::0/0
 | 
				
			||||||
 | 
					Endpoint = 192.0.2.1:51820
 | 
				
			||||||
							
								
								
									
										9
									
								
								tunnel/src/test/resources/invalid-key.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								tunnel/src/test/resources/invalid-key.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					[Interface]
 | 
				
			||||||
 | 
					Address = 192.0.2.2/32,2001:db8:ffff:ffff:ffff:ffff:ffff:ffff/128
 | 
				
			||||||
 | 
					DNS = 192.0.2.0
 | 
				
			||||||
 | 
					PrivateKey = TFlmmEUC7V7VtiDYLKsbP5rySTKLIZq1yn8lMqK83wo=
 | 
				
			||||||
 | 
					[Peer]
 | 
				
			||||||
 | 
					AllowedIPs = 0.0.0.0/0, ::0/0
 | 
				
			||||||
 | 
					Endpoint = 192.0.2.1:51820
 | 
				
			||||||
 | 
					PersistentKeepalive = 0
 | 
				
			||||||
 | 
					PublicKey = vBN7qyUTb5lJtWYJ8LhbPio1Z4RcyBPGnqFBGn6Og=
 | 
				
			||||||
							
								
								
									
										9
									
								
								tunnel/src/test/resources/invalid-number.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								tunnel/src/test/resources/invalid-number.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					[Interface]
 | 
				
			||||||
 | 
					Address = 192.0.2.2/32,2001:db8:ffff:ffff:ffff:ffff:ffff:ffff/128
 | 
				
			||||||
 | 
					DNS = 192.0.2.0
 | 
				
			||||||
 | 
					PrivateKey = TFlmmEUC7V7VtiDYLKsbP5rySTKLIZq1yn8lMqK83wo=
 | 
				
			||||||
 | 
					[Peer]
 | 
				
			||||||
 | 
					AllowedIPs = 0.0.0.0/0, ::0/0
 | 
				
			||||||
 | 
					Endpoint = 192.0.2.1:51820
 | 
				
			||||||
 | 
					PersistentKeepalive = 0L
 | 
				
			||||||
 | 
					PublicKey = vBN7qyUTb5lJtWYJ8LhbPio1Z4RcyBPGnqFBGn6O6Qg=
 | 
				
			||||||
							
								
								
									
										9
									
								
								tunnel/src/test/resources/invalid-value.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								tunnel/src/test/resources/invalid-value.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					[Interface]
 | 
				
			||||||
 | 
					Address = 192.0.2.2/32,2001:db8:ffff:ffff:ffff:ffff:ffff:ffff/128
 | 
				
			||||||
 | 
					DNS = 192.0.2.0,yes
 | 
				
			||||||
 | 
					PrivateKey = TFlmmEUC7V7VtiDYLKsbP5rySTKLIZq1yn8lMqK83wo=
 | 
				
			||||||
 | 
					[Peer]
 | 
				
			||||||
 | 
					AllowedIPs = 0.0.0.0/0, ::0/0
 | 
				
			||||||
 | 
					Endpoint = 192.0.2.1:51820
 | 
				
			||||||
 | 
					PersistentKeepalive = 0
 | 
				
			||||||
 | 
					PublicKey = vBN7qyUTb5lJtWYJ8LhbPio1Z4RcyBPGnqFBGn6O6Qg=
 | 
				
			||||||
							
								
								
									
										8
									
								
								tunnel/src/test/resources/missing-attribute.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								tunnel/src/test/resources/missing-attribute.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					[Interface]
 | 
				
			||||||
 | 
					Address = 192.0.2.2/32,2001:db8:ffff:ffff:ffff:ffff:ffff:ffff/128
 | 
				
			||||||
 | 
					DNS = 192.0.2.0
 | 
				
			||||||
 | 
					PrivateKey = TFlmmEUC7V7VtiDYLKsbP5rySTKLIZq1yn8lMqK83wo=
 | 
				
			||||||
 | 
					[Peer]
 | 
				
			||||||
 | 
					AllowedIPs = 0.0.0.0/0, ::0/0
 | 
				
			||||||
 | 
					Endpoint = 192.0.2.1:51820
 | 
				
			||||||
 | 
					PersistentKeepalive = 0
 | 
				
			||||||
							
								
								
									
										5
									
								
								tunnel/src/test/resources/missing-section.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								tunnel/src/test/resources/missing-section.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					[Peer]
 | 
				
			||||||
 | 
					AllowedIPs = 0.0.0.0/0, ::0/0
 | 
				
			||||||
 | 
					Endpoint = 192.0.2.1:51820
 | 
				
			||||||
 | 
					PersistentKeepalive = 0
 | 
				
			||||||
 | 
					PublicKey = vBN7qyUTb5lJtWYJ8LhbPio1Z4RcyBPGnqFBGn6O6Qg=
 | 
				
			||||||
							
								
								
									
										9
									
								
								tunnel/src/test/resources/syntax-error.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								tunnel/src/test/resources/syntax-error.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					[Interface]
 | 
				
			||||||
 | 
					Address = 192.0.2.2/32,2001:db8:ffff:ffff:ffff:ffff:ffff:ffff/128
 | 
				
			||||||
 | 
					DNS = 192.0.2.0
 | 
				
			||||||
 | 
					PrivateKey = TFlmmEUC7V7VtiDYLKsbP5rySTKLIZq1yn8lMqK83wo=
 | 
				
			||||||
 | 
					[Peer]
 | 
				
			||||||
 | 
					AllowedIPs = 0.0.0.0/0, ::0/0
 | 
				
			||||||
 | 
					Endpoint = 
 | 
				
			||||||
 | 
					PersistentKeepalive = 0
 | 
				
			||||||
 | 
					PublicKey = vBN7qyUTb5lJtWYJ8LhbPio1Z4RcyBPGnqFBGn6O6Qg=
 | 
				
			||||||
							
								
								
									
										9
									
								
								tunnel/src/test/resources/unknown-attribute.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								tunnel/src/test/resources/unknown-attribute.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					[Interface]
 | 
				
			||||||
 | 
					Address = 192.0.2.2/32,2001:db8:ffff:ffff:ffff:ffff:ffff:ffff/128
 | 
				
			||||||
 | 
					DNS = 192.0.2.0
 | 
				
			||||||
 | 
					PrivateKey = TFlmmEUC7V7VtiDYLKsbP5rySTKLIZq1yn8lMqK83wo=
 | 
				
			||||||
 | 
					[Peer]
 | 
				
			||||||
 | 
					AllowedIPs = 0.0.0.0/0, ::0/0
 | 
				
			||||||
 | 
					Endpoint = 192.0.2.1:51820
 | 
				
			||||||
 | 
					DontLetTheFeelingFade = 1
 | 
				
			||||||
 | 
					PublicKey = vBN7qyUTb5lJtWYJ8LhbPio1Z4RcyBPGnqFBGn6O6Qg=
 | 
				
			||||||
							
								
								
									
										9
									
								
								tunnel/src/test/resources/unknown-section.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								tunnel/src/test/resources/unknown-section.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					[Interface]
 | 
				
			||||||
 | 
					Address = 192.0.2.2/32,2001:db8:ffff:ffff:ffff:ffff:ffff:ffff/128
 | 
				
			||||||
 | 
					DNS = 192.0.2.0
 | 
				
			||||||
 | 
					PrivateKey = TFlmmEUC7V7VtiDYLKsbP5rySTKLIZq1yn8lMqK83wo=
 | 
				
			||||||
 | 
					[Peers]
 | 
				
			||||||
 | 
					AllowedIPs = 0.0.0.0/0, ::0/0
 | 
				
			||||||
 | 
					Endpoint = 192.0.2.1:51820
 | 
				
			||||||
 | 
					PersistentKeepalive = 0
 | 
				
			||||||
 | 
					PublicKey = vBN7qyUTb5lJtWYJ8LhbPio1Z4RcyBPGnqFBGn6O6Qg=
 | 
				
			||||||
							
								
								
									
										9
									
								
								tunnel/src/test/resources/working.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								tunnel/src/test/resources/working.conf
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					[Interface]
 | 
				
			||||||
 | 
					Address = 192.0.2.2/32,2001:db8:ffff:ffff:ffff:ffff:ffff:ffff/128
 | 
				
			||||||
 | 
					DNS = 192.0.2.0
 | 
				
			||||||
 | 
					PrivateKey = TFlmmEUC7V7VtiDYLKsbP5rySTKLIZq1yn8lMqK83wo=
 | 
				
			||||||
 | 
					[Peer]
 | 
				
			||||||
 | 
					AllowedIPs = 0.0.0.0/0, ::0/0
 | 
				
			||||||
 | 
					Endpoint = 192.0.2.1:51820
 | 
				
			||||||
 | 
					PersistentKeepalive = 0
 | 
				
			||||||
 | 
					PublicKey = vBN7qyUTb5lJtWYJ8LhbPio1Z4RcyBPGnqFBGn6O6Qg=
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user