| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package MockRemoteConnection;
- # ABSTRACT: utility class to mock the responses from Selenium server
- use Moo;
- use JSON;
- use Try::Tiny;
- has 'spec' => (
- is => 'ro',
- required => 1,
- );
- has 'mock_cmds' => (
- is => 'ro',
- );
- has 'session_id' => (
- is => 'lazy',
- builder => sub {
- my $id = join '',
- map +( 0 .. 9, 'a' .. 'z', 'A' .. 'Z' )[ rand( 10 + 26 * 2 ) ], 1 .. 50;
- return $id;
- },
- );
- sub request {
- my $self = shift;
- my ($resource, $params) = @_;
- my $method = $resource->{method};
- my $url = $resource->{url};
- my $no_content_success = $resource->{no_content_success} // 0;
- my $url_params = $resource->{url_params};
- my $mock_cmds = $self->mock_cmds;
- my $spec = $self->spec;
- my $cmd = $mock_cmds->get_method_name_from_parameters({method => $method,url => $url});
- my $ret = {cmd_status => 'OK', cmd_return => 1};
- if (defined($spec->{$cmd})) {
- my $return_sub = $spec->{$cmd};
- if ($no_content_success) {
- $ret->{cmd_return} = 1;
- }
- else {
- my $mock_return = $return_sub->($url_params,$params);
- if (ref($mock_return) eq 'HASH') {
- $ret->{cmd_status} = $mock_return->{status};
- $ret->{cmd_return} = $mock_return->{return};
- $ret->{cmd_error} = $mock_return->{error} // ''
- }
- else {
- $ret = $mock_return;
- }
- }
- $ret->{session_id} = $self->session_id if (ref($ret) eq 'HASH');
- }
- else {
- $ret->{sessionId} = $self->session_id;
- }
- return $ret;
- }
- 1;
|