* Fix handling for Streams
Fix `NullReferenceException` if raw content was handled as a string rather than a stream by `HttpClientAdapter.BuildResponse()`.
Resolves#2789.
* Add Connection.GetRaw tests
Add tests for `Connection.GetRaw()` and for #2789.
---------
Co-authored-by: Keegan Campbell <me@kfcampbell.com>
* Bump NSubstitute from 3.1.0 to 4.2.1
Bumps NSubstitute from 3.1.0 to 4.2.1.
Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
* fix failing tests
* bugfix - PUT should have a payload for Mark as Read (#1579)
* bugfix - PUT should have a payload for Mark as Read
* also fix the Observable client test
* add integration tests for MarkRead methods
* Fixup MarkReadForRepository methods to specify a body in the PUT request
* Fix unit tests for regular and observable client
* helps if the new files are included in the test project :)
* Cloning ApiInfo object should work when some fields are null (#1580)
* Adjust ApiInfo.Clone() to work even if some elements (eg ETag) are null
* Remove c# 6 language feature and do it the old school way
* Add a test for cloning ApiInfo when some fields are null
* The 3 lists can never be null anyway so remove some un-needed statements
* Add test for null RateLimit
* Remove Rx-Main dependency from samples
This resolves#1592 - LINQPad doesn't understand how to restore this unlisted package and it's not actually needed in the samples.
* Adding RemovedFromProject and other missing EventInfoState types. (#1591)
* Adding missing review types to event info.
* Fixing whitespace.
* Reword `BaseRefChanged` comment
* Adding missing event types.
* Change response models 'Url' properties from `Uri` to `string` (#1585)
* Add convention test to ensure 'Url' properties are of type string
Closes#1582
* Change 'Url' properties from Uri to string
Global Find/Replace FTW!
* fix compilation errors in the integration tests project
* Extend 'Url' properties type check to request models
* Stick to convention tests naming convention
* Remove unused using directives in models
Changing from `Uri` to `string` means the `using System;`
directive was not needed anymore in some files
* Update exception message wording
* empty commit to trigger a new build - hopefully Travis passes
* add convention test to ensure request models have Uri 'Url' properties
* make request models 'Url' properties Uri
fix typo in convention test name
* revert some request models 'Url' properties as `string`
see https://github.com/octokit/octokit.net/pull/1585#issuecomment-297186728
* Change test so that all model types must have 'Url' properties of type string
- Filter test input to only get types which have 'Url' properties
- Merge response and request model types tests into one
- Unparameterize the exception since we only check for the string type now
* Fix string.Format tokens
If this PR doesn't get rebased, it'll be my wall of shame FOREVER!
* and then it's even more embarrassing when the commit message says rebased but you really meant squashed
* Remove exclusion of `Release` from request models
* Add release notes and bump version to 0.24
* run "build FormatCode" to fix up whitespace/formatting issues
* Fix failing Ssh key tests due to "validation exception". This key must be in use on github (under another user, most likely from these tests failing). Changed to a new SSH key and tweaked tests to reduce chance of a key being created and not destroyed
* Assignee and Assignees cant both be specified on NewIssue. We missed this one in the PR. Marked Assignee as [Obsolete] and fixed tests to use Assignees
* Fix a couple of Reactions tests that were calling the wrong client methods
* Fix timeline tests - looks like the response class has changed shape a bit, it now has an Issue object in the payload and Id field isnt present (leaving Id field there in case other timeline events do use it)
* Fix some following tests that require the test user to follow more than 1 other user
* Unskip these Event tests now because apparently they work!
* add breaking changes notes
* Update ApiErrorMessageSafe to return null for empty and whitespace strings (#1540)
* return null if ApiError.Message is empty or whitespace
* Uncomment test, which now passes
* update release notes to include PR1540
* Add "Bot" AccountType, was causing a deserialization exception when running the integration test "SearchForExcludedLanguage" (#1541)
* Update to include PR1541
* add bullets to make release notes easier to read
* markup additional code mentions in notes
* Fix grammar
fields => field
* Add some tests to be completed
* Actually fail the tests
* Create AbuseException class
Copied from ForbiddenException and then gone over to inherit from it.
* Actually add AbuseException to csproj
* Update test file
* Ran .\build FixProjects
* Test updates
* Default message update for AbuseException
* Separate the exception creation logic
* Remove message assertion -- doesn't matter here
* Additional test for abuse message
* Remove unnecessary variable assignment
* Failing test for unsafe request
* Attempt to fix test
Still broken -- I don't think empty strings count to trigger the default
message
* Remove test that will always fail due to another issue
Opened #1529 to explore this.
* New tests (some failing)
* Passing tests are, like, better than failing tests.
* Last passing test
* Cleanup
* Add test for zero value and fix code
Lol boundary cases.
* cleanup
* Mark ParseRetryAfterSeconds as static
* Add GetObjectData override to AbuseException
To include data for RetryAfterSeconds variable, and satisfy the build
check.
* Add back failing test & skip it
* Change to nullable int with null default
* Fix tests around nullable default
* whitespace fixes
* Compact the logic; tests still pass
* Invert the if statements for compactness / clarity
* Test subclasses & reformatting
* Test name changes
* Whitespace fix
* Remove redundant line
* add test
* [WIP]
* put logic for redirects outside of delegating handler
* change send method
* format code
* reorganized http client adapter
* change HttpClientAdapter
* rework http redirect tests - still an issue with accessing the response.RequestMessage.Content property as it is disposed
* remove some unused lines in httpclientadapter
* Reworked redirect implementation to fully clone http request and re-use it later
Now the skipped test from #874 works!
Also had to fix the new ReturnsRenamedRepository test as the ionide repo was renamed again
Most calls to `GetQueuedOperation` are used to queue up an operation
that'll return a collection in a subsequent call. In the case that the
API returns No Content, we want to return an empty collection. This
refactoring embeds that last bit of logic into `GetQueuedOperation`
rather than making every caller have to do it.