def test_reset_password(self): response = Mock() response.status_code = 200 with patch('requests.post', return_value=response) as post: result = BedditClient.reset_password('*****@*****.**') self.assertTrue(result) post.assert_called_once_with( BedditClient.build_full_path('/api/v1/user/password_reset'), data={'email': '*****@*****.**'})
def test_get_sleep(self): client = self._default_client timestamp = 1471761649 endpoint = BedditClient.build_full_path('/api/v1/user/10000/sleep') response = Mock() response.status_code = 200 sleep_object = json.load( open(os.path.join(BASE_DIR, 'fixtures/sleep.json'))) response.json = lambda: sleep_object with patch('requests.get', return_value=response) as get: sleeps = client.get_sleeps( start=datetime.datetime.utcfromtimestamp(timestamp), end=datetime.datetime.utcfromtimestamp(timestamp), limit=10, reverse=True) self.assertEqual(len(sleeps), 1) self.assertEqual(type(sleeps[0]), Sleep) args, kwargs = get.call_args self.assertEqual(args[0], endpoint) self.assertDictEqual( kwargs['params'], { 'start_date': '2016-08-21', 'end_date': '2016-08-21', 'limit': 10, 'reverse': 'yes' })
def test_get_group(self): client = self._default_client endpoint = BedditClient.build_full_path('/api/v1/user/10000/group') response = Mock() response.status_code = 200 group_object = json.load( open(os.path.join(BASE_DIR, 'fixtures/group.json'))) response.json = lambda: [group_object] with patch('requests.get', return_value=response) as get: groups = client.get_groups() self.assertEqual(type(groups[0]), Group) args = get.call_args[0] self.assertEqual(args[0], endpoint)
def test_update_user(self): client = self._default_client endpoint = BedditClient.build_full_path('/api/v1/user/10000') response = Mock() response.status_code = 200 user_object = json.load( open(os.path.join(BASE_DIR, 'fixtures/user.json'))) response.json = lambda: user_object with patch('requests.put', return_value=response) as put: user = client.update_user(name='foo') self.assertEqual(type(user), User) args = put.call_args[0] self.assertEqual(args[0], endpoint)
def test_remove_group_invite(self): client = self._default_client endpoint = BedditClient.build_full_path( '/api/v1/group/200/member/10000/remove') response = Mock() response.status_code = 200 group_object = json.load( open(os.path.join(BASE_DIR, 'fixtures/group.json'))) response.json = lambda: [group_object] with patch('requests.post', return_value=response) as post: groups = client.remove_group_invite(group_id=200, user_id=10000) self.assertEqual(type(groups[0]), Group) args = post.call_args[0] self.assertEqual(args[0], endpoint)
def test_invite_to_group(self): client = self._default_client endpoint = BedditClient.build_full_path('/api/v1/group/new/invite') response = Mock() response.status_code = 200 group_object = json.load( open(os.path.join(BASE_DIR, 'fixtures/group.json'))) response.json = lambda: [group_object] with patch('requests.post', return_value=response) as post: groups = client.invite_to_group(email="*****@*****.**") self.assertEqual(type(groups[0]), Group) args, kwargs = post.call_args self.assertEqual(args[0], endpoint) self.assertDictEqual(kwargs['data'], {'email': '*****@*****.**'})
def _inner(self, *args, **kwargs): response = Mock() response.json.side_effect = lambda: { 'user': 10000, 'access_token': 'dummytoken' } response.status_code = 200 payload = { 'grant_type': 'password', 'username': '******', 'password': '******' } with patch('requests.post', return_value=response) as post: retval = testcase(self, *args, **kwargs) post.assert_called_with( BedditClient.build_full_path('api/v1/auth/authorize'), data=payload) return retval
def test_get_session(self): client = self._default_client timestamp = 1471761649 endpoint = BedditClient.build_full_path('/api/v1/user/10000/session') response = Mock() response.status_code = 200 session_object = json.load( open(os.path.join(BASE_DIR, 'fixtures/session.json'))) response.json = lambda: session_object dt = datetime.datetime.fromtimestamp(timestamp) with patch('requests.get', return_value=response) as get: sessions = client.get_sessions(updated_after=dt) self.assertEqual(len(sessions), 1) self.assertEqual(type(sessions[0]), Session) args, kwargs = get.call_args self.assertEqual(args[0], endpoint) self.assertDictEqual(kwargs['params'], {'updated_after': timestamp})
def _default_client(self): return BedditClient('username', 'password')
from datetime import datetime, timedelta from beddit.client import BedditClient from beddit.sleep import SleepStage import requests, json # Change these to your own values exist_access_token = '' beddit_username = '' beddit_password = '' days_to_migrate = 7 # read in data from Beddit API client=BedditClient(beddit_username, beddit_password) end_date = datetime.today() start_date = end_date-timedelta(days=days_to_migrate) sleeps = client.get_sleeps(start=start_date, end=end_date) # extract Exist-compatible variables and convert to a JSON structure json_data=[] for sleep in sleeps: data_date=sleep.date.strftime('%Y-%m-%d') time_asleep_mins = int((sleep.property.stage_duration_S+sleep.property.stage_duration_R)/60) bedtime = sleep.session_range_start if (bedtime.hour > 12): noon=bedtime.replace(hour=12, minute=0, second=0) else: yesterday=bedtime-timedelta(days=1) noon=bedtime.replace(year=yesterday.year, month=yesterday.month, day=yesterday.day, hour=12, minute=0, second=0) bedtime_since_noon_mins=int((bedtime-noon).seconds/60)