def testEmptyResults(self): current_time_secs = int(time.time()) mock_clients = [ _MockClient(last_seen_at=(current_time_secs - 3 * 60 * 60) * (10**6)), _MockClient( last_seen_at=(current_time_secs - 4 * 60 * 60 * 24) * (10**6)), ] with mock.patch.object( grr_colab.Client, 'search', return_value=mock_clients): df = magics_impl.grr_search_online_clients_impl() self.assertEqual(df.shape[0], 0)
def grr_search_online_clients(line: Text) -> pd.DataFrame: """Searches for online clients with specified keywords. Args: line: A string representing arguments passed to the magic command. Returns: List of online clients. """ args = grr_search_online_clients.parser.parse_args(shlex.split(line)) return magics_impl.grr_search_online_clients_impl(ip=args.ip, mac=args.mac, host=args.host, user=args.user, version=args.version, labels=args.label)
def testSortedByLastSeen(self): current_time_secs = int(time.time()) mock_clients = [ _MockClient( client_id='foo', last_seen_at=(current_time_secs - 5) * (10**6)), _MockClient( client_id='bar', last_seen_at=(current_time_secs - 3) * (10**6)), _MockClient( client_id='quux', last_seen_at=(current_time_secs - 10) * (10**6)), ] with mock.patch.object( grr_colab.Client, 'search', return_value=mock_clients): df = magics_impl.grr_search_online_clients_impl() self.assertEqual(df.shape[0], 3) self.assertEqual(list(df['client_id']), ['bar', 'foo', 'quux'])
def testContainsOnlineOnly(self): current_time_secs = int(time.time()) mock_clients = [ _MockClient(client_id='foo', last_seen_at=(current_time_secs - 2 * 60) * (10**6)), _MockClient(client_id='bar', last_seen_at=(current_time_secs - 3 * 60 * 60) * (10**6)), _MockClient(client_id='quux', last_seen_at=(current_time_secs - 4 * 60 * 60 * 24) * (10**6)), ] with mock.patch.object(grr_colab.Client, 'search', return_value=mock_clients): df = magics_impl.grr_search_online_clients_impl() self.assertEqual(df.shape[0], 1) self.assertEqual(df['client_id'][0], 'foo') self.assertEqual(df['online'][0], 'online') self.assertEqual(df['online.pretty'][0], '🌕')