/*
 * The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
 * (the "License"). You may not use this work except in compliance with the License, which is
 * available at www.apache.org/licenses/LICENSE-2.0
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied, as more fully set forth in the License.
 *
 * See the NOTICE file distributed with this work for information regarding copyright ownership.
 */

package alluxio.underfs;

import alluxio.ConfigurationRule;
import alluxio.PropertyKey;

import com.google.common.collect.ImmutableMap;
import org.junit.Assert;
import org.junit.Test;

import java.io.Closeable;

public final class UnderFileSystemConfigurationTest {

  @Test
  public void getValueWhenGlobalConfHasProperty() throws Exception {
    // Set property in global configuration
    try (Closeable c = new ConfigurationRule(PropertyKey.S3A_ACCESS_KEY, "bar").toResource()) {
      UnderFileSystemConfiguration conf = new UnderFileSystemConfiguration(null);
      Assert.assertEquals("bar", conf.getValue(PropertyKey.S3A_ACCESS_KEY));
      conf = new UnderFileSystemConfiguration(
          ImmutableMap.of(PropertyKey.S3A_ACCESS_KEY.toString(), "foo"));
      Assert.assertEquals("foo", conf.getValue(PropertyKey.S3A_ACCESS_KEY));
    }
  }

  @Test
  public void getValueWhenGlobalConfHasNotProperty() throws Exception {
    // Set property in global configuration
    try (Closeable c = new ConfigurationRule(PropertyKey.S3A_ACCESS_KEY, null).toResource()) {
      UnderFileSystemConfiguration conf = new UnderFileSystemConfiguration(null);
      try {
        conf.getValue(PropertyKey.S3A_ACCESS_KEY);
        Assert.fail("this key should not exist");
      } catch (Exception e) {
        // expect to pass
      }
      conf = new UnderFileSystemConfiguration(
          ImmutableMap.of(PropertyKey.S3A_ACCESS_KEY.toString(), "foo"));
      Assert.assertEquals("foo", conf.getValue(PropertyKey.S3A_ACCESS_KEY));
    }
  }


  @Test
  public void containsWhenGlobalConfHasProperty() throws Exception {
    // Unset property in global configuration
    try (Closeable c = new ConfigurationRule(PropertyKey.S3A_ACCESS_KEY, "bar").toResource()) {
      UnderFileSystemConfiguration conf = new UnderFileSystemConfiguration(null);
      Assert.assertTrue(conf.containsKey(PropertyKey.S3A_ACCESS_KEY));
      conf = new UnderFileSystemConfiguration(
          ImmutableMap.of(PropertyKey.S3A_ACCESS_KEY.toString(), "foo"));
      Assert.assertTrue(conf.containsKey(PropertyKey.S3A_ACCESS_KEY));
    }
  }

  @Test
  public void containsWhenGlobalConfHasNotProperty() throws Exception {
    // Unset property in global configuration
    try (Closeable c = new ConfigurationRule(PropertyKey.S3A_ACCESS_KEY, null).toResource()) {
      UnderFileSystemConfiguration conf = new UnderFileSystemConfiguration(null);
      Assert.assertFalse(conf.containsKey(PropertyKey.S3A_ACCESS_KEY));
      conf = new UnderFileSystemConfiguration(
          ImmutableMap.of(PropertyKey.S3A_ACCESS_KEY.toString(), "foo"));
      Assert.assertTrue(conf.containsKey(PropertyKey.S3A_ACCESS_KEY));
    }
  }
}

@@ -2046,17 +2046,16 @@
  %7D%0A  %7D%0A%0A
-%0A
   @Test%0A

Fix style checker