Jump to >

reviewboard.testing.testcase

class TestCase(methodName='runTest')[source]

Bases: djblets.testing.testcases.FixturesCompilerMixin, djblets.testing.testcases.TestCase

The base class for Review Board test cases.

This class provides a number of convenient functions for creating common objects for testing, such as review requests and comments. They’re populated with default data that can be overridden by the callers.

This also overcomes an annoyance with default Django unit tests where the cache is not cleared across tests, leading to inconsistent results and useless testing.

local_site_name = u'local-site-1'[source]
local_site_id = 1[source]
ws_re = <_sre.SRE_Pattern object>[source]
DEFAULT_FILEDIFF_DATA = '--- README\trevision 123\n+++ README\trevision 123\n@@ -1 +1 @@\n-Hello, world!\n+Hello, everybody!\n'[source]
DEFAULT_GIT_FILEDIFF_DATA = 'diff --git a/README b/README\nindex 94bdd3e..197009f 100644\n--- README\n+++ README\n@@ -2 +2 @@\n-blah blah\n+blah!\n'[source]
setUp()[source]

Hook method for setting up the test fixture before exercising it.

shortDescription()[source]

Returns the description of the current test.

This changes the default behavior to replace all newlines with spaces, allowing a test description to span lines. It should still be kept short, though.

get_local_site_or_none(name)[source]

Returns a LocalSite matching the name, if provided, or None.

get_local_site(name)[source]
create_webapi_token(user, note=u'Sample note', policy={u'access': u'rw'}, with_local_site=False, **kwargs)[source]

Creates a WebAPIToken for testing.

assert_warns(**kwds)[source]

A context manager for asserting code generates a warning.

This method only supports code which generates a single warning. Tests which make use of code generating multiple warnings will need to manually catch their warnings.

create_diff_file_attachment(filediff, from_modified=True, review_request=None, orig_filename=u'filename.png', caption=u'My Caption', mimetype=u'image/png', **kwargs)[source]

Creates a diff-based FileAttachment for testing.

The FileAttachment is tied to the given FileDiff. It’s populated with default data that can be overridden by the caller.

create_diffset(review_request=None, revision=1, repository=None, draft=False, name=u'diffset')[source]

Creates a DiffSet for testing.

The DiffSet defaults to revision 1. This can be overriden by the caller.

DiffSets generally are tied to a ReviewRequest, but it’s optional.

create_diff_comment(review, filediff, interfilediff=None, text=u'My comment', issue_opened=False, issue_status=None, first_line=1, num_lines=5, extra_fields=None, reply_to=None, **kwargs)[source]

Create a Comment for testing.

The comment is tied to the given Review and FileDiff (and, optionally, an interfilediff). It’s populated with default data that can be overridden by the caller.

Parameters:
  • review (reviewboard.reviews.models.review.Review) – The review associated with the comment.
  • filediff (reviewboard.diffviewer.models.FileDiff) – The FileDiff associated with the comment.
  • interfilediff (reviewboard.diffviewer.models.FileDiff, optional) – The FileDiff used for the end of an interdiff range associated with the comment.
  • text (unicode) – The text for the comment.
  • issue_opened (bool, optional) – Whether an issue is to be opened for the comment.
  • issue_status (unicode, optional) – The issue status to set, if an issue is opened. Defaults to being an open issue.
  • first_line (int, optional) – The first line (0-based) of the comment range.
  • num_lines (int, optional) – The number of lines in the comment.
  • extra_fields (dict, optional) – Extra data to set on the comment.
  • reply_to (reviewboard.reviews.models.diff_comment.Comment, optional) – The comment this comment replies to.
  • **kwargs (dict) – Additional model attributes to set on the comment.
Returns:

The resulting comment.

Return type:

reviewboard.reviews.models.diff_comment.Comment

create_file_attachment(review_request, orig_filename=u'filename.png', caption=u'My Caption', draft=False, active=True, **kwargs)[source]

Create a FileAttachment for testing.

The attachment is tied to the given ReviewRequest. It’s populated with default data that can be overridden by the caller.

