Completed
Push — master ( 29488b...444748 )
by Gonzalo
8s
created

test_invalid_token()   A

Complexity

Conditions 2

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
c 1
b 0
f 0
dl 0
loc 4
rs 10
1
# -*- coding: utf-8 -*-
2
# -----------------------------------------------------------------------------
3
# Copyright (c) The Spyder Development Team
4
#
5
# Licensed under the terms of the MIT License
6
# (See LICENSE.txt for details)
7
# -----------------------------------------------------------------------------
8
"""Tests github repo."""
9
10
# Standard library imports
11
import os
12
13
# Third party imports
14
import pytest
15
16
# Local imports
17
from loghub.external.github import ApiError
18
from loghub.main import GitHubRepo
19
20
REPO = 'spyder-ide/loghub'
21
TEST_TOKEN = os.environ.get('TEST_TOKEN', '').replace('x', '')
22
TEST_USER = os.environ.get('TEST_USER', '').replace('x', '')
23
TEST_PASS = os.environ.get('TEST_CODE', '').replace('x', '')
24
TEST_MILESTONE = 'test-milestone'
25
TEST_TAG = 'v0.1.2'
26
NOT_ON_CI = os.environ.get('CIRCLECI') != 'true'
27
28
29
# --- Fixtures
30
# -----------------------------------------------------------------------------
31
@pytest.fixture
32
def gh_repo():
33
    return GitHubRepo(token=TEST_TOKEN, repo=REPO)
34
35
36
# --- Tests
37
# -----------------------------------------------------------------------------
38
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
39
def test_valid_user_password():
40
    gh = GitHubRepo(username=TEST_USER, password=TEST_PASS, repo=REPO)
41
    assert bool(gh.milestone(TEST_MILESTONE))
42
43
44
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
45
def test_invalid_user_password():
46
    gh = GitHubRepo(
47
        username='invalid-user', password='invalid-password', repo=REPO)
48
    with pytest.raises(ApiError):
49
        gh.milestone(TEST_MILESTONE)
50
51
52
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
53
def test_valid_token():
54
    gh = GitHubRepo(token=TEST_TOKEN, repo=REPO)
55
    gh.milestone(TEST_MILESTONE)
56
57
58
def test_invalid_token():
59
    gh = GitHubRepo(token='this-is-an-invalid-token', repo=REPO)
60
    with pytest.raises(ApiError):
61
        gh.milestone(TEST_MILESTONE)
62
63
64
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
65
def test_tags(gh_repo):
66
    tags = gh_repo.tags()
67
    titles = [tag['ref'].replace('refs/tags/', '') for tag in tags]
68
    assert TEST_TAG in titles
69
70
71
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
72
def test_valid_tag(gh_repo):
73
    tag = gh_repo.tag(TEST_TAG)
74
    assert bool(tag)
75
76
77
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
78
def test_invalid_tag(gh_repo):
79
    with pytest.raises(SystemExit):
80
        gh_repo.tag('invalid-tag')
81
82
83
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
84
def test_milestones(gh_repo):
85
    milestones = gh_repo.milestones()
86
    titles = [milestone['title'] for milestone in milestones]
87
    assert TEST_MILESTONE in titles
88
89
90
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
91
def test_valid_milestone(gh_repo):
92
    assert bool(gh_repo.milestone(TEST_MILESTONE))
93
94
95
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
96
def test_invalid_milestone(gh_repo):
97
    with pytest.raises(SystemExit):
98
        gh_repo.milestone('invalid-milestone')
99
100
101
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
102
def test_issues(gh_repo):
103
    milestone_data = gh_repo.milestone(TEST_MILESTONE)
104
    print(milestone_data)
105
    milestone_number = milestone_data['number']
106
    issues = gh_repo.issues(milestone=milestone_number, state='closed')
107
    assert len(issues) == 3
108
109
110
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
111
def test_pr_merged(gh_repo):
112
    assert gh_repo.is_merged(25)
113
114
115
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
116
def test_pr_closed(gh_repo):
117
    assert not gh_repo.is_merged(22)
118
119
120
def test_dates():
121
    date = GitHubRepo.str_to_date('2016-10-10T08:08:08Z')
122
    assert date.year == 2016
123
    assert date.month == 10
124
    assert date.day == 10
125
    assert date.hour == 8
126
    assert date.minute == 8
127
    assert date.second == 8
128