Completed
Pull Request — master (#29)
by Gonzalo
55s
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 = not bool(TEST_TOKEN)
27
28
29
# --- Fixtures
30
# -----------------------------------------------------------------------------
31
@pytest.fixture
32
def gh_repo():
33
    print(TEST_TOKEN)
34
    raise Exception
35
    return GitHubRepo(token=TEST_TOKEN, repo=REPO)
36
37
38
# --- Tests
39
# -----------------------------------------------------------------------------
40
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
41
def test_valid_user_password():
42
    gh = GitHubRepo(username=TEST_USER, password='invalid-password', repo=REPO)
43
    with pytest.raises(ApiError):
44
        gh.milestone(TEST_MILESTONE)
45
46
47
def test_invalid_user_password():
48
    gh = GitHubRepo(username=TEST_USER, password='invalid-password', repo=REPO)
49
    with pytest.raises(ApiError):
50
        gh.milestone(TEST_MILESTONE)
51
52
53
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
54
def test_valid_token():
55
    gh = GitHubRepo(token=TEST_TOKEN, repo=REPO)
56
    gh.milestone(TEST_MILESTONE)
57
58
59
def test_invalid_token():
60
    gh = GitHubRepo(token='this-is-an-invalid-token', repo=REPO)
61
    with pytest.raises(ApiError):
62
        gh.milestone(TEST_MILESTONE)
63
64
65
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
66
def test_tags(gh_repo):
67
    tags = gh_repo.tags()
68
    titles = [tag['ref'].replace('refs/tags/', '') for tag in tags]
69
    assert TEST_TAG in titles
70
71
72
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
73
def test_valid_tag(gh_repo):
74
    tag = gh_repo.tag(TEST_TAG)
75
    assert bool(tag)
76
77
78
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
79
def test_invalid_tag(gh_repo):
80
    with pytest.raises(SystemExit):
81
        gh_repo.tag('invalid-tag')
82
83
84
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
85
def test_milestones(gh_repo):
86
    milestones = gh_repo.milestones()
87
    titles = [milestone['title'] for milestone in milestones]
88
    assert TEST_MILESTONE in titles
89
90
91
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
92
def test_valid_milestone(gh_repo):
93
    assert bool(gh_repo.milestone(TEST_MILESTONE))
94
95
96
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
97
def test_invalid_milestone(gh_repo):
98
    with pytest.raises(SystemExit):
99
        gh_repo.milestone('invalid-milestone')
100
101
102
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
103
def test_issues(gh_repo):
104
    milestone_data = gh_repo.milestone(TEST_MILESTONE)
105
    print(milestone_data)
106
    milestone_number = milestone_data['number']
107
    issues = gh_repo.issues(milestone=milestone_number, state='closed')
108
    assert len(issues) == 3
109
110
111
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
112
def test_pr_merged(gh_repo):
113
    assert gh_repo.is_merged(25)
114
115
116
@pytest.mark.skipif(NOT_ON_CI, reason='test on ci server only')
117
def test_pr_closed(gh_repo):
118
    assert not gh_repo.is_merged(22)
119
120
121
def test_dates():
122
    date = GitHubRepo.str_to_date('2016-10-10T08:08:08Z')
123
    assert date.year == 2016
124
    assert date.month == 10
125
    assert date.day == 10
126
    assert date.hour == 8
127
    assert date.minute == 8
128
    assert date.second == 8
129