Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!perl
- use strict;
- use warnings;
- use Test::More;
- use JSON;
- use HTTP::Request::Common qw(PUT POST DELETE);
- use lib 't/lib';
- use A;
- use Lynx::Constants 'DEFAULT_COMPUTERGROUP_NAME';
- my $mech = A->mech({ live_only => 1, login => 0 });
- my $schema = A->schema({ test => 0, deploy => 0 });
- my ($computer_group, $computer);
- my $computers = $schema->resultset('Computer')->search({ name => 'testcomputer' });
- my $computer_groups = $schema->resultset('ComputerGroup')->search({ name => 'test group' });
- subtest 'setup' => sub {
- $mech->get( "/cgi/logon.plx?UserID=admin&Password=lynx" );
- $mech->content_lacks( 'Login Error', 'Login as admin');
- $computers->delete;
- for ($computer_groups->get_column('id')->all) {
- my $url = "/app/admin/computer_groups/$_";
- $mech->request(DELETE $url,
- Accept => 'application/json',
- );
- ok($mech->success, "DELETE $url");
- }
- is($computer_groups->count, 0, 'no test group yet');
- $mech->request(POST '/app/admin/computer_groups',
- Accept => 'application/json',
- content_type => 'application/json',
- Content => encode_json({
- data => {
- is_active => \1,
- name => 'test group',
- profile => '{}',
- }
- })
- );
- ok($mech->success, "POST /app/admin/computer_groups");
- is($computer_groups->count, 1, 'test group created');
- $computer_group = $computer_groups->single;
- is($computers->count, 0, 'no test computer yet');
- $computer = $computers->create({
- group_id => $computer_group->id,
- user => 'unknown',
- version => 'unknown',
- is_active => 1,
- });
- is($computers->count, 1, 'test computer created');
- $mech->get( "/cgi/logon.plx?Option=Logout" );
- $mech->get( "/cgi/logon.plx?UserID=test&Password=test" );
- $mech->content_lacks( 'Login Error', 'Login as test');
- $mech->request(PUT '/app/computers/remove_by_id',
- Accept => 'application/json',
- content_type => 'application/json',
- Content => encode_json({
- ids => [$computers->get_column('id')->all]
- })
- );
- ok($mech->success, "PUT /app/computers/remove_by_id");
- $computer->discard_changes;
- ok(!$computer->is_active, 'computer deactivated');
- };
- $mech->get( "/cgi/logon.plx?Option=Logout" );
- $mech->get( "/cgi/logon.plx?UserID=admin&Password=lynx" );
- $mech->content_lacks( 'Login Error', 'Login as admin');
- for ($computer_groups->get_column('id')->all) {
- my $url = "/app/admin/computer_groups/$_";
- $mech->request(DELETE $url,
- Accept => 'application/json',
- );
- use Devel::Dwarn;
- ok($mech->success, "DELETE $url") or Ddie $mech->content;
- }
- $computer->discard_changes;
- is($computer->group->name, DEFAULT_COMPUTERGROUP_NAME, 'computer correctly got pointed at DCG');
- subtest 'teardown' => sub {
- $computers->delete;
- is($computer_groups->count, 0, 'test group removed');
- is($computers->count, 0, 'test computer removed');
- };
- done_testing;
Add Comment
Please, Sign In to add comment