Пример #1
0
 def test_update_mw_case_5(self, mw_update_mock):
     """Test successful update."""
     start1 = datetime.now(pytz.utc) + timedelta(days=1)
     end1 = start1 + timedelta(hours=6)
     start2 = datetime.now(pytz.utc) + timedelta(hours=5)
     end2 = start2 + timedelta(hours=1, minutes=30)
     self.napp.maintenances = {
         '1234': MW(start1, end1, self.controller, items=[
             '00:00:00:00:00:00:12:23'
         ]),
         '4567': MW(start2, end2, self.controller, items=[
             '12:34:56:78:90:ab:cd:ef'
         ])
     }
     start_new = datetime.utcnow() + timedelta(days=1, hours=3)
     end_new = start_new - timedelta(hours=5)
     payload = {
         "start": start_new.strftime(TIME_FMT),
         "end": end_new.strftime(TIME_FMT)
     }
     mw_update_mock.side_effect = ValueError('End before start not '
                                             'allowed.')
     url = f'{self.server_name_url}/1234'
     response = self.api.patch(url, data=json.dumps(payload),
                               content_type='application/json')
     current_data = json.loads(response.data)
     self.assertEqual(response.status_code, 400)
     self.assertEqual(current_data, 'End before start not allowed.')
     mw_update_mock.assert_called_once_with(payload)
Пример #2
0
 def test_get_mw_case_4(self, mw_as_dict_mock):
     """Test get existent id."""
     start1 = datetime.now(pytz.utc) + timedelta(days=1)
     end1 = start1 + timedelta(hours=6)
     start2 = datetime.now(pytz.utc) + timedelta(hours=5)
     end2 = start2 + timedelta(hours=1, minutes=30)
     self.napp.maintenances = {
         '1234': MW(start1, end1, self.controller, items=[
             '00:00:00:00:00:00:12:23'
         ]),
         '4567': MW(start2, end2, self.controller, items=[
             '12:34:56:78:90:ab:cd:ef'
         ])
     }
     mw_dict = {
         'id': '4567',
         'start': start2.strftime(TIME_FMT),
         'end': end2.strftime(TIME_FMT),
         'items': [
             '12:34:56:78:90:ab:cd:ef'
         ]
     }
     mw_as_dict_mock.return_value = mw_dict
     url = f'{self.server_name_url}/4567'
     response = self.api.get(url)
     current_data = json.loads(response.data)
     self.assertEqual(response.status_code, 200)
     self.assertEqual(current_data, mw_dict)
     mw_as_dict_mock.assert_called_once()
Пример #3
0
 def test_update_mw_case_3(self, mw_update_mock, sched_remove_mock,
                           sched_add_mock):
     """Test successful update."""
     start1 = datetime.now(pytz.utc) + timedelta(days=1)
     end1 = start1 + timedelta(hours=6)
     start2 = datetime.now(pytz.utc) + timedelta(hours=5)
     end2 = start2 + timedelta(hours=1, minutes=30)
     self.napp.maintenances = {
         '1234': MW(start1, end1, self.controller, items=[
             '00:00:00:00:00:00:12:23'
         ]),
         '4567': MW(start2, end2, self.controller, items=[
             '12:34:56:78:90:ab:cd:ef'
         ])
     }
     start_new = datetime.utcnow() + timedelta(days=1, hours=3)
     payload = {
         "start": start_new.strftime(TIME_FMT),
     }
     url = f'{self.server_name_url}/1234'
     response = self.api.patch(url, data=json.dumps(payload),
                               content_type='application/json')
     current_data = json.loads(response.data)
     self.assertEqual(response.status_code, 201)
     self.assertEqual(current_data,
                      {'response': 'Maintenance 1234 updated'})
     mw_update_mock.assert_called_once_with(payload)
     sched_add_mock.assert_called_once()
     sched_remove_mock.assert_called_once()
Пример #4
0
 def test_end_mw_case_4(self):
     """Test method that finishes the maintenance now."""
     start1 = datetime.now(pytz.utc) - timedelta(hours=5)
     end1 = start1 + timedelta(hours=4)
     start2 = datetime.now(pytz.utc) + timedelta(hours=5)
     end2 = start2 + timedelta(hours=1, minutes=30)
     self.napp.maintenances = {
         '1234':
         MW(start1,
            end1,
            self.controller,
            items=['00:00:00:00:00:00:12:23']),
         '4567':
         MW(start2,
            end2,
            self.controller,
            items=['12:34:56:78:90:ab:cd:ef'])
     }
     url = f'{self.server_name_url}/1234/end'
     response = self.api.patch(url)
     current_data = json.loads(response.data)
     self.assertEqual(response.status_code, 400)
     self.assertEqual(
         current_data,
         {'response': 'Maintenance window 1234 has already '
          'finished.'})
