#!/usr/bin/env vpython3
# Copyright 2025 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import logging
import unittest

import exception_utils


class DeviceExceptionCheckerTest(unittest.TestCase):
  def setUp(self):
    self.exception_checker = exception_utils.DeviceExceptionChecker()

  def test_device_setup_not_complete_error_raised(self):
    log_message = "(Underlying Error: The operation couldn’t be completed. Device setup is not yet complete.)"

    self.exception_checker.check_line(log_message)

    self.assertRaises(
      exception_utils.DeviceSetupNotCompleteError,
      self.exception_checker.throw_first,
    )

  def test_failed_to_install_embedded_profile_error_raised(self):
    log_message = "Recovery Suggestion: Failed to install embedded profile for"

    self.exception_checker.check_line(log_message)

    self.assertRaises(
      exception_utils.FailedToInstallEmbeddedProfileError,
      self.exception_checker.throw_first,
    )

  def test_developer_mode_disabled_error_raised(self):
    log_message = (
      "name:iPhone, error:Developer Mode disabled To use iPhone"
      + " for development, enable Developer Mode in Settings → "
      + "Privacy & Security."
    )

    self.exception_checker.check_line(log_message)

    self.assertRaises(
      exception_utils.DeveloperModeDisabledError,
      self.exception_checker.throw_first,
    )


if __name__ == '__main__':
  logging.basicConfig(
    format='[%(asctime)s:%(levelname)s] %(message)s',
    level=logging.DEBUG,
    datefmt='%I:%M:%S',
  )
  unittest.main()
