Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions requirements_tests.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ mock
pylint
pytest
pytest-cov
requests_mock
tox
128 changes: 128 additions & 0 deletions tests/fixtures/ring_devices.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
{
"authorized_doorbots": [
{
"address": "123 Second St",
"alerts": {"connection": "online"},
"battery_life": 51,
"description": "Back Door",
"device_id": "aacdef124",
"external_connection": false,
"features": {
"advanced_motion_enabled": false,
"motion_message_enabled": false,
"motions_enabled": true,
"people_only_enabled": false,
"shadow_correction_enabled": false,
"show_recordings": true},
"firmware_version": "1.4.26",
"id": 987653,
"kind": "lpd_v1",
"latitude": 12.000000,
"longitude": -70.12345,
"motion_snooze": null,
"owned": true,
"owner": {
"email": "foo@bar.org",
"first_name": "Foo",
"id": 999999,
"last_name": "Bar"},
"settings": {
"chime_settings": {
"duration": 3,
"enable": true,
"type": 1},
"doorbell_volume": 5,
"enable_vod": true,
"live_view_preset_profile": "highest",
"live_view_presets": [
"low",
"middle",
"high",
"highest"],
"motion_announcement": false,
"motion_snooze_preset_profile": "low",
"motion_snooze_presets": [
"none",
"low",
"medium",
"high"]},
"subscribed": true,
"subscribed_motions": true,
"time_zone": "America/New_York"}],
"chimes": [
{
"address": "123 Main St",
"alerts": {"connection": "online"},
"description": "Downstairs",
"device_id": "abcdef123",
"do_not_disturb": {"seconds_left": 0},
"features": {"ringtones_enabled": true},
"firmware_version": "1.2.3",
"id": 999999,
"kind": "chime",
"latitude": 12.000000,
"longitude": -70.12345,
"owned": true,
"owner": {
"email": "foo@bar.org",
"first_name": "Marcelo",
"id": 999999,
"last_name": "Assistant"},
"settings": {
"ding_audio_id": null,
"ding_audio_user_id": null,
"motion_audio_id": null,
"motion_audio_user_id": null,
"volume": 2},
"time_zone": "America/New_York"}],
"doorbots": [
{
"address": "123 Main St",
"alerts": {"connection": "online"},
"battery_life": 4081,
"description": "Front Door",
"device_id": "aacdef123",
"external_connection": false,
"features": {
"advanced_motion_enabled": false,
"motion_message_enabled": false,
"motions_enabled": true,
"people_only_enabled": false,
"shadow_correction_enabled": false,
"show_recordings": true},
"firmware_version": "1.4.26",
"id": 987652,
"kind": "lpd_v1",
"latitude": 12.000000,
"longitude": -70.12345,
"motion_snooze": null,
"owned": true,
"owner": {
"email": "foo@bar.org",
"first_name": "Home",
"id": 999999,
"last_name": "Assistant"},
"settings": {
"chime_settings": {
"duration": 3,
"enable": true,
"type": 0},
"doorbell_volume": 1,
"enable_vod": true,
"live_view_preset_profile": "highest",
"live_view_presets": [
"low",
"middle",
"high",
"highest"],
"motion_announcement": false,
"motion_snooze_preset_profile": "low",
"motion_snooze_presets": [
"null",
"low",
"medium",
"high"]},
"subscribed": true,
"subscribed_motions": true,
"time_zone": "America/New_York"}]
}
26 changes: 26 additions & 0 deletions tests/fixtures/ring_ding_active.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
[{
"audio_jitter_buffer_ms": 0,
"device_kind": "lpd_v1",
"doorbot_description": "Front Door",
"doorbot_id": 987652,
"expires_in": 180,
"id": 123456789,
"id_str": "123456789",
"kind": "ding",
"motion": false,
"now": 1490949469.5498993,
"optimization_level": 1,
"protocol": "sip",
"sip_ding_id": "123456789",
"sip_endpoints": null,
"sip_from": "sip:abc123@ring.com",
"sip_server_ip": "192.168.0.1",
"sip_server_port": "15063",
"sip_server_tls": "false",
"sip_session_id": "28qdvjh-2043",
"sip_to": "sip:28qdvjh-2043@192.168.0.1:15063;transport=tcp",
"sip_token": "adecc24a428ed704b2d80adb621b5775755915529639e",
"snapshot_url": "",
"state": "ringing",
"video_jitter_buffer_ms": 0
}]
10 changes: 10 additions & 0 deletions tests/fixtures/ring_doorbots.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[{
"answered": false,
"created_at": "2017-03-05T15:03:40.000Z",
"events": [],
"favorite": false,
"id": 987654321,
"kind": "motion",
"recording": {"status": "ready"},
"snapshot_url": ""
}]
36 changes: 36 additions & 0 deletions tests/fixtures/ring_session.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"profile": {
"authentication_token": "12345678910",
"email": "foo@bar.org",
"features": {
"chime_dnd_enabled": false,
"chime_pro_enabled": true,
"delete_all_enabled": true,
"delete_all_settings_enabled": false,
"device_health_alerts_enabled": true,
"floodlight_cam_enabled": true,
"live_view_settings_enabled": true,
"lpd_enabled": true,
"lpd_motion_announcement_enabled": false,
"multiple_calls_enabled": true,
"multiple_delete_enabled": true,
"nw_enabled": true,
"nw_larger_area_enabled": false,
"nw_user_activated": false,
"owner_proactive_snoozing_enabled": true,
"power_cable_enabled": false,
"proactive_snoozing_enabled": false,
"reactive_snoozing_enabled": false,
"remote_logging_format_storing": false,
"remote_logging_level": 1,
"ringplus_enabled": true,
"starred_events_enabled": true,
"stickupcam_setup_enabled": true,
"subscriptions_enabled": true,
"ujet_enabled": false,
"video_search_enabled": false,
"vod_enabled": false},
"first_name": "Home",
"id": 999999,
"last_name": "Assistant"}
}
9 changes: 9 additions & 0 deletions tests/helpers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
"""Helper methods for Ring DoorBell tests."""
import os


def load_fixture(filename):
"""Load a fixture."""
path = os.path.join(os.path.dirname(__file__), 'fixtures', filename)
with open(path) as fdp:
return fdp.read()
39 changes: 39 additions & 0 deletions tests/test_base.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# -*- coding:utf-8 -*-
"""Define basic data for unittests."""
import os
import unittest
import requests_mock
from tests.helpers import load_fixture

USERNAME = 'foo'
PASSWORD = 'bar'
CACHE = os.path.join(os.path.dirname(__file__), 'cache.db')


class RingUnitTestBase(unittest.TestCase):
"""Top level Ring Doorbell test class."""

@requests_mock.Mocker()
def setUp(self, mock):
"""Setup unit test and load mock."""
from ring_doorbell import Ring
mock.get('https://api.ring.com/clients_api/ring_devices',
text=load_fixture('ring_devices.json'))
mock.post('https://api.ring.com/clients_api/session',
text=load_fixture('ring_session.json'))
mock.put('https://api.ring.com/clients_api/device',
text=load_fixture('ring_devices.json'))

self.ring = Ring(USERNAME, PASSWORD, cache_file=CACHE)
self.ring_persistent = \
Ring(USERNAME, PASSWORD, cache_file=CACHE, persist_token=True)

def cleanup(self):
"""Cleanup any data created from the tests."""
self.ring = None
if os.path.isfile(CACHE):
os.remove(CACHE)

def tearDown(self):
"""Stop everything started."""
self.cleanup()
Loading