Parameters:
  • review_request (reviewboard.reviews.models.review_request.ReviewRequest) – The review request that ultimately owns the file attachment.
  • orig_filename (unicode, optional) – The filename to use for the file attachment.
  • caption (unicode, optional) – The caption to use for the file attachment.
  • draft (bool or reviewboard.reviews.models.review_request_draft.ReviewRequestDraft) – A draft to associate the attachment with. This can also be a boolean, for legacy reasons, which will attempt to look up or create a draft for the review request.
  • active (bool) – Whether this attachment is considered active (not deleted).
  • **kwargs (dict) – Additional fields to set on the attachment.
Returns:

The resulting file attachment.

Return type:

reviewboard.attachments.models.FileAttachment

create_user_file_attachment(user, caption=u'My Caption', with_local_site=False, local_site_name=None, local_site=None, has_file=False, orig_filename=u'filename.png', **kwargs)[source]

Create a user FileAttachment for testing.

The reviewboard.attachments.models.FileAttachment is tied to the given django.contrib.auth.models.User. It’s populated with default data that can be overridden by the caller. Notably, by default the FileAttachment will be created without a file or a local_site.

Parameters:
  • user (django.contrib.auth.models.User) – The user who owns the file attachment.
  • caption (unicode, optional) – The caption for the file attachment.
  • with_local_site (bool, optional) – True if the file attachment should be associated with a local site. If this is set, one of local_site_name or local_site should be provided as well.
  • local_site_name (unicode, optional) – The name of the local site to associate this attachment with.
  • local_site (reviewboard.site.models.LocalSite, optional) – The local site to associate this attachment with.
  • has_file (bool, optional) – True if an actual file object should be included in the model.
  • orig_filename (unicode, optional) – The original name of the file to set in the model.
  • kwargs (dict) – Additional keyword arguments to pass into the FileAttachment constructor.
Returns:

The new file attachment instance.

Return type:

reviewboard.attachments.models.FileAttachment

create_file_attachment_comment(review, file_attachment, diff_against_file_attachment=None, text=u'My comment', issue_opened=False, issue_status=None, extra_fields=None, reply_to=None, **kwargs)[source]

Create a FileAttachmentComment for testing.

The comment is tied to the given Review and FileAttachment. It’s populated with default data that can be overridden by the caller.

Parameters:
  • review (reviewboard.reviews.models.review.Review) – The review associated with the comment.
  • file_attachment (reviewboard.attachments.models.FileAttachment) – The file attachment associated with the comment.
  • diff_against_file_attachment (reviewboard.attachments.models.FileAttachment, optional) – The file attachment being diff against, for comments on attachment diffs.
  • text (unicode) – The text for the comment.
  • issue_opened (bool, optional) – Whether an issue is to be opened for the comment.
  • issue_status (unicode, optional) – The issue status to set, if an issue is opened. Defaults to being an open issue.
  • extra_fields (dict, optional) – Extra data to set on the comment.
  • reply_to (reviewboard.reviews.models.file_attachment_comment.FileAttachmentComment, optional) – The comment this comment replies to.
  • **kwargs (dict) – Additional model attributes to set on the comment.
Returns:

The resulting comment.

Return type:

reviewboard.reviews.models.file_attachment_comment.FileAttachmentComment

create_filediff(diffset, source_file=u'/test-file', dest_file=u'/test-file', source_revision=u'123', dest_detail=u'124', status=u'M', diff='--- README\trevision 123\n+++ README\trevision 123\n@@ -1 +1 @@\n-Hello, world!\n+Hello, everybody!\n', save=True)[source]

Create a FileDiff for testing.

The FileDiff is tied to the given DiffSet. It’s populated with default data that can be overridden by the caller.

Parameters:
  • diffset (reviewboard.diffviewer.models.DiffSet) – The parent diff set that will own this file.
  • source_file (unicode, optional) – The source filename.
  • dest_file (unicode, optional) – The destination filename, which will be the same as source_file unless the file was moved/renamed/copied.
  • source_revision (unicode, optional) – The source revision.
  • dest_detail (unicode, optional) – The destination revision or other detail as found in the parsed diff. This may be a timestamp or some other value.
  • status (unicode, optional) – The status of the file. This is the operation performed as indicated in the diff.
  • diff (bytes, optional) – The diff contents.
  • save (bool, optional) – Whether to automatically save the resulting object.
Returns:

The resulting FileDiff.

Return type:

reviewboard.diffviewer.models.FileDiff

create_repository(with_local_site=False, name=u'Test Repo', tool_name=u'Git', path=None, local_site=None, extra_data=None, **kwargs)[source]

Create a Repository for testing.

