예제 #1
0
def test_bad_github_credentials(mock_get):
    with pytest.raises(RuntimeError, match='Bad credentials'):
        context = set_context("1234")
        data = {'message': 'Bad credentials'}
        mock_get.return_value = False, data, {}
        app = core.App(context=context)
        RepositoryStatusMonitorStack(app, 'RepositoryStatusMonitor')
예제 #2
0
def test_empty_dashboard_name_prefix(github):
    with pytest.raises(ValueError,
                       match='Need to specify prefix for dashboard names.'):
        context = set_context(github)
        context['dashboard_name_prefix'] = ""
        app = core.App(context=context)
        RepositoryStatusMonitorStack(app, 'RepositoryStatusMonitor')
예제 #3
0
def retrieve_template(github):
    try:
        with open('tests/template.json') as json_file:
            return json.dumps(json.load(json_file), indent=4, sort_keys=True)
    except FileNotFoundError:
        context = {
            'github_token': github,
            'repo_names': 'aws-node-termination-handler',
            'dashboard_name_prefix': 'test-dash',
            'get_docker': 'y',
            'github_fields_unpaginated': 'Stars,stargazers_count;Forks,forks_count;Open Issues,open_issues_count;Watchers,subscribers_count',
            'github_fields_paginated': 'Open Pull Requests,pulls',
            'docker_fields': 'Pull Count,pull_count',
            'owner': 'aws',
            'namespace': 'open-source-dashboard',
            'user_agent_header': 'OpenSourceDashboard',
            'default_metric_widget_name': 'default_metric_widget_name',
            'default_text_widget_name': 'default_text_widget_name'
        }
        app = core.App(context=context)
        RepositoryStatusMonitorStack(app, 'RepositoryStatusMonitor')
        template = app.synth().get_stack('RepositoryStatusMonitor').template
        with open('tests/template.json', 'w') as json_file:
            json.dump(template, json_file, indent=4)
        return json.dumps(template, indent=4, sort_keys=True)
예제 #4
0
def test_user_agent_header_empty(github):
    with pytest.raises(
            ValueError,
            match='Need to specify User-Agent header for GitHub requests.'):
        context = set_context(github)
        context['user_agent_header'] = ""
        app = core.App(context=context)
        RepositoryStatusMonitorStack(app, 'RepositoryStatusMonitor')
예제 #5
0
def test_namespace_empty(github):
    with pytest.raises(
            ValueError,
            match='Need to specify namespace for CloudWatch metrics.'):
        context = set_context(github)
        context['namespace'] = ""
        app = core.App(context=context)
        RepositoryStatusMonitorStack(app, 'RepositoryStatusMonitor')
예제 #6
0
def test_empty_docker_preference(github):
    with pytest.raises(
            ValueError,
            match='Need to specify whether to include docker metrics.'):
        context = set_context(github)
        context['get_docker'] = ""
        app = core.App(context=context)
        RepositoryStatusMonitorStack(app, 'RepositoryStatusMonitor')
예제 #7
0
def test_no_valid_repo_names(mock_get, github):
    with pytest.raises(RuntimeError,
                       match='All repository names must be valid.'):
        data = get_mock_data()
        mock_get.return_value = True, data, {}
        context = set_context(github)
        context['repo_names'] = 'hello,goodbye'
        app = core.App(context=context)
        RepositoryStatusMonitorStack(app, 'RepositoryStatusMonitor')
예제 #8
0
def test_all_individual_owners_specified(mock_get, github):
    data = get_mock_data()
    mock_get.return_value = True, data, {}
    context = set_context(github)
    context['owner'] = ''
    context[
        'repo_names'] = 'aws/aws-node-termination-handler,aws/amazon-ec2-metadata-mock'
    app = core.App(context=context)
    RepositoryStatusMonitorStack(app, 'RepositoryStatusMonitor')
