@@ -0,0 +1,2520 @@
+// Copyright (C) 2019 The Android Open Source Project%0A//%0A// Licensed under the Apache License, Version 2.0 (the %22License%22);%0A// you may not use this file except in compliance with the License.%0A// You may obtain a copy of the License at%0A//%0A// http://www.apache.org/licenses/LICENSE-2.0%0A//%0A// Unless required by applicable law or agreed to in writing, software%0A// distributed under the License is distributed on an %22AS IS%22 BASIS,%0A// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A// See the License for the specific language governing permissions and%0A// limitations under the License.%0A%0Apackage com.google.gerrit.server.account;%0A%0Aimport static com.google.common.truth.Truth.assertThat;%0Aimport static org.mockito.Mockito.verifyNoMoreInteractions;%0A%0Aimport com.google.gerrit.extensions.client.GeneralPreferencesInfo;%0Aimport com.google.gerrit.reviewdb.client.Account;%0Aimport com.google.gerrit.server.git.ValidationError;%0Aimport org.eclipse.jgit.lib.Config;%0Aimport org.junit.Test;%0Aimport org.mockito.Mockito;%0A%0A/** Tests for parsing user preferences from Git. */%0Apublic class PreferencesTest %7B%0A%0A  enum Unknown %7B%0A    STATE%0A  %7D%0A%0A  @Test%0A  public void ignoreUnknownAccountPreferencesWhenParsing() %7B%0A    ValidationError.Sink errorSink = Mockito.mock(ValidationError.Sink.class);%0A    Preferences preferences =%0A        new Preferences(Account.id(1), configWithUnknownEntries(), new Config(), errorSink);%0A    GeneralPreferencesInfo parsedPreferences = preferences.getGeneralPreferences();%0A%0A    assertThat(parsedPreferences).isNotNull();%0A    assertThat(parsedPreferences.expandInlineDiffs).isTrue();%0A    verifyNoMoreInteractions(errorSink);%0A  %7D%0A%0A  @Test%0A  public void ignoreUnknownDefaultAccountPreferencesWhenParsing() %7B%0A    ValidationError.Sink errorSink = Mockito.mock(ValidationError.Sink.class);%0A    Preferences preferences =%0A        new Preferences(Account.id(1), new Config(), configWithUnknownEntries(), errorSink);%0A    GeneralPreferencesInfo parsedPreferences = preferences.getGeneralPreferences();%0A%0A    assertThat(parsedPreferences).isNotNull();%0A    assertThat(parsedPreferences.expandInlineDiffs).isTrue();%0A    verifyNoMoreInteractions(errorSink);%0A  %7D%0A%0A  private static Config configWithUnknownEntries() %7B%0A    Config cfg = new Config();%0A    cfg.setBoolean(%22general%22, null, %22expandInlineDiffs%22, true);%0A    cfg.setBoolean(%22general%22, null, %22unknown%22, true);%0A    cfg.setEnum(%22general%22, null, %22unknownenum%22, Unknown.STATE);%0A    cfg.setString(%22general%22, null, %22unknownstring%22, %22bla%22);%0A    return cfg;%0A  %7D%0A%7D%0A

Add test to ensure that unkown user preferences are just ignored