You've already forked oncall
mirror of
https://github.com/linkedin/oncall.git
synced 2025-11-27 23:18:38 +02:00
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.
153 lines
4.9 KiB
Python
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
|