#!/usr/bin/env perl
use strict;
use warnings;
use Test::More;

use NGCP::Panel::Form::SubscriberCFSimple;

my $configs = [
    {
        works => 1,
        config => {
            destination => {
                destination => 'uri',
                uri => { destination => 'sip:foo@bar.com' },
            },
        },
    },
    {
        works => 1,
        config => {
            destination => {
                destination => 'uri',
                uri => { destination => 'foo@bar.com' },
            },
        },
    },
    {
        works => 1,
        config => {
            destination => {
                destination => 'uri',
                uri => { destination => 'alice@10.0.0.1' },
            },
        },
    },
    {
        works => 1,
        config => {
            destination => {
                destination => 'uri',
                uri => { destination => '12345@a' }, # we set a domain here, because on tests it cannot be automatically deduced from stash
            },
        },
    },
    {
        works => 1,
        config => {
            destination => {
                destination => 'uri',
                uri => { destination => '+12345@a' },
            },
        },
    },
    {
        works => 0,
        config => {
            destination => {
                destination => 'uri',
                uri => { destination => '12345[678]@a' },
            },
        },
    },
    {
        works => 0,
        config => {
            destination => {
                destination => 'uri',
                uri => { destination => '+49(0)123456789@a' },
            },
        },
    },
    {
        works => 1,
        config => {
            destination => {
                destination => 'uri',
                uri => { destination => 'alice@10.0.0.1:1234' },
            },
        },
    },
    {
        works => 1,
        config => {
            destination => {
                destination => 'uri',
                uri => { destination => 'foo@bar.com:1234' },
            },
        },
    },
];

for my $conf (@{$configs}) {
    my $form = NGCP::Panel::Form::SubscriberCFSimple->new;
    $form->process(
        posted => 1,
        params => $conf->{config},
    );
    my $uri = $form->value->{destination}{uri}{destination};
    if ($conf->{works}) {
        ok($form->validated, "Should validate: $uri");
    } else {
        ok(!$form->validated, "Should not validate: $uri");
    }
}

done_testing();
