You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ngcp-panel/t/api-rest2/SystemContacts.yaml

677 lines
16 KiB

---
#check options
-
name: check OPTIONS for systemcontacts
type: item
method: OPTIONS
path: /api/systemcontacts/
conditions:
is:
code: 200
header:
Accept-Post: application/hal+json; profile=http://purl.org/sipwise/ngcp-api/#rel-systemcontacts
ok:
options:
- GET
- HEAD
- OPTIONS
- POST
#create a System Contact
-
name: create a System Contact
type: item
method: POST
path: /api/systemcontacts/
header:
Content-Type: application/json
content:
firstname: sys_contact_first1
lastname: sys_contact_last1
email: sys_contact1@syscontact.invalid
conditions:
is:
code: 201
retain:
system_contact_path1: header.location
#create a System Contact
-
name: create a System Contact
type: item
method: POST
path: /api/systemcontacts/
header:
Content-Type: application/json
content:
firstname: sys_contact_first2
lastname: sys_contact_last2
email: sys_contact2@syscontact.invalid
conditions:
is:
code: 201
retain:
system_contact_path2: header.location
#create a System Contact
-
name: create a System Contact
type: item
method: POST
path: /api/systemcontacts/
header:
Content-Type: application/json
content:
firstname: sys_contact_first3
lastname: sys_contact_last3
email: sys_contact3@syscontact.invalid
conditions:
is:
code: 201
retain:
system_contact_path3: header.location
#create a System Contact without email
-
name: create a System Contact without email
type: item
method: POST
path: /api/systemcontacts/
header:
Content-Type: application/json
content:
firstname: sys_contact_first4
lastname: sys_contact_last4
conditions:
is:
code: 422
body.code: 422
like:
body.message: field='email'
#verify pagination
-
name: verify pagination
type: pagination
method: GET
path: '/api/systemcontacts/?page=1&rows=2'
retain:
collection: body
conditions:
is:
code: 200
#check options on item
-
name: check OPTIONS for systemcontacts item
type: item
method: OPTIONS
path: '/${system_contact_path3}'
conditions:
is:
code: 200
ok:
options:
- GET
- HEAD
- OPTIONS
- PUT
- PATCH
- DELETE
#test item journal link
-
name: test item journal link
type: item
method: GET
path: /${system_contact_path1}
retain:
system_contact: body
perl_code: !!perl/code |
{
my ($retained) = @_;
$retained->{href} = $retained->{system_contact}->{_links}->{'ngcp:journal'}->[0]->{href};
$retained->{expected_href} = '/api/systemcontacts/'.$retained->{system_contact}->{id}.'/journal/';
}
conditions:
is:
code: 200
ok:
'${system_contact}._links': defined
'${system_contact}._links.ngcp:journal': defined
'${href}': '${expected_href}'
#test journal options
-
name: test journal options
type: item
method: OPTIONS
path: '/${system_contact_path1}/journal'
conditions:
is:
code: 200
ok:
options:
- GET
- HEAD
- OPTIONS
#test journal head
-
name: test journal head
type: item
method: HEAD
path: '/${system_contact_path1}/journal'
conditions:
is:
code: 200
#TestJournalTopJournalItem
-
name: include TestJournalTopJournalItem
type: include
file: TestJournalTopJournalItem.yaml
perl_code: !!perl/code |
{
my ($retained) = @_;
$retained->{journal_link} = '/api/systemcontacts/' . $retained->{system_contact}->{id} . '/journal/recent';
$retained->{resource} = 'systemcontacts';
$retained->{item} = $retained->{system_contact};
$retained->{operation} = 'create';
}
#test journal options
-
name: test journal options
type: item
method: OPTIONS
path: '/${journal_item_link}'
conditions:
is:
code: 200
ok:
options:
- GET
- HEAD
- OPTIONS
#test journal head
-
name: test journal head
type: item
method: HEAD
path: '/${journal_item_link}'
conditions:
is:
code: 200
#get systemcontact
-
name: GET systemcontact
type: item
method: GET
path: '/${system_contact_path3}'
retain:
system_contact: body
perl_code: !!perl/code |
{
my ($retained) = @_;
delete $retained->{system_contact}->{_links};
delete $retained->{system_contact}->{_embedded};
}
conditions:
is:
code: 200
ok:
'${system_contact}.id': defined
'${system_contact}.email': defined
'${system_contact}.firstname': defined
'${system_contact}.lastname': defined
'${system_contact}.reseller_id': undefined
like:
'${system_contact}.id': '[0-9]+'
#put system_contact with missing content type
-
name: PUT system_contact with missing content type
type: item
method: PUT
path: '/${system_contact_path3}'
header:
Prefer: return=minimal
conditions:
is:
code: 415
#put system_contact with unsupported content type
-
name: PUT system_contact with unsupported content type
type: item
method: PUT
path: '/${system_contact_path3}'
header:
Content-Type: application/xxx
Prefer: return=minimal
conditions:
is:
code: 415
#put system_contact with no body
-
name: PUT system_contact with no body
type: item
method: PUT
path: '/${system_contact_path3}'
header:
Content-Type: application/json
Prefer: return=representation
conditions:
is:
code: 400
#put systemcontact
-
name: PUT systemcontact
type: item
method: PUT
path: '/${system_contact_path3}'
header:
Content-Type: application/json
Prefer: return=representation
content: '${system_contact}'
conditions:
is:
code: 200
#test item journal link
-
name: test item journal link
type: item
method: GET
path: /${system_contact_path3}
retain:
system_contact: body
perl_code: !!perl/code |
{
my ($retained) = @_;
$retained->{href} = $retained->{system_contact}->{_links}->{'ngcp:journal'}->[0]->{href};
$retained->{expected_href} = '/api/systemcontacts/'.$retained->{system_contact}->{id}.'/journal/';
}
conditions:
is:
code: 200
ok:
'${system_contact}._links': defined
'${system_contact}._links.ngcp:journal': defined
'${href}': '${expected_href}'
#TestJournalTopJournalItem
-
name: include TestJournalTopJournalItem
type: include
file: TestJournalTopJournalItem.yaml
perl_code: !!perl/code |
{
my ($retained) = @_;
$retained->{journal_link} = '/api/systemcontacts/' . $retained->{system_contact}->{id} . '/journal/recent';
$retained->{resource} = 'system_contacts';
$retained->{item} = $retained->{system_contact};
$retained->{operation} = 'update';
}
#get systemcontact
-
name: GET systemcontact
type: item
method: GET
path: '/${system_contact_path3}'
retain:
new_system_contact: body
perl_code: !!perl/code |
{
my ($retained) = @_;
delete $retained->{new_system_contact}->{_links};
delete $retained->{new_system_contact}->{_embedded};
}
conditions:
is:
code: 200
is_deeply:
'${system_contact}': ${new_system_contact}
#get systemcontact
-
name: GET systemcontact
type: item
method: GET
path: '/${system_contact_path3}'
retain:
system_contact: body
perl_code: !!perl/code |
{
my ($retained) = @_;
delete $retained->{system_contact}->{_links};
delete $retained->{system_contact}->{_embedded};
$retained->{reseller_id} = 1;
}
conditions:
is:
code: 200
#check if a system contact with reseller has no resellers link
-
name: check if a system contact with reseller has no resellers link
type: item
method: PUT
path: '/${system_contact_path3}'
header:
Content-Type: application/json
Prefer: return=representation
content: '${system_contact}'
retain:
new_system_contact: body
conditions:
is:
code: 200
ok:
'${new_system_contact}.reseller_id': undefined
'${new_system_contact}._links.ngcp:resellers': undefined
#PATCH systemcontact
-
name: PATCH systemcontact
type: item
method: PATCH
path: '/${system_contact_path3}'
header:
Content-Type: application/json-patch+json
Prefer: return=representation
content:
-
op: replace
path: /firstname
value: patchedfirst
retain:
patched_system_contact: body
conditions:
is:
code: 200
'${patched_system_contact}.firstname': 'patchedfirst'
#test item journal link
-
name: test item journal link
type: item
method: GET
path: /${system_contact_path3}
retain:
system_contact: body
perl_code: !!perl/code |
{
my ($retained) = @_;
$retained->{href} = $retained->{system_contact}->{_links}->{'ngcp:journal'}->[0]->{href};
$retained->{expected_href} = '/api/systemcontacts/'.$retained->{system_contact}->{id}.'/journal/';
}
conditions:
is:
code: 200
ok:
'${system_contact}._links': defined
'${system_contact}._links.ngcp:journal': defined
'${href}': '${expected_href}'
#TestJournalTopJournalItem
-
name: include TestJournalTopJournalItem
type: include
file: TestJournalTopJournalItem.yaml
perl_code: !!perl/code |
{
my ($retained) = @_;
$retained->{journal_link} = '/api/systemcontacts/' . $retained->{system_contact}->{id} . '/journal/recent';
$retained->{resource} = 'system_contacts';
$retained->{item} = $retained->{system_contact};
$retained->{operation} = 'update';
}
#PATCH systemcontact with undef name
-
name: PATCH systemcontact with undef name
type: item
method: PATCH
path: '/${system_contact_path3}'
header:
Content-Type: application/json-patch+json
Prefer: return=representation
content:
-
op: replace
path: /firstname
value: null
retain:
patched_system_contact: body
conditions:
is:
code: 200
ok:
'${patched_system_contact}.firstname': undefined
#PATCH systemcontact with no emil
-
name: PATCH systemcontact with no emil
type: item
method: PATCH
path: '/${system_contact_path3}'
header:
Content-Type: application/json-patch+json
Prefer: return=representation
content:
-
op: replace
path: /email
value: null
conditions:
is:
code: 422
#DELETE systemcontacts
-
name: DELETE systemcontacts
type: item
method: DELETE
path: '/${system_contact_path1}'
conditions:
is:
code: 204
#DELETE systemcontacts
-
name: DELETE systemcontacts
type: item
method: DELETE
path: '/${system_contact_path2}'
conditions:
is:
code: 204
#DELETE systemcontacts
-
name: DELETE systemcontacts
type: item
method: DELETE
path: '/${system_contact_path3}'
conditions:
is:
code: 204
#TestJournalTopJournalItem
-
name: include TestJournalTopJournalItem
type: include
file: TestJournalTopJournalItem.yaml
perl_code: !!perl/code |
{
my ($retained) = @_;
$retained->{journal_link} = '/api/systemcontacts/' . $retained->{patched_system_contact}->{id} . '/journal/recent';
$retained->{resource} = 'system_contacts';
$retained->{item} = $retained->{patched_system_contact};
$retained->{operation} = 'delete';
}
#test journal collection
-
name: test journal collection
type: pagination
skip: 1
method: GET
path: '${journal_collection_link}'
retain:
collection: body
conditions:
is:
code: 200
#create domain
-
name: create domain
type: item
method: POST
path: '/api/domains/'
header:
Content-Type: application/json
content:
domain: api_test.api_test${unique_id}
reseller_id: 1
retain:
domain_path: header.location
conditions:
is:
code: 201
#get domain
-
name: GET domain
type: item
method: GET
path: '/${domain_path}'
retain:
domain: body
conditions:
is:
code: 200
#create billingprofile
-
name: create billingprofile
type: item
method: POST
path: '/api/billingprofiles/'
header:
Content-Type: application/json
content:
reseller_id: 1
handle: test_profile_${unique_id}
name: test profile ${unique_id}
retain:
billing_profile_id: header.location
conditions:
is:
code: 201
#create a System Contact
-
name: create a System Contact
type: item
method: POST
path: /api/systemcontacts/
header:
Content-Type: application/json
content:
firstname: sys_contact_first4
lastname: sys_contact_last4
email: sys_contact4@syscontact.invalid
conditions:
is:
code: 201
retain:
system_contact_id: header.location
system_contact_path4: header.location
#create contract
-
name: create contract
type: item
method: POST
path: '/api/contracts/'
header:
Content-Type: application/json
content:
status: active
contact_id: ${system_contact_id}
type: reseller
billing_profile_id: ${billing_profile_id}
retain:
contract_id: header.location
conditions:
is:
code: 201
#DELETE systemcontacts
-
name: DELETE systemcontacts
type: item
method: DELETE
path: '/${system_contact_path4}'
conditions:
is:
code: 423
#get systemcontact
-
name: GET systemcontact
type: item
method: GET
path: '/${system_contact_path4}'
conditions:
is:
code: 200
#PATCH contract status terminated
-
name: PATCH contract status terminated
type: item
method: PATCH
path: '/api/contracts/${contract_id}'
header:
Content-Type: application/json-patch+json
Prefer: return=representation
content:
-
op: replace
path: /status
value: terminated
conditions:
is:
code: 200
#DELETE systemcontacts
-
name: DELETE systemcontacts
type: item
method: DELETE
path: '/${system_contact_path4}'
conditions:
is:
code: 204
#get systemcontact
-
name: GET systemcontact
type: item
method: GET
path: '/${system_contact_path4}'
conditions:
is:
code: 404