chromium/chromeos/ash/components/sync_wifi/test_data_generator.cc

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

#include "base/notreached.h"
#include "base/strings/string_number_conversions.h"
#include "chromeos/ash/components/sync_wifi/network_identifier.h"
#include "components/sync/protocol/wifi_configuration_specifics.pb.h"
#include "third_party/cros_system_api/dbus/shill/dbus-constants.h"

namespace ash::sync_wifi {

NetworkIdentifier GeneratePskNetworkId(const std::string& ssid) {
  return NetworkIdentifier(base::HexEncode(ssid), shill::kSecurityClassPsk);
}

NetworkIdentifier GenerateInvalidPskNetworkId(const std::string& ssid) {
  return NetworkIdentifier(ssid.data(), shill::kSecurityClassPsk);
}

sync_pb::WifiConfigurationSpecifics GenerateTestWifiSpecifics(
    const NetworkIdentifier& id,
    const std::string& passphrase = "passphrase",
    double timestamp = 1) {
  sync_pb::WifiConfigurationSpecifics specifics;
  specifics.set_hex_ssid(id.hex_ssid());

  if (id.security_type() == shill::kSecurityClassPsk) {
    specifics.set_security_type(
        sync_pb::WifiConfigurationSpecifics::SECURITY_TYPE_PSK);
  } else if (id.security_type() == shill::kSecurityClassWep) {
    specifics.set_security_type(
        sync_pb::WifiConfigurationSpecifics::SECURITY_TYPE_WEP);
  } else {
    NOTREACHED_IN_MIGRATION();
  }
  specifics.set_passphrase(passphrase);
  specifics.set_last_connected_timestamp(timestamp);
  specifics.set_automatically_connect(
      sync_pb::WifiConfigurationSpecifics::AUTOMATICALLY_CONNECT_ENABLED);
  specifics.set_is_preferred(
      sync_pb::WifiConfigurationSpecifics::IS_PREFERRED_ENABLED);
  specifics.set_metered(
      sync_pb::WifiConfigurationSpecifics::METERED_OPTION_AUTO);
  specifics.mutable_proxy_configuration()->set_proxy_option(
      sync_pb::WifiConfigurationSpecifics::ProxyConfiguration::
          PROXY_OPTION_DISABLED);
  return specifics;
}

}  // namespace ash::sync_wifi