The Repository may optionally be attached to a LocalSite. It’s also populated with default data that can be overridden by the caller.

Parameters:
  • with_local_site (bool, optional) –

    Whether to create the repository using a Local Site. This will choose one based on local_site_name.

    If local_site is provided, this argument is ignored.

  • name (unicode, optional) – The name of the repository.
  • tool_name (unicode, optional) – The name of the registered SCM Tool for the repository.
  • path (unicode, optional) – The path for the repository. If not provided, one will be computed.
  • local_site (reviewboard.site.models.LocalSite, optional) – The explicit Local Site to attach.
  • extra_data (dict, optional) – Explicit extra_data to attach to the repository.
  • **kwargs (dict) – Additional fields to set on the repository.
Returns:

The new repository.

Return type:

reviewboard.scmtools.models.Repository

create_review_request(with_local_site=False, create_repository=False, publish=False, id=None, local_id=1001, local_site=None, repository=None, time_added=None, last_updated=None, status=u'P', submitter=u'doc', summary=u'Test Summary', description=u'Test Description', testing_done=u'Testing', branch=u'my-branch', depends_on=None, target_people=None, target_groups=None, **kwargs)[source]

Create a ReviewRequest for testing.

The ReviewRequest may optionally be attached to a LocalSite. It’s also populated with default data that can be overridden by the caller.

Parameters:
  • with_local_site (bool, optional) –

    Whether to create this review request on a default local site.

    This is ignored if local_site is provided.

  • create_repository (bool, optional) –

    Whether to create a new repository in the database for this review request.

    This can’t be set if repository is provided.

  • publish (bool, optional) – Whether to publish the review request after creation.
  • id (int, optional) – An explicit database ID to set for the review request.
  • local_id (int, optional) – The ID specific to the local site, if one is used.
  • local_site (reviewboard.site.models.LocalSite, optional) – An explicit local site to create the review request on.
  • repository (reviewboard.scmtools.models.Repository, optional) – An explicit repository to set for the review request.
  • time_added (datetime.datetime, optional) – An explicit creation timestamp to set for the review request.
  • last_updated (datetime.datetime, optional) – An explicit last updated timestamp to set for the review request.
  • status (unicode, optional) – The status of the review request. This must be one of the values listed in STATUSES.
  • submitter (unicode or django.contrib.auth.models.User, optional) – The submitter of the review request. This can be a username (which will be looked up) or an explicit user.
  • summary (unicode, optional) – The summary for the review request.
  • description (unicode, optional) – The description for the review request.
  • testing_done (unicode, optional) – The Testing Done text for the review request.
  • branch (unicode, optional) – The branch for the review request.
  • depends_on (list of reviewboard.reviews.models.review_request.ReviewRequest, optional) – A list of review requests to set as dependencies.
  • target_people (list of django.contrib.auth.models.User, optional) – A list of users to set as target reviewers.
  • target_groups (list of reviewboard.reviews.models.group.Group, optional) – A list of review groups to set as target reviewers.
  • **kwargs (dict) – Additional fields to set on the review request.
Returns:

The resulting review request.

Return type:

reviewboard.reviews.models.review_request.ReviewRequest

create_visit(review_request, visibility, user=u'doc', username=None, timestamp=None)[source]

Create a ReviewRequestVisit for testing.

The ReviewRequestVisit is tied to the given ReviewRequest and User. It’s populated with default data that can be overridden by the caller.

The provided user may either be a username or a User object.

create_review(review_request, user=u'dopey', body_top=u'Test Body Top', body_bottom=u'Test Body Bottom', ship_it=False, publish=False, timestamp=None, **kwargs)[source]

Creates a Review for testing.

The Review is tied to the given ReviewRequest. It’s populated with default data that can be overridden by the caller.

The provided user may either be a username or a User object.

If publish is True, Review.publish() will be called.

Parameters:
  • review_request (reviewboard.reviews.models.review_request.ReviewRequest) – The review request the review is filed against.
  • user (unicode or django.contrib.auth.models.User, optional) – The username or User object owning the review.
  • body_top (unicode, optional) – The text for the body_top field.
  • body_bottom (unicode, optional) – The text for the body_bottom field.
  • ship_it (bool, optional) – The Ship It state for the review.
  • publish (bool, optional) – Whether to publish the review immediately after creation.
  • timestamp (datetime.datetime, optional) – The timestamp for the review.
  • **kwargs (dict) – Additional attributes to set in the review.
