|
@@ 393-417 (lines=25) @@
|
| 390 |
|
) |
| 391 |
|
) |
| 392 |
|
|
| 393 |
|
def test_update_mw_case_4(self): |
| 394 |
|
"""Test successful update.""" |
| 395 |
|
start1 = datetime.now(pytz.utc) + timedelta(days=1) |
| 396 |
|
end1 = start1 + timedelta(hours=6) |
| 397 |
|
self.scheduler.get_maintenance.return_value = MW.construct( |
| 398 |
|
id = '1234', |
| 399 |
|
start = start1.replace(microsecond=0), |
| 400 |
|
end = end1.replace(microsecond=0), |
| 401 |
|
switches = [ |
| 402 |
|
'00:00:00:00:00:00:12:23' |
| 403 |
|
], |
| 404 |
|
) |
| 405 |
|
start_new = datetime.now(pytz.utc) - timedelta(days=1, hours=3) |
| 406 |
|
payload = { |
| 407 |
|
"start": start_new.strftime(TIME_FMT), |
| 408 |
|
} |
| 409 |
|
url = f'{self.server_name_url}/1234' |
| 410 |
|
response = self.api.patch(url, data=json.dumps(payload), |
| 411 |
|
content_type='application/json') |
| 412 |
|
current_data = json.loads(response.data) |
| 413 |
|
self.assertEqual(response.status_code, 400) |
| 414 |
|
self.assertEqual(current_data['description'], |
| 415 |
|
'Start in the past not allowed') |
| 416 |
|
self.scheduler.get_maintenance.assert_called_once_with('1234') |
| 417 |
|
self.scheduler.update.assert_not_called() |
| 418 |
|
|
| 419 |
|
def test_update_mw_case_5(self): |
| 420 |
|
"""Test successful update.""" |
|
@@ 673-697 (lines=25) @@
|
| 670 |
|
self.scheduler.get_maintenance.assert_called_once_with('1234') |
| 671 |
|
self.scheduler.update.assert_not_called() |
| 672 |
|
|
| 673 |
|
def test_extend_case_6(self): |
| 674 |
|
"""Test maintenance already finished.""" |
| 675 |
|
start1 = datetime.now(pytz.utc) - timedelta(hours=3) |
| 676 |
|
end1 = start1 + timedelta(hours=2) |
| 677 |
|
self.scheduler.get_maintenance.return_value = MW.construct( |
| 678 |
|
id = '1234', |
| 679 |
|
start = start1.replace(microsecond=0), |
| 680 |
|
end = end1.replace(microsecond=0), |
| 681 |
|
switches = [ |
| 682 |
|
'00:00:00:00:00:00:12:23' |
| 683 |
|
], |
| 684 |
|
status = 'finished', |
| 685 |
|
) |
| 686 |
|
url = f'{self.server_name_url}/1234/extend' |
| 687 |
|
payload = { |
| 688 |
|
'minutes': 240 |
| 689 |
|
} |
| 690 |
|
response = self.api.patch(url, data=json.dumps(payload), |
| 691 |
|
content_type='application/json') |
| 692 |
|
self.assertEqual(response.status_code, 400) |
| 693 |
|
current_data = json.loads(response.data) |
| 694 |
|
self.assertEqual(current_data['description'], |
| 695 |
|
'Maintenance window 1234 has already finished') |
| 696 |
|
self.scheduler.get_maintenance.assert_called_once_with('1234') |
| 697 |
|
self.scheduler.update.assert_not_called() |
| 698 |
|
|
| 699 |
|
def test_extend_case_7(self): |
| 700 |
|
"""Test no maintenace found.""" |
|
@@ 647-671 (lines=25) @@
|
| 644 |
|
'Minutes of extension must be integer') |
| 645 |
|
self.scheduler.update.assert_not_called() |
| 646 |
|
|
| 647 |
|
def test_extend_case_5(self): |
| 648 |
|
"""Test maintenance did not start.""" |
| 649 |
|
start1 = datetime.now(pytz.utc) + timedelta(hours=3) |
| 650 |
|
end1 = start1 + timedelta(hours=4) |
| 651 |
|
self.scheduler.get_maintenance.return_value = MW.construct( |
| 652 |
|
id = '1234', |
| 653 |
|
start = start1.replace(microsecond=0), |
| 654 |
|
end = end1.replace(microsecond=0), |
| 655 |
|
switches = [ |
| 656 |
|
'00:00:00:00:00:00:12:23' |
| 657 |
|
], |
| 658 |
|
status = 'pending', |
| 659 |
|
) |
| 660 |
|
url = f'{self.server_name_url}/1234/extend' |
| 661 |
|
payload = { |
| 662 |
|
'minutes': 240 |
| 663 |
|
} |
| 664 |
|
response = self.api.patch(url, data=json.dumps(payload), |
| 665 |
|
content_type='application/json') |
| 666 |
|
self.assertEqual(response.status_code, 400) |
| 667 |
|
current_data = json.loads(response.data) |
| 668 |
|
self.assertEqual(current_data['description'], |
| 669 |
|
'Maintenance window 1234 has not yet started') |
| 670 |
|
self.scheduler.get_maintenance.assert_called_once_with('1234') |
| 671 |
|
self.scheduler.update.assert_not_called() |
| 672 |
|
|
| 673 |
|
def test_extend_case_6(self): |
| 674 |
|
"""Test maintenance already finished.""" |