🤬
  • Add additional factory method for building PluginDefinitions for RemoteVulnDetectors.

    PiperOrigin-RevId: 461066381
    Change-Id: I7d85ef0751d4531b07a65e391ea1bc999a913fc4
  • Loading...
  • John Y. Kim committed with Copybara-Service 2 years ago
    9fc53070
    1 parent fbbc03cc
Revision indexing in progress... (symbol navigation in revisions will be accurate after indexed)
  • ■ ■ ■ ■ ■ ■
    plugin/src/main/java/com/google/tsunami/plugin/PluginDefinition.java
    skipped 14 lines
    15 15   */
    16 16  package com.google.tsunami.plugin;
    17 17   
     18 +import static com.google.common.base.Preconditions.checkNotNull;
    18 19  import static com.google.common.base.Preconditions.checkState;
    19 20   
    20 21  import com.google.auto.value.AutoValue;
    skipped 8 lines
    29 30  @AutoValue
    30 31  abstract class PluginDefinition {
    31 32   abstract PluginInfo pluginInfo();
     33 + 
    32 34   abstract Optional<ForServiceName> targetServiceName();
     35 + 
    33 36   abstract Optional<ForSoftware> targetSoftware();
     37 + 
    34 38   abstract boolean isForWebService();
    35 39   
    36 40   /**
    skipped 44 lines
    81 85   
    82 86   return new AutoValue_PluginDefinition(
    83 87   pluginInfo.get(), targetServiceName, targetSoftware, isForWebService);
     88 + }
     89 + 
     90 + /**
     91 + * Factory method for creating a {@link PluginDefinition} for {@link RemoteVulnDetector}
     92 + * implementations using the {@link PluginInfo} class.
     93 + *
     94 + * @param remotePluginInfo the {@link PluginInfo} of the remote Tsunami plugin
     95 + * @return a {@link PluginDefinition} built from the plugin info.
     96 + */
     97 + public static PluginDefinition forRemotePlugin(PluginInfo remotePluginInfo) {
     98 + return new AutoValue_PluginDefinition(
     99 + checkNotNull(remotePluginInfo), Optional.empty(), Optional.empty(), false);
    84 100   }
    85 101  }
    86 102   
  • ■ ■ ■ ■ ■
    plugin/src/test/java/com/google/tsunami/plugin/PluginDefinitionTest.java
    skipped 17 lines
    18 18  import static com.google.common.truth.Truth.assertThat;
    19 19  import static org.junit.Assert.assertThrows;
    20 20   
     21 +import com.google.tsunami.plugin.annotations.PluginInfo;
     22 +import com.google.tsunami.plugin.testing.FakeRemoteVulnDetector;
    21 23  import com.google.tsunami.plugin.testing.FakeVulnDetector;
    22 24  import org.junit.Test;
    23 25  import org.junit.runner.RunWith;
    skipped 7 lines
    31 33   public void id_always_generatesCorrectPluginId() {
    32 34   PluginDefinition pluginDefinition = PluginDefinition.forPlugin(FakeVulnDetector.class);
    33 35   
    34  - assertThat(pluginDefinition.id())
    35  - .isEqualTo("/fake/VULN_DETECTION/FakeVulnDetector/v0.1");
     36 + assertThat(pluginDefinition.id()).isEqualTo("/fake/VULN_DETECTION/FakeVulnDetector/v0.1");
    36 37   }
    37 38   
    38 39   @Test
    39 40   public void forPlugin_whenPluginHasNoAnnotation_throwsException() {
    40 41   assertThrows(
    41 42   IllegalStateException.class, () -> PluginDefinition.forPlugin(NoAnnotationPlugin.class));
     43 + }
     44 + 
     45 + @Test
     46 + public void forRemotePlugin_always_generatesCorrectDefinition() {
     47 + PluginInfo pluginInfo = FakeRemoteVulnDetector.class.getAnnotation(PluginInfo.class);
     48 + PluginDefinition pluginDefinition = PluginDefinition.forRemotePlugin(pluginInfo);
     49 + 
     50 + assertThat(pluginDefinition.pluginInfo()).isEqualTo(pluginInfo);
     51 + assertThat(pluginDefinition.id())
     52 + .isEqualTo("/fake/REMOTE_VULN_DETECTION/FakeRemoteVulnDetector/v0.1");
     53 + }
     54 + 
     55 + @Test
     56 + public void forRemotePlugin_whenPassedNull_throwsException() {
     57 + assertThrows(NullPointerException.class, () -> PluginDefinition.forRemotePlugin(null));
    42 58   }
    43 59   
    44 60   private static final class NoAnnotationPlugin implements TsunamiPlugin {}
    skipped 2 lines
Please wait...
Page is in error, reload to recover