* Added a convention test to detect a model constructor exposing all properties
* add ctors to classes where they are missing
* rename ctor parameters that dont match properties
* add missing parameters to existing ctors
* add specific PunchCard ctor to allow mocking, and update test to resolve call ambiguity
* Added base class properties to the convention test
Added member exclusion attribute
* Updated newly offending classes
2 excludes and 2 ctors
* rename exclusion attribute to be a bit shorter
* Added authentication using bearer token.
* Added Installation and AccessToken clients.
* Added new clients to Reactive project
* added support for DateTime serialized as FileTime
* added support for StatusEventPayload
* added support for StatusEventPayload
* Added test for StatusEventPayload and fixed serializer to return that event payload type.
* WIP - added ApplicationClient and related Api Urls.
* Continued implementing Installations support.
* Fixing build (WIP)
* fixed build
* added Account property to Installation. prefer nameof(x) over literal "x".
* fixed according to code review.
* fixed build.
* switched Installation ID from int to long.
* added Permissions and Events properties to Installation.
* added documentation to Application and Installation properties in IGitHubClient.
* wip - added tests to new clients
* wip - fix build
* wip - fixed build.
* added InstallationsClient tests.
* added integration test for InstallationsClient.
* changes requested in code review.
* add Get method for App
* Create GitHubApp response model instead of re-using existing Application response model
* add Get method to observable client
* fixed build (both locally and failed test).
* Fixed documentation and added some missing XML docs.
* added DebuggerDisplay to StatusEventPayload
* updated XML docs and added some missing bits. prefer nameof(x) over literal "x".
* Add xml comments to AccessToken response model and use DateTimeOffset rather than DateTime
* Tidy up XmlComments and make consistent across client and observable client and interfaces
* fixup unit tests to independently verify preview header
* Implement GetInstallation method
* revert commits unrelated to GitHubApps - these can be done on a separate PR if required
* this extra authenticator class doesnt appear to be used anywhere
* undo project file change as it doesnt appear to be necessary
* Revert "Merge remote-tracking branch 'remote/GitHubApps' into GitHubApps"
This reverts commit c53cc110b8d807f62fdfeaa7df19e1532d050007, reversing
changes made to 0c9e413d420a4725738644ea5b13af6ec102d456.
* Revert "Revert "Merge remote-tracking branch 'remote/GitHubApps' into GitHubApps""
This reverts commit 02d52b8adf814b6945c60cb59a907a8cd34b1ce7.
* add XmlDoc comments to response models and flesh out installation permissions
* name AcceptHeaders member consistently
* accidentally lost changes to Credentials.cs
* Enhance Intergation test framework to handle GitHubApp settings and discoer tests appropriately
Get code ready for GitHubJWT nuget package but for now just hardcode a JWT in ENV VAR
Add 1 integration test for each method and ensure they are working!
* fixed compiler warnings.
* Added support for Installation=>Id field that arrives in a Pull Request Event payload.
(See the last field in the sample JSON of https://developer.github.com/v3/activity/events/types/#pullrequestevent)
* Change integration test project to netcoreapp2.0 so we can use GitHubJwt nuget package in integration tests
* First cut at some GitHubApp doco
* update mkdocs config
* Moved the Installation property to ActivityPayload, so it's available in all payloads.
This feature is not undocumented, unfortunately, but valid:
https://platform.github.community/t/determining-which-installation-an-event-came-from/539/11
* Split Installation to Installation and InstallationId, and added a comfort method for gaining its AccessToken.
* fixed InstallationId CreateAccessToken to receive IGitHubAppsClient. added (and fixed) docs.
* reverted object-oriented style comfort method and it's docs.
* update all test projects to netcoreapp2.0
* tweak build configs to use 2.0.3 SDK
* also need to update cake frosting build to netcoreapp2.0
* tweak docs some more
* fix convention test failures
* test projects still had some old runtime parts in them!
* travis osx image needs to be at least 10.12 for .NET Core 2.0
* shell script might need the same argument tweak for cake
* more doc tweaks
* Make sure compiler warning output isnt somehow causing Linux and OSX builds to fail
* moar logging for linux/OSX builds
* stop sourcelink on linux/OSX builds to see if that is the problem
* set verbosity to detailed for the dotnet build step
* try new sourcelink and list out remotes
* is travis being weird with git clone?
* SourceLink may be defaulting to true on CI server so explicitly set it as false rather than omitting it
* detailed is a bit too verbose for travis, try normal
* turn sourcelink back on for Linux/OSX
* fix compiler warning
* Try SourceLink.Create.CommandLine instead of SourceLink.Create.GitHub
* CliToolReferences did not update to latest versions
* remove debug origin info
* turn off msbuild output
* go back to SourceLink.Create.GitHub!
* time diff between dev PC and API causes issues if specifying a full 600 second token
* handle extra date format that Installation end point now returns
* field needs to be protected in order to be deserialized
* provide even more buffer for client vs server clock drift
* Update to latest GitHubJwt reference
* go back to SDK 1 since SDK 2 is having sporadic travisCI faliures in TestSourceLink build step
* get appveyor working
* update sourcelink back to latest, and use SDK 1.04 (runtime 1.0.5)
* Unskip pagination convention tests and rework exclusion property names
Also exclude Obsolete methods from pagination convention tests
* Reaction APIs appear to support pagination, flag to exclude for now and mark a TODO that they need implementing
* Repository invitation APIs need pagination implemented
* Exclude methods that use an alternative pagination approach
* Migrations, Licenses and References all need pagination implemented
* Pagination not supported for these methods (determined by API doc and poking the API) so exclude them from convention tests
* These methods need renaming to GetAll
* Rename offending RepositoryTrafficClient GetReferrers and GetPaths to GetAllReferrers and GetAllPaths
* Rename offending RepositoryBranchesClient methods from Get to GetAll
* Added StringEnum<TEnum>
* Added tests
* Make sure the serializer can work with StringEnum
* Use StringEnum for EventInfo.Event
* Add convention test to assert that all Response models use StringEnum<> to wrap enum properties
* Add Stringnum<> to all response types failing convention test
* Handle StringEnum to Enum conversion when Issue response model populates IssueUpdate request model
* Fix unit test
* Refactor SimpleJsonSerializer to expose the DeserializeEnum strategy so it can be used in StringEnum class
* Need to expose/use SerializeEnum functionality too, so we use the correct string representation of enum values that have custom properties (eg ReactionType Plus1 to "+1")
* fix unit tests, since the string is now the "correct" upstream api value
* Add a couple of tests for the Enum serialize/deserialize when underscores, hyphens and custom property attributes are present
* Compare parsed values for equality
* add convention test to ensure enum members all have Parameter property set
* update test to cover implicit conversions too
* this test should work but fails at the moment due to magic hyphen removal in deserializer causing a one way trip from utf-8 to EncodingType.Utf8 with no way to get back
* (unsuccesfully) expand event info test to try to catch more cases of unknown event types
* fix broken integration test while im here
* Fixed build errors after .NET Core merge
* Value -> StringValue, ParsedValue -> Value
* Don't allow StringValue to be null
* Ignore enums not used in request/response models
* Added ParameterAttribute to almost all enum values
* Ignore Language enum
* Fix failing tests
* Fix milestone sort parameter and tests
* whitespace
* fix milestone unit tests
* Fix StringEnum.Equals ... This could've been embarrassing!
* Change SimpleJsonSerializer Enum handling to only use `[Parameter()]` attributes (no more magic removal of hyphen/underscores from strings)
* Tidy up this integration test while im here
* Only test request/response enums in convention test
* Keep skipping Language
* Remove unused method
* Remove excluded enum types
* Removed unnecessary ParameterAttributes
* Remove unused enum
* Add StringEnum test for string-comparison of two invalid values
* Bring back IssueCommentSort and use it in IssueCommentRequest
This reverts commit 38a4a291d1476ef8c992fe0f76956974b6f32a49.
* Use assembly instead of namespace for Octokit check
* Add failing test to reproduce the issue where only the first enum paramter/value was added to the cache
* Fix deserializer enum cache to include all enum members rather than only the first member encountered
* Use a static SimpleJsonSerializer in StringEnum
* Remove serializer instance in StringEnum
* Add some documentation on StringEnum<TEnum>
* Fix parameter value to resolve failing integration test
* 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
2 model classes were missing one - technically not needed for these 2 classes due to their api calls being basic data types that then get populated into these objects, but it's easiest to just add them to these 2 classes so the test can pass on all response models