mirror of
https://github.com/khornberg/octokit.py
synced 2026-05-20 20:04:47 +03:00
258 lines
12 KiB
Python
258 lines
12 KiB
Python
import pytest
|
|
from octokit import errors
|
|
from octokit.base import Base
|
|
|
|
|
|
class TestBase(object):
|
|
|
|
def test_validate_required_parameters(self):
|
|
attrs = {'owner': 'me', 'repo': 'my_repo'}
|
|
assert Base().validate(attrs, self.parameter_only_definition)
|
|
|
|
def test_raise_error_for_missing_required_parameter(self):
|
|
attrs = {'owner': 'me'}
|
|
with pytest.raises(errors.OctokitParameterError) as e:
|
|
Base().validate(attrs, self.definition)
|
|
assert 'repo is a required parameter' == str(e.value)
|
|
|
|
def test_raise_error_for_missing_required_request_body_property(self):
|
|
attrs = {'owner': 'me', 'repo': 'my_repo'}
|
|
with pytest.raises(errors.OctokitParameterError) as e:
|
|
Base().validate(attrs, self.definition)
|
|
assert 'name is a required parameter' == str(e.value)
|
|
attrs = {'owner': 'me', 'repo': 'my_repo', 'name': 'blah'}
|
|
with pytest.raises(errors.OctokitParameterError) as e:
|
|
Base().validate(attrs, self.definition)
|
|
assert 'head_sha is a required parameter' == str(e.value)
|
|
|
|
def test_validate_parameters_and_request_body_properties(self):
|
|
attrs = {'owner': 'me', 'repo': 'my_repo', 'name': 'blah', 'head_sha': 'master'}
|
|
assert Base().validate(attrs, self.definition)
|
|
|
|
def test_validate_nested_request_body_properties(self):
|
|
attrs = {'owner': 'me', 'repo': 'my_repo', 'name': 'blah', 'head_sha': 'master', 'output': {}}
|
|
with pytest.raises(errors.OctokitParameterError) as e:
|
|
Base().validate(attrs, self.definition)
|
|
assert 'title is a required parameter' == str(e.value)
|
|
attrs = {'owner': 'me', 'repo': 'my_repo', 'name': 'blah', 'head_sha': 'master', 'output': {'title': 'here'}}
|
|
with pytest.raises(errors.OctokitParameterError) as e:
|
|
Base().validate(attrs, self.definition)
|
|
assert 'summary is a required parameter' == str(e.value)
|
|
attrs = {
|
|
'owner': 'me',
|
|
'repo': 'my_repo',
|
|
'name': 'blah',
|
|
'head_sha': 'master',
|
|
'output': {
|
|
'title': 'here',
|
|
'summary': 'there'
|
|
}
|
|
}
|
|
assert Base().validate(attrs, self.definition)
|
|
|
|
@property
|
|
def definition(self):
|
|
return {
|
|
"parameters": [
|
|
{
|
|
"name": "accept",
|
|
"description": "This API is under preview and subject to change.",
|
|
"in": "header",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": "application/vnd.github.antiope-preview+json"
|
|
},
|
|
"required": True
|
|
}, {
|
|
"name": "owner",
|
|
"description": "owner parameter",
|
|
"in": "path",
|
|
"required": True,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}, {
|
|
"name": "repo",
|
|
"description": "repo parameter",
|
|
"in": "path",
|
|
"required": True,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "The name of the check. For example, \"code-coverage\"."
|
|
},
|
|
"head_sha": {
|
|
"type": "string",
|
|
"description": "The SHA of the commit."
|
|
},
|
|
"details_url": {
|
|
"type": "string",
|
|
},
|
|
"external_id": {
|
|
"type": "string",
|
|
"description": "A reference for the run on the integrator's system."
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": ["queued", "in_progress", "completed"],
|
|
"default": "queued"
|
|
},
|
|
"started_at": {
|
|
"type": "string",
|
|
},
|
|
"conclusion": {
|
|
"type": "string",
|
|
"enum": [
|
|
"success", "failure", "neutral", "cancelled", "timed_out", "action_required"
|
|
]
|
|
},
|
|
"completed_at": {
|
|
"type": "string",
|
|
},
|
|
"output": {
|
|
"type": "object",
|
|
"properties": {
|
|
"title": {
|
|
"type": "string",
|
|
"description": "The title of the check run."
|
|
},
|
|
"summary": {
|
|
"type": "string",
|
|
},
|
|
"text": {
|
|
"type": "string",
|
|
},
|
|
"annotations": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"path": {
|
|
"type": "string",
|
|
},
|
|
"start_line": {
|
|
"type": "integer",
|
|
"description": "The start line of the annotation."
|
|
},
|
|
"end_line": {
|
|
"type": "integer",
|
|
"description": "The end line of the annotation."
|
|
},
|
|
"start_column": {
|
|
"type": "integer",
|
|
},
|
|
"end_column": {
|
|
"type": "integer",
|
|
},
|
|
"annotation_level": {
|
|
"type": "string",
|
|
"enum": ["notice", "warning", "failure"]
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
},
|
|
"raw_details": {
|
|
"type": "string",
|
|
}
|
|
},
|
|
"required": [
|
|
"path", "start_line", "end_line", "annotation_level", "message"
|
|
]
|
|
}
|
|
},
|
|
"images": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"alt": {
|
|
"type": "string",
|
|
"description": "The alternative text for the image."
|
|
},
|
|
"image_url": {
|
|
"type": "string",
|
|
"description": "The full URL of the image."
|
|
},
|
|
"caption": {
|
|
"type": "string",
|
|
"description": "A short image description."
|
|
}
|
|
},
|
|
"required": ["alt", "image_url"]
|
|
}
|
|
}
|
|
},
|
|
"required": ["title", "summary"]
|
|
},
|
|
"actions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"label": {
|
|
"type": "string",
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
},
|
|
"identifier": {
|
|
"type": "string",
|
|
}
|
|
},
|
|
"required": ["label", "description", "identifier"]
|
|
}
|
|
}
|
|
},
|
|
"required": ["name", "head_sha"]
|
|
},
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@property
|
|
def parameter_only_definition(self):
|
|
return {
|
|
"parameters": [
|
|
{
|
|
"name": "accept",
|
|
"description": "This API is under preview and subject to change.",
|
|
"in": "header",
|
|
"schema": {
|
|
"type": "string",
|
|
"default": "application/vnd.github.antiope-preview+json"
|
|
},
|
|
"required": True
|
|
}, {
|
|
"name": "owner",
|
|
"description": "owner parameter",
|
|
"in": "path",
|
|
"required": True,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}, {
|
|
"name": "repo",
|
|
"description": "repo parameter",
|
|
"in": "path",
|
|
"required": True,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
]
|
|
}
|