Returns:

The resulting review.

Return type:

reviewboard.reviews.models.review.Review

create_review_group(name=u'test-group', with_local_site=False, local_site=None, visible=True, invite_only=False, is_default_group=False)[source]

Creates a review group for testing.

The group may optionally be attached to a LocalSite. It’s also populated with default data that can be overridden by the caller.

create_reply(review, user=u'grumpy', body_top=u'Test Body Top', timestamp=None, publish=False, **kwargs)[source]

Create a review reply for testing.

The reply is tied to the given Review. It’s populated with default data that can be overridden by the caller.

To reply to a body_top or body_bottom field, pass either body_top_reply_to= or body_bottom_reply_to= to this method. This will be passed to the review’s constructor.

Parameters:
  • review (reviewboard.reviews.models.review.Review) – The review being replied to.
  • user (django.contrib.auth.models.User or unicode, optional) – Either the user model or the username of the user who is replying to the review.
  • body_top (unicode, optional) – The body top text.
  • timestamp (datetime.datetime, optional) – The timestamp of the review.
  • publish (bool, optional) – Whether the review should be published. By default it’s in draft form.
  • **kwargs (dict) – Additional arguments to pass to the Review constructor.
Returns:

The resulting review.

Return type:

reviewboard.reviews.models.review.Review

create_screenshot(review_request, caption=u'My caption', draft=False, active=True, **kwargs)[source]

Create a Screenshot for testing.

The screenshot is tied to the given ReviewRequest. It’s populated with default data that can be overridden by the caller.

Parameters:
  • review_request (reviewboard.reviews.models.review_request.ReviewRequest) – The review request that ultimately owns the screenshot.
  • caption (unicode, optional) – The caption to use for the screenshot.
  • draft (bool or reviewboard.reviews.models.review_request_draft.ReviewRequestDraft) – A draft to associate the screenshot with. This can also be a boolean, for legacy reasons, which will attempt to look up or create a draft for the review request.
  • active (bool) – Whether this screenshot is considered active (not deleted).
  • **kwargs (dict) – Additional fields to set on the screenshot.
Returns:

The resulting screenshot.

Return type:

reviewboard.reviews.models.screenshot.Screenshot

create_screenshot_comment(review, screenshot, text=u'My comment', x=1, y=1, w=5, h=5, issue_opened=False, issue_status=None, extra_fields=None, reply_to=None, **kwargs)[source]

Create a ScreenshotComment for testing.

The comment is tied to the given Review and Screenshot. It’s It’s populated with default data that can be overridden by the caller.

Parameters:
  • review (reviewboard.reviews.models.review.Review) – The review associated with the comment.
  • screenshot (reviewboard.reviews.models.screenshot.Screenshot) – The screenshot associated with the comment.
  • text (unicode) – The text for the comment.
  • x (int, optional) – The X location for the comment on the screenshot.
  • y (int, optional) – The Y location for the comment on the screenshot.
  • w (int, optional) – The width for the comment on the screenshot.
  • h (int, optional) – The height for the comment on the screenshot.
  • issue_opened (bool, optional) – Whether an issue is to be opened for the comment.
  • issue_status (unicode, optional) – The issue status to set, if an issue is opened. Defaults to being an open issue.
  • extra_fields (dict, optional) – Extra data to set on the comment.
  • reply_to (reviewboard.reviews.models.general_comment.GeneralComment, optional) – The comment this comment replies to.
  • **kwargs (dict) – Additional model attributes to set on the comment.
Returns:

The resulting comment.

Return type:

reviewboard.reviews.models.screenshot_comment.ScreenshotComment

create_general_comment(review, text=u'My comment', issue_opened=False, issue_status=None, extra_fields=None, reply_to=None, **kwargs)[source]

Create a GeneralComment for testing.

The comment is tied to the given Review. It is populated with default data that can be overridden by the caller.

Parameters:
  • review (reviewboard.reviews.models.review.Review) – The review associated with the comment.
  • text (unicode) – The text for the comment.
  • issue_opened (bool, optional) – Whether an issue is to be opened for the comment.
  • issue_status (unicode, optional) – The issue status to set, if an issue is opened. Defaults to being an open issue.
  • extra_fields (dict, optional) – Extra data to set on the comment.
  • reply_to (reviewboard.reviews.models.general_comment.GeneralComment, optional) – The comment this comment replies to.
  • **kwargs (dict) – Additional model attributes to set on the comment.
