Exemplo n.º 1
0
def test_returns_true_on_success(mock_api_delete):
    mock_api_delete.return_value = Mock(status_code=200)
    client = geckoboard.client(API_KEY)

    response = client.datasets.delete(DATASET_ID)

    assert_equal(response, True)
Exemplo n.º 2
0
def test_returns_dataset(mock_api_put):
    mock_api_put.return_value = Mock(status_code=200)
    client = geckoboard.client(API_KEY)

    dataset = client.datasets.find_or_create(DATASET_ID, FIELDS)

    assert_true(isinstance(dataset, Dataset))
Exemplo n.º 3
0
def test_makes_api_call(mock_api_delete):
    mock_api_delete.return_value = Mock(status_code=200)
    client = geckoboard.client(API_KEY)

    client.datasets.delete(DATASET_ID)

    mock_api_delete.assert_called_with('/datasets/' + DATASET_ID, API_KEY)
Exemplo n.º 4
0
def test_makes_api_call(mock_api_get):
    mock_api_get.return_value = Mock(status_code=200)
    client = geckoboard.client(API_KEY)

    client.ping()

    mock_api_get.assert_called_with('/', API_KEY)
Exemplo n.º 5
0
def test_returns_true_on_success(mock_api_get):
    mock_api_get.return_value = Mock(status_code=200)
    client = geckoboard.client(API_KEY)

    response = client.ping()

    assert_equal(response, True)
Exemplo n.º 6
0
def test_returns_true_on_success(mock_api_put):
    mock_api_put.return_value = Mock(status_code=200)
    client = geckoboard.client(API_KEY)
    dataset = client.datasets.find_or_create(DATASET_ID, FIELDS)

    response = dataset.put(ITEMS)

    assert_equal(response, True)
Exemplo n.º 7
0
def test_makes_api_call(mock_api_put):
    mock_api_put.return_value = Mock(status_code=200)
    client = geckoboard.client(API_KEY)
    dataset = client.datasets.find_or_create(DATASET_ID, FIELDS)

    dataset.put(ITEMS)

    mock_api_put.assert_called_with('/datasets/' + DATASET_ID + '/data',
                                    {'data': ITEMS}, API_KEY)
Exemplo n.º 8
0
def test_rethrows_api_error(mock_get_error_message, mock_api_get):
    mock_response = Mock(status_code=401)
    mock_api_get.return_value = mock_response
    mock_get_error_message.return_value = ERROR_MESSAGE
    client = geckoboard.client(API_KEY)

    try:
        client.ping()
    except Exception as err:
        mock_get_error_message.assert_called_with(mock_response)
        assert_equal(err.message, ERROR_MESSAGE)
Exemplo n.º 9
0
def test_handles_unique_by(mock_api_put):
    mock_api_put.return_value = Mock(status_code=200)
    client = geckoboard.client(API_KEY)

    client.datasets.find_or_create(DATASET_ID, FIELDS, UNIQUE_BY)

    mock_api_put.assert_called_with(
        '/datasets/' + DATASET_ID,
        {'fields': FIELDS, 'unique_by': UNIQUE_BY},
        API_KEY
    )
Exemplo n.º 10
0
def test_rethrows_api_error(mock_get_error_message, mock_api_put):
    mock_response = Mock(status_code=401)
    mock_api_put.return_value = mock_response
    mock_get_error_message.return_value = ERROR_MESSAGE
    client = geckoboard.client(API_KEY)

    try:
        client.datasets.find_or_create(DATASET_ID, FIELDS)
    except Exception as err:
        mock_get_error_message.assert_called_with(mock_response)
        assert_equal(err.message, ERROR_MESSAGE)
Exemplo n.º 11
0
def test_handles_delete_by(mock_api_post, mock_api_put):
    mock_api_put.return_value = Mock(status_code=200)
    mock_api_post.return_value = Mock(status_code=200)
    client = geckoboard.client(API_KEY)
    dataset = client.datasets.find_or_create(DATASET_ID, FIELDS)

    dataset.post(ITEMS, DELETE_BY)

    mock_api_post.assert_called_with('/datasets/' + DATASET_ID + '/data', {
        'data': ITEMS,
        'delete_by': DELETE_BY
    }, API_KEY)