Пример #5
0
 def test_update_mw_case_1(self):
     """Test update non-existent id."""
     start1 = datetime.now(pytz.utc) + timedelta(days=1)
     end1 = start1 + timedelta(hours=6)
     start2 = datetime.now(pytz.utc) + timedelta(hours=5)
     end2 = start2 + timedelta(hours=1, minutes=30)
     self.napp.maintenances = {
         '1234':
         MW(start1,
            end1,
            self.controller,
            items=['00:00:00:00:00:00:12:23']),
         '4567':
         MW(start2,
            end2,
            self.controller,
            items=['12:34:56:78:90:ab:cd:ef'])
     }
     payload = {
         "start": start1.strftime(TIME_FMT),
     }
     url = f'{self.server_name_url}/2345'
     response = self.api.patch(url,
                               data=json.dumps(payload),
                               content_type='application/json')
     current_data = json.loads(response.data)
     self.assertEqual(response.status_code, 404)
     self.assertEqual(current_data,
                      {'response': 'Maintenance with id 2345 '
                       'not found'})
Пример #6
0
 def test_update_mw_case_2(self):
     """Test update no data."""
     start1 = datetime.now(pytz.utc) + timedelta(days=1)
     end1 = start1 + timedelta(hours=6)
     start2 = datetime.now(pytz.utc) + timedelta(hours=5)
     end2 = start2 + timedelta(hours=1, minutes=30)
     self.napp.maintenances = {
         '1234':
         MW(start1,
            end1,
            self.controller,
            items=['00:00:00:00:00:00:12:23']),
         '4567':
         MW(start2,
            end2,
            self.controller,
            items=['12:34:56:78:90:ab:cd:ef'])
     }
     payload = {
         "start": start1.strftime(TIME_FMT),
     }
     url = f'{self.server_name_url}/1234'
     response = self.api.patch(url,
                               data=json.dumps(payload),
                               content_type='text/plain')
     current_data = json.loads(response.data)
     self.assertEqual(response.status_code, 415)
     self.assertEqual(current_data,
                      'Bad request: The request do not have a json.')
Пример #7
0
 def test_remove_mw_case_2(self, sched_remove_mock):
     """Test remove existent id."""
     start1 = datetime.now(pytz.utc) + timedelta(days=1)
     end1 = start1 + timedelta(hours=6)
     start2 = datetime.now(pytz.utc) + timedelta(hours=5)
     end2 = start2 + timedelta(hours=1, minutes=30)
     self.napp.maintenances = {
         '1234':
         MW(start1,
            end1,
            self.controller,
            items=['00:00:00:00:00:00:12:23']),
         '4567':
         MW(start2,
            end2,
            self.controller,
            items=['12:34:56:78:90:ab:cd:ef'])
     }
     url = f'{self.server_name_url}/1234'
     response = self.api.delete(url)
     current_data = json.loads(response.data)
     self.assertEqual(response.status_code, 200)
     self.assertEqual(
         current_data,
         {'response': 'Maintenance with id 1234 '
          'successfully removed'})
     sched_remove_mock.assert_called_once()
     self.assertEqual(len(self.napp.maintenances), 1)
Пример #8
0
 def test_remove_mw_case_1(self):
     """Test remove non-existent id."""
     start1 = datetime.now(pytz.utc) + timedelta(days=1)
     end1 = start1 + timedelta(hours=6)
     start2 = datetime.now(pytz.utc) + timedelta(hours=5)
     end2 = start2 + timedelta(hours=1, minutes=30)
     self.napp.maintenances = {
         '1234':
         MW(start1,
            end1,
            self.controller,
            items=['00:00:00:00:00:00:12:23']),
         '4567':
         MW(start2,
            end2,
            self.controller,
            items=['12:34:56:78:90:ab:cd:ef'])
     }
     url = f'{self.server_name_url}/2345'
     response = self.api.delete(url)
     current_data = json.loads(response.data)
     self.assertEqual(response.status_code, 404)
     self.assertEqual(current_data,
                      {'response': 'Maintenance with id 2345 '
                       'not found'})
