1
0
mirror of https://github.com/linkedin/oncall.git synced 2025-11-27 23:18:38 +02:00
Files
oncall/e2e/test_services.py
Daniel Wang 29ad8e3d02 Add override phone number to teams
Allows teams to configure a phone number that overrides a user's
regular number when they're the current primary on-call. This
lets teams pass around an on-call pager with a single phone
number, for example.
2018-01-10 16:17:14 -08:00

153 lines
4.9 KiB
Python

# Copyright (c) LinkedIn Corporation. All rights reserved. Licensed under the BSD-2 Clause license.
# See LICENSE in the project root for license information.
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests
import time
from testutils import prefix, api_v0
def test_services():
service_name = 'test_service'
def clean_up():
requests.delete(api_v0('services/'+service_name))
clean_up()
# test creating services
re = requests.post(api_v0('services'), json={'name': service_name})
assert re.status_code == 201
# test getting all services
re = requests.get(api_v0('services'))
assert re.status_code == 200
services = re.json()
assert isinstance(services, list)
assert service_name in set(services)
# test get one service
re = requests.get(api_v0('services/'+service_name))
assert re.status_code == 200
service = re.json()
assert isinstance(service, dict)
assert set(['id', 'name']) == set(service.keys())
# test delete service
re = requests.delete(api_v0('services/'+service_name))
assert re.status_code == 200
clean_up()
@prefix('test_v0_team_services')
def test_teams_services_mappings(team, service):
team_name = team.create()
service_name = service.create()
# test add associate a service to a team
re = requests.post(api_v0('teams/%s/services' % team_name),
json={'name': service_name})
assert re.status_code == 201
# test get service list for a team
re = requests.get(api_v0('teams/%s/services' % team_name))
assert re.status_code == 200
services = re.json()
assert isinstance(services, list)
assert set(services) == set([service_name])
# test get team list for a service
re = requests.get(api_v0('services/%s/teams' % service_name))
assert re.status_code == 200
teams = re.json()
assert isinstance(teams, list)
assert set(teams) == set([team_name])
# delete team service mapping
re = requests.delete(api_v0('teams/%s/services/%s' % (team_name, service_name)))
assert re.status_code == 200
# verify delete
re = requests.get(api_v0('teams/%s/services' % team_name))
assert re.status_code == 200
services = re.json()
assert isinstance(services, list)
assert len(services) == 0
@prefix('test_v0_service_oncall')
def test_api_v0_services_current_oncall(team, service, user, role, event):
team_name = team.create()
service_name = service.create()
service.associate_team(service_name, team_name)
user_name = user.create()
user_name_2 = user.create()
role_name = role.create()
role_name_2 = role.create()
user.add_to_team(user_name, team_name)
user.add_to_team(user_name_2, team_name)
start, end = int(time.time()), int(time.time()+36000)
event_data_1 = {'start': start,
'end': end,
'user': user_name,
'team': team_name,
'role': role_name}
event_data_2 = {'start': start - 5,
'end': end - 5,
'user': user_name_2,
'team': team_name,
'role': role_name_2}
# Create current event
event.create(event_data_1)
# Create extra event with different role
event.create(event_data_2)
re = requests.get(api_v0('services/%s/oncall/%s' % (service_name, role_name)))
assert re.status_code == 200
results = re.json()
assert results[0]['start'] == start
assert results[0]['end'] == end
re = requests.get(api_v0('services/%s/oncall' % service_name))
assert re.status_code == 200
results = re.json()
assert len(results) == 2
@prefix('test_v0_service_override_number')
def test_api_v0_service_override_number(team, user, role, event, service):
team_name = team.create()
user_name = user.create()
user_name_2 = user.create()
service_name = service.create()
user.add_to_team(user_name, team_name)
user.add_to_team(user_name_2, team_name)
start, end = int(time.time()), int(time.time()+36000)
event_data_1 = {'start': start,
'end': end,
'user': user_name,
'team': team_name,
'role': 'primary'}
event.create(event_data_1)
re = requests.post(api_v0('teams/%s/services' % team_name),
json={'name': service_name})
override_num = '12345'
re = requests.put(api_v0('teams/'+team_name), json={'override_phone_number': override_num})
re = requests.get(api_v0('services/%s/oncall/%s' % (service_name, 'primary')))
assert re.status_code == 200
results = re.json()
assert results[0]['start'] == start
assert results[0]['end'] == end
assert results[0]['contacts']['call'] == override_num
re = requests.get(api_v0('services/%s/oncall' % service_name))
assert re.status_code == 200
results = re.json()
assert results[0]['contacts']['call'] == override_num