示例#1
0
class Camera_EmailerTest(unittest.TestCase):
    @patch.object(Emailer, "_send_message")
    def test_cameraEmailer(self, sendMessage_mock):
        # setup

        camera = Camera("Camera1", ["outside", "garage"])
        emailer = Emailer("*****@*****.**")
        emailer.alert_recipient = "*****@*****.**"
        self.system = SecuritySystem()
        self.system.strategy = EverybodyStrategy()

        self.system.registerCreator(camera)
        self.system.registerHandler(emailer)

        # act
        camera.detect_movement("human", "outside",
                               datetime(2020, 11, 26, 13, 20))

        # assert
        sendMessage_mock.assert_called_once_with(
            "*****@*****.**",
            "Alert",
            """You've got an Alert!
What: human; Where: outside; Level: 2""",
        )
    def test_nosyNeighbor_randomStrategy_alertHandled(self, print_mock,
                                                      bip_mock):
        # set-up
        random.seed(0)
        bed_time = "23:30"
        wake_time = "05:30"
        neighbor = NosyNeighbor("Laco", bed_time, wake_time)
        doggo = Doggo("Jake")
        soundalarm = SoundAlarm()

        system = SecuritySystem()
        system.strategy = RandomStrategy()

        system.registerCreator(neighbor)
        system.registerHandler(doggo)
        system.registerHandler(soundalarm)

        # act
        neighbor.check_suspicious_activity(
            "infront of the door",
            "random visitors",
            datetime(2021, 1, 25, 22, 30, 20),
        )

        # assert
        print_mock.assert_called()
        bip_mock.assert_not_called()
示例#3
0
    def test_cameraAlertCreated_doggoAsSecondHandlerAlertIgnored(
            self, print_mock):
        # setup

        camera = Camera("Camera1", ["outside", "garage"])
        doggo = Doggo("Jake")
        soundalarm = SoundAlarm()
        system = SecuritySystem()
        system.strategy = OldestFirstStrategy()

        system.registerCreator(camera)
        system.registerHandler(soundalarm)
        system.registerHandler(doggo)

        # act
        camera.detect_movement("human", "outside",
                               datetime(2020, 11, 26, 23, 20))

        # assert
        print_mock.assert_not_called()
示例#4
0
    def test_cameraAlertCreated_soundAsFirstHandlerAlertHandled(
            self, bip_mock):
        # setup

        camera = Camera("Camera1", ["outside", "garage"])
        camera.night_mode = True
        doggo = Doggo("Jake")
        soundalarm = SoundAlarm()
        system = SecuritySystem()
        system.strategy = OldestFirstStrategy()

        system.registerCreator(camera)
        system.registerHandler(soundalarm)
        system.registerHandler(doggo)

        # act
        camera.detect_movement("human", "outside",
                               datetime(2020, 11, 26, 23, 20))

        # assert
        bip_mock.assert_called()
示例#5
0
    def test_cameraAlertCreated_doggoAlertIgnored(self, print_mock):
        # setup

        camera = Camera("Camera1", ["outside", "garage"])
        doggo = Doggo("Jake")
        system = SecuritySystem()
        system.strategy = EverybodyStrategy()

        system.registerCreator(camera)
        system.registerHandler(doggo)

        camera.detect_movement("lizzard", "outside",
                               datetime(2020, 11, 26, 13, 20))

        print_mock.assert_not_called()
示例#6
0
    def test_cameraAlertCreated_doggoAlertHandled(self, print_mock):
        # setup

        camera = Camera("Camera1", ["outside", "garage"])
        doggo = Doggo("Jake")
        system = SecuritySystem()
        system.strategy = EverybodyStrategy()

        system.registerCreator(camera)
        system.registerHandler(doggo)

        # act
        camera.detect_movement("human", "outside",
                               datetime(2020, 11, 26, 13, 20))

        # assert
        print_mock.assert_called_once_with("Jake: growl!")
示例#7
0
class SecuritySystemTest(unittest.TestCase):
  def setUp(self):
    self.security = SecuritySystem()

  def test_registerHandler_handler_isInHandlers(self):
    handler_mock = Mock(name="handler", spec=AlertHandler)
    self.security.registerHandler(handler_mock)
    self.assertIn(handler_mock, self.security.handlers)
  
  def test_registerHandler_integer_raisesTypeError(self):
    with self.assertRaises(TypeError):
      self.security.registerHandler(5)



  # @patch.object(Doggo, "handle_alert")
  # def test_alertCreated_doggoRegistred_doggoHandleAlert(self, handle_alert_mock):
  #   doggo = Doggo("Jake")
  #   self.security.registerHandler(doggo)
  #   self.security.createAlert("outside", "human", 3)
  #   handle_alert_mock.assert_called_once()

  # TODO test wheter security system calls strategy using manually made mocks


  def test_registerCreator_camera_isInCreator(self):
    #setup
    camera_mock = Camera("Testcamera", ["outside"])
    
    #act
    self.security.registerCreator(camera_mock)

    #assert
    self.assertIn(camera_mock, self.security.creators)
    self.assertEqual(camera_mock.security_system, self.security)

  def test_registerCreator_integer_raisesTypeError(self):
    with self.assertRaises(TypeError):
      self.security.registerCreator(5)
import time
import RPi.GPIO as GPIO
from security_system import SecuritySystem
from my_logger import MyLogger

try:
  logger = MyLogger("SecurityTester")
  logger.info("Started security system test")
  security_system = SecuritySystem()
  logger.info("Security system enabled")
  security_system.enable()

  for i in range(10):
    logger.info("Active for " + str(10-i) + " more seconds")
    time.sleep(1)


  security_system.disable()
  logger.info("Security system disabled")

except KeyboardInterrupt:
  logger.info("Quit!")
  if security_system.enabled:
    security_system.disable()

finally:
  GPIO.cleanup()

import time
import RPi.GPIO as GPIO
from security_system import SecuritySystem
from my_logger import MyLogger

try:
    logger = MyLogger("SecurityTester")
    logger.info("Started security system test")
    security_system = SecuritySystem()
    logger.info("Security system enabled")
    security_system.enable()

    for i in range(10):
        logger.info("Active for " + str(10 - i) + " more seconds")
        time.sleep(1)

    security_system.disable()
    logger.info("Security system disabled")

except KeyboardInterrupt:
    logger.info("Quit!")
    if security_system.enabled:
        security_system.disable()

finally:
    GPIO.cleanup()
示例#10
0
 def setUp(self):
   self.security = SecuritySystem()