Пример #9
0
 def test_remove_mw_case_3(self):
     """Test remove existent id."""
     start1 = datetime.now(pytz.utc) - timedelta(days=1)
     end1 = start1 + timedelta(hours=6)
     start2 = datetime.now(pytz.utc) + timedelta(hours=5)
     end2 = start2 + timedelta(hours=1, minutes=30)
     self.napp.maintenances = {
         '1234':
         MW(start1,
            end1,
            self.controller,
            status=Status.RUNNING,
            items=['00:00:00:00:00:00:12:23']),
         '4567':
         MW(start2,
            end2,
            self.controller,
            items=['12:34:56:78:90:ab:cd:ef'])
     }
     url = f'{self.server_name_url}/1234'
     response = self.api.delete(url)
     current_data = json.loads(response.data)
     self.assertEqual(response.status_code, 400)
     self.assertEqual(current_data['description'],
                      'Deleting a running maintenance is not allowed')
Пример #10
0
 def test_get_mw_case_3(self, mw_as_dict_mock):
     """Test get non-existent id."""
     start1 = datetime.now(pytz.utc) + timedelta(days=1)
     end1 = start1 + timedelta(hours=6)
     start2 = datetime.now(pytz.utc) + timedelta(hours=5)
     end2 = start2 + timedelta(hours=1, minutes=30)
     self.napp.maintenances = {
         '1234':
         MW(start1,
            end1,
            self.controller,
            items=['00:00:00:00:00:00:12:23']),
         '4567':
         MW(start2,
            end2,
            self.controller,
            items=['12:34:56:78:90:ab:cd:ef'])
     }
     url = f'{self.server_name_url}/2345'
     response = self.api.get(url)
     current_data = json.loads(response.data)
     self.assertEqual(response.status_code, 404)
     self.assertEqual(current_data['description'],
                      'Maintenance with id 2345 not found')
     mw_as_dict_mock.assert_not_called()
Пример #11
0
 def setUp(self):
     """Initialize before tests are executed."""
     self.controller = get_controller_mock()
     self.start = datetime.datetime.now(pytz.utc)
     self.start += datetime.timedelta(days=1)
     self.end = self.start + datetime.timedelta(hours=6)
     self.items = ["01:23:45:67:89:ab:cd:ef"]
     self.maintenance = MW(self.start,
                           self.end,
                           self.controller,
                           items=self.items)
Пример #12
0
 def test_get_mw_case_2(self, mw_as_dict_mock):
     """Test get all maintenance windows."""
     start1 = datetime.now(pytz.utc) + timedelta(days=1)
     end1 = start1 + timedelta(hours=6)
     start2 = datetime.now(pytz.utc) + timedelta(hours=5)
     end2 = start2 + timedelta(hours=1, minutes=30)
     self.napp.maintenances = {
         '1234': MW(start1, end1, self.controller, items=[
             '00:00:00:00:00:00:12:23'
         ]),
         '4567': MW(start2, end2, self.controller, items=[
             '12:34:56:78:90:ab:cd:ef'
         ])
     }
     mw_dict = [
         {
             'id': '1234',
             'start': start1.strftime(TIME_FMT),
             'end': end1.strftime(TIME_FMT),
             'items': [
                 '00:00:00:00:00:00:12:23'
             ]
         },
         {
             'id': '4567',
             'start': start2.strftime(TIME_FMT),
             'end': end2.strftime(TIME_FMT),
             'items': [
                 '12:34:56:78:90:ab:cd:ef'
             ]
         }
     ]
     mw_as_dict_mock.side_effect = mw_dict
     url = f'{self.server_name_url}'
     response = self.api.get(url)
     current_data = json.loads(response.data)
     self.assertEqual(response.status_code, 200)
     self.assertEqual(current_data, mw_dict)
     self.assertEqual(mw_as_dict_mock.call_count, 2)
Пример #13
0
 def test_end_mw_case_1(self):
     """Test method that finishes the maintenance now."""
     start1 = datetime.now(pytz.utc) + timedelta(days=1)
     end1 = start1 + timedelta(hours=6)
     start2 = datetime.now(pytz.utc) + timedelta(hours=5)
     end2 = start2 + timedelta(hours=1, minutes=30)
     self.napp.maintenances = {
         '1234':
         MW(start1,
            end1,
            self.controller,
            items=['00:00:00:00:00:00:12:23']),
         '4567':
         MW(start2,
            end2,
            self.controller,
            items=['12:34:56:78:90:ab:cd:ef'])
     }
     url = f'{self.server_name_url}/2345/end'
     response = self.api.patch(url)
     current_data = json.loads(response.data)
     self.assertEqual(response.status_code, 404)
     self.assertEqual(current_data['description'],
                      'Maintenance with id 2345 not found')