예제 #9
0
def test_no_owner_specified(mock_get, github):
    with pytest.raises(RuntimeError,
                       match='All repository names must be valid.'):
        data = get_mock_data()
        mock_get.return_value = True, data, {}
        context = set_context(github)
        context['owner'] = ''
        app = core.App(context=context)
        RepositoryStatusMonitorStack(app, 'RepositoryStatusMonitor')
예제 #10
0
def test_invalid_repo_names_format(mock_get, github):
    with pytest.raises(RuntimeError,
                       match='All repository names must be valid.'):
        data = get_mock_data()
        mock_get.return_value = True, data, {}
        context = set_context(github)
        context[
            'repo_names'] = 'aws-node-termination-handler;amazon-ec2-metadata-mock'
        app = core.App(context=context)
        RepositoryStatusMonitorStack(app, 'RepositoryStatusMonitor')
예제 #11
0
def test_all_individual_owners_specified_but_some_wrong(mock_get, github):
    with pytest.raises(RuntimeError,
                       match='All repository names must be valid.'):
        data = get_mock_data()
        mock_get.return_value = True, data, {}
        context = set_context(github)
        context['owner'] = ''
        context[
            'repo_names'] = 'aws/aws-node-termination-handler,amazon/amazon-ec2-metadata-mock'
        app = core.App(context=context)
        RepositoryStatusMonitorStack(app, 'RepositoryStatusMonitor')
예제 #12
0
def test_individual_owner_takes_precedence_over_general_owner(
        mock_get, github):
    data = [{
        'name': 'aws-node-termination-handler',
        'owner': {
            'login': '******'
        },
        'full_name': 'aws/aws-node-termination-handler'
    }, {
        'name': 'amazon-ec2-metadata-mock',
        'owner': {
            'login': '******'
        },
        'full_name': 'amazon/amazon-ec2-metadata-mock'
    }]
    mock_get.return_value = True, data, {}
    context = set_context(github)
    context['owner'] = 'amazon'
    context[
        'repo_names'] = 'aws/aws-node-termination-handler,amazon-ec2-metadata-mock'
    app = core.App(context=context)
    RepositoryStatusMonitorStack(app, 'RepositoryStatusMonitor')
예제 #13
0
#!/usr/bin/env python3
import os
import json 

from aws_cdk import core

from repository_status_monitor_stack import RepositoryStatusMonitorStack

app = core.App()

with open('configuration/environment_config.json') as json_file:
    environment = json.load(json_file)
    region = environment['region'] if environment['region'] != "" else os.environ['CDK_DEFAULT_REGION']
    account = environment['account'] if environment['account'] != "" else os.environ['CDK_DEFAULT_ACCOUNT']
rsm_stack = RepositoryStatusMonitorStack(app, 'RepositoryStatusMonitor', env=core.Environment(account=account, region=region))

core.Tag.add(rsm_stack, 'OpenSourceDashboard', app.node.try_get_context('dashboard_name_prefix'))

app.synth()
예제 #14
0
def test_empty_repo_names(github):
    with pytest.raises(ValueError, match='Need to specify repository names.'):
        context = set_context(github)
        context['repo_names'] = ""
        app = core.App(context=context)
        RepositoryStatusMonitorStack(app, 'RepositoryStatusMonitor')
예제 #15
0
def test_empty_github_token():
    with pytest.raises(ValueError, match='Need to specify GitHub token.'):
        context = set_context("")
        app = core.App(context=context)
        RepositoryStatusMonitorStack(app, 'RepositoryStatusMonitor')
예제 #16
0
def test_with_good_context(mock_get, github):
    data = get_mock_data()
    mock_get.return_value = True, data, {}
    context = set_context(github)
    app = core.App(context=context)
    RepositoryStatusMonitorStack(app, 'RepositoryStatusMonitor')
예제 #17
0
def test_missing_owner(github):
    with pytest.raises(ValueError, match='Need to specify GitHub owner.'):
        context = set_context(github)
        context.pop('owner')
        app = core.App(context=context)
        RepositoryStatusMonitorStack(app, 'RepositoryStatusMonitor')