Returns:

The resulting comment.

Return type:

reviewboard.reviews.models.general_comment.GeneralComment

create_status_update(review_request, user=u'dopey', service_id=u'service', summary=u'Status Update', state=u'P', review=None, change_description=None, timestamp=None)[source]

Create a status update for testing.

It is populated with default data that can be overridden by the caller.

Parameters:
  • review_request (reviewboard.reviews.models.ReviewRequest) – The review request to associate with the new status update.
  • user (django.contrib.auth.models.User or unicode) – Either the user model or the username of the user who should own the status update.
  • service_id (unicode) – The ID to fill in for the new model.
  • summary (unicode) – The summary to fill in for the new model.
  • state (unicode) – The state for the new model. This must be one of the valid choices for the state field.
  • review (reviewboard.reviews.models.review.Review, optional) – The review associated with this status update.
  • change_description (reviewboard.changedescs.models.ChangeDescription, optional) – The change description for this status update.
  • timestamp (datetime.datetime) – The timestamp for the status update.
Returns:

The new status update.

Return type:

reviewboard.reviews.models.StatusUpdate

create_webhook(enabled=False, events=u'*', url=u'http://example.com', encoding=u'application/json', use_custom_content=False, custom_content=u'', secret=u'', apply_to=u'A', repositories=None, with_local_site=False, local_site=None, extra_fields=None)[source]

Create a webhook for testing.

It is populated with default data that can be overridden by the caller.

Parameters:
  • enabled (bool) – Whether or not the webhook is enabled when it is created.
  • events (unicode) – A comma-separated list of events that the webhook will trigger on.
  • url (unicode) – The URL that requests will be made against.
  • encoding (unicode) – The encoding of the payload to send.
  • use_custom_content (bool) – Determines if custom content will be sent for the payload (if True) or if it will be auto-generated (if False).
  • custom_content (unicode) – The custom content to send when use_custom_content is True.
  • secret (unicode) – An HMAC secret to sign the payload with.
  • apply_to (unicode) – The types of repositories the webhook will apply to.
  • repositories (list) – A list of repositories that the webhook will be limited to if apply_to is WebHookTarget.APPLY_TO_SELECTED_REPOS.
  • with_local_site (bool) – Determines if this should be created with a local site.
  • local_site (reviewboard.site.models.LocalSite) – An optional local site. If with_local_site is True and this argument is None, the local site will be looked up.
  • extra_fields (dict) – Extra data to be imported into the webhook.
Returns:

A webhook constructed with the given arguments.

Return type:

WebHookTarget

create_oauth_application(user, local_site=None, with_local_site=False, redirect_uris=u'http://example.com', authorization_grant_type=u'client-credentials', client_type=u'public', **kwargs)[source]

Create an OAuth application.

Parameters:
  • user (django.contrib.auth.models.User) – The user whom is to own the application.
  • local_site (reviewboard.site.models.LocalSite, optional) – The LocalSite for the application to be associated with, if any.
  • redirect_uris (unicode, optional) – A whitespace-separated list of allowable redirect URIs.
  • authorization_grant_type (unicode, optional) – The grant type for the application.
  • client_type (unicode, optional) – The application client type.
  • **kwargs (dict) – Additional keyword arguments to pass to the Application initializer.
Returns:

The created application.

Return type:

reviewboard.oauth.models.Application

create_oauth_token(application, user, scope=u'', expires=None, **kwargs)[source]

Create an OAuth2 access token for testing.

Parameters:
  • application (reviewboard.oauth.models.Application) – The application the token should be associated with.
  • user (django.contrib.auth.models.User) – The user who should own the token.
  • scope (unicode, optional) – The scopes of the token. This argument defaults to the empty scope.
  • expires (datetime.timedelta, optional) – How far into the future the token expires. If not provided, this argument defaults to one hour.
Returns:

The created access token.

Return type:

oauth2_provider.models.AccessToken

siteconfig_settings(**kwds)[source]

Temporarily sets siteconfig settings for a test.

Parameters:
  • settings (dict) – The new siteconfig settings to set.
  • reload_settings (bool, optional) – Whether to reload and recompute all settings, applying them to Django and other objects.
Context:

The current site configuration will contain the new settings for this test.