Exemplo n.º 12
0
 def send_gecko_report(self):
     self.count = 0
     GECKO_API_TOKEN = settings.GECKO_TOKEN
     report = GeskoReport()
     try:
         gbClient = gb.client(GECKO_API_TOKEN)
         gbClient.ping()
         self.__push_overview__(gbClient=gbClient, report=report)
         self.__push_teams_report__(gbClient=gbClient, report=report)
     except Exception as e:
         print("GeckoReport Error:{}".format(e))
         traceback.print_exc()
Exemplo n.º 13
0
def test_rethrows_api_error(mock_get_error_message, mock_api_put):
    # Make the initial put pass so we can create the dataset
    mock_api_put.return_value = Mock(status_code=200)
    client = geckoboard.client(API_KEY)
    dataset = client.datasets.find_or_create(DATASET_ID, FIELDS)

    # Now make it fail so we can test the error response
    mock_response = Mock(status_code=401)
    mock_api_put.return_value = mock_response
    mock_get_error_message.return_value = ERROR_MESSAGE

    try:
        dataset.put(ITEMS)
    except Exception as err:
        mock_get_error_message.assert_called_with(mock_response)
        assert_equal(err.message, ERROR_MESSAGE)
Exemplo n.º 14
0
    def __find_or_create_dataset(self):

        gbClient = gb.client(self.GECKO_API_TOKEN)

        try:
            gbClient.ping()
        except:
            print("GeckoBoard Failed: Wrong API KEY")

        dataset = gbClient.datasets.find_or_create(
            'quay.security.scan.by_name', {
                'repository': {
                    'type': 'string',
                    'name': 'Repository:Tag'
                },
                'critical': {
                    'type': 'number',
                    'name': 'C'
                },
                'high': {
                    'type': 'number',
                    'name': 'H'
                },
                'medium': {
                    'type': 'number',
                    'name': 'M'
                }
            }, ['repository'])

        dataset.put([])

        formated_data = []

        for repository, vulnerabilitie in (self._report).items():
            formated_data.append({
                'repository': repository,
                'critical': vulnerabilitie['critical'],
                'high': vulnerabilitie['high'],
                'medium': vulnerabilitie['medium']
            })

        dataset.put(formated_data)
Exemplo n.º 15
0
    def finalize_response(self, request, response, *args, **kwargs):
        response = super().finalize_response(request, response, *args, **kwargs)
        time_started = getattr(self, 'time_started', None)
        if time_started:
            time_elapsed = datetime.now() - self.time_started
            time_elapsed=time_elapsed.total_seconds()*1000
            response['supersonic'] = time_elapsed
            response['plot'] = request.path


            APP_ENV = getattr(settings, "APP_ENV", None)
            # print(APP_ENV)
            if APP_ENV != "development":        
                dll=request.path
                fora=""
                for lin in dll:
                    if lin=='/':
                        fora=fora+'_'
                    else:
                        fora=fora+lin

                # print(fora)

                API_KEY = 'ac126939d26650c1f1349b4bc4cab9f2'
                client = geckoboard.client(API_KEY)
                time_taken=time_elapsed
                time_stats=[]
                stats={'dura': time_taken}
                time_stats.append(stats)
                fields={}
                fields['dura']={ 'type': 'duration', 'name': 'Time Taken', "time_unit": "milliseconds", 'optional': False }
                # print('catalog(%s)stats'% request.path)
                dis='catalog%s_stats'% fora
                # print(dis)
                dataset = client.datasets.find_or_create(dis, fields)
                dataset.post(time_stats)
        
        return response
Exemplo n.º 16
0
import os
import json
import geckoboard

DATASET_NAME = 'agents.active_groups'
CLIENT = geckoboard.client(os.getenv('GECKO_API_KEY'))

try:
    CLIENT.ping()
except:
    raise PermissionError('API key invalid.')


def get_schedule(schema):
    print(f"Retrieving gecko dataset: {DATASET_NAME}")
    return CLIENT.datasets.find_or_create(DATASET_NAME, schema)


def set_schedule(data, schema):
    print(f"Setting schedule with data:\n{json.dumps(data,indent=2)}")
    schedule = get_schedule(schema)
    schedule.put(data)


def delete_schedule():
    print(f"Deleting gecko dataset: {DATASET_NAME}")
    CLIENT.datasets.delete(DATASET_NAME)
Exemplo n.º 17
0
def get_client():
    return geckoboard.client(settings.GECKOBOARD_API_KEY)