174 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			174 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| /*
 | |
|  * Copyright © 2017-2023 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.assertEquals;
 | |
| import static org.junit.Assert.fail;
 | |
| 
 | |
| public class BadConfigExceptionTest {
 | |
|     private static final Map<String, InputStream> CONFIG_MAP = new HashMap<>();
 | |
|     private static final String[] CONFIG_NAMES = {
 | |
|             "invalid-key",
 | |
|             "invalid-number",
 | |
|             "invalid-value",
 | |
|             "missing-attribute",
 | |
|             "missing-section",
 | |
|             "syntax-error",
 | |
|             "unknown-attribute",
 | |
|             "unknown-section"
 | |
|     };
 | |
| 
 | |
|     @AfterClass
 | |
|     public static void closeStreams() {
 | |
|         for (final InputStream inputStream : CONFIG_MAP.values()) {
 | |
|             try {
 | |
|                 inputStream.close();
 | |
|             } catch (final IOException ignored) {
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @BeforeClass
 | |
|     public static void readConfigs() {
 | |
|         for (final String config : CONFIG_NAMES) {
 | |
|             CONFIG_MAP.put(config, BadConfigExceptionTest.class.getClassLoader().getResourceAsStream(config + ".conf"));
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     @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");
 | |
|         }
 | |
|     }
 | |
| }
 |