chromium/chrome/test/data/webui/chromeos/settings/kerberos_page/test_kerberos_accounts_browser_proxy.ts

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import {KerberosAccount, KerberosAccountsBrowserProxy, KerberosConfigErrorCode, KerberosErrorType, ValidateKerberosConfigResult} from 'chrome://os-settings/lazy_load.js';
import {TestBrowserProxy} from 'chrome://webui-test/test_browser_proxy.js';

// List of fake accounts.
export const TEST_KERBEROS_ACCOUNTS = [
  {
    principalName: 'user@REALM',
    config: 'config1',
    isSignedIn: true,
    isActive: true,
    isManaged: false,
    passwordWasRemembered: false,
    pic: 'pic',
    validForDuration: '1 lightyear',
  },
  {
    principalName: 'user2@REALM2',
    config: 'config2',
    isSignedIn: false,
    isActive: false,
    isManaged: false,
    passwordWasRemembered: true,
    pic: 'pic2',
    validForDuration: 'zero googolseconds',
  },
  {
    principalName: 'user3@REALM3',
    config: 'config3',
    isSignedIn: false,
    isActive: false,
    isManaged: true,
    passwordWasRemembered: true,
    pic: 'pic2',
    validForDuration: 'one over inf seconds',
  },
];

// Account indices (to help readability).
export const AccountIndex = {
  FIRST: 0,
  SECOND: 1,
  THIRD: 2,
};

export class TestKerberosAccountsBrowserProxy extends TestBrowserProxy
    implements KerberosAccountsBrowserProxy {
  addAccountError: KerberosErrorType;
  validateConfigResult: ValidateKerberosConfigResult;

  constructor() {
    super([
      'getAccounts',
      'addAccount',
      'removeAccount',
      'validateConfig',
      'setAsActiveAccount',
    ]);

    // Simulated error from an addAccount call.
    this.addAccountError = KerberosErrorType.NONE;

    // Simulated error from a validateConfig call.
    this.validateConfigResult = {
      error: KerberosErrorType.NONE,
      errorInfo: {code: KerberosConfigErrorCode.NONE, lineIndex: 0},
    };
  }

  getAccounts(): Promise<KerberosAccount[]> {
    this.methodCalled('getAccounts');
    return Promise.resolve(TEST_KERBEROS_ACCOUNTS);
  }

  addAccount(
      principalName: string, password: string, rememberPassword: boolean,
      config: string, allowExisting: boolean): Promise<KerberosErrorType> {
    this.methodCalled(
        'addAccount',
        [principalName, password, rememberPassword, config, allowExisting]);
    return Promise.resolve(this.addAccountError);
  }

  removeAccount(account: KerberosAccount): Promise<KerberosErrorType> {
    this.methodCalled('removeAccount', account);
    return Promise.resolve(KerberosErrorType.NONE);
  }

  validateConfig(krb5Conf: string): Promise<ValidateKerberosConfigResult> {
    this.methodCalled('validateConfig', krb5Conf);
    return Promise.resolve(this.validateConfigResult);
  }

  setAsActiveAccount(account: KerberosAccount): void {
    this.methodCalled('setAsActiveAccount', account);
  }
}