-
-
Notifications
You must be signed in to change notification settings - Fork 597
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Support for Organization Runners
Signed-off-by: Hari Darshan Gorana <er.haridarshan@gmail.com>
- Loading branch information
1 parent
31cd5b1
commit 9d1ab1e
Showing
4 changed files
with
200 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,65 @@ | ||
<?php | ||
|
||
namespace Github\Api\Organization\Actions; | ||
|
||
use Github\Api\AbstractApi; | ||
|
||
class SelfHostedRunners extends AbstractApi | ||
{ | ||
/** | ||
* @link https://docs.github.com/en/rest/actions/self-hosted-runners?apiVersion=2022-11-28#list-self-hosted-runners-for-an-organization | ||
* | ||
* @param string $organization | ||
* @param string $type | ||
* @param int $page | ||
* | ||
* @return array|string | ||
*/ | ||
public function all(string $organization, string $type = 'all', int $page = 1) | ||
{ | ||
$parameters = [ | ||
'type' => $type, | ||
'page' => $page, | ||
]; | ||
|
||
return $this->get('/orgs/'.rawurlencode($organization).'/actions/runners', $parameters); | ||
} | ||
|
||
/** | ||
* @link https://docs.github.com/en/rest/actions/self-hosted-runners?apiVersion=2022-11-28#get-a-self-hosted-runner-for-an-organization | ||
* | ||
* @param string $organization | ||
* @param int $runnerId | ||
* | ||
* @return array|string | ||
*/ | ||
public function show(string $organization, int $runnerId) | ||
{ | ||
return $this->get('/orgs/'.rawurlencode($organization).'/actions/runners/'.$runnerId); | ||
} | ||
|
||
/** | ||
* @link https://docs.github.com/en/rest/actions/self-hosted-runners?apiVersion=2022-11-28#delete-a-self-hosted-runner-from-an-organization | ||
* | ||
* @param string $organization | ||
* @param int $runnerId | ||
* | ||
* @return array|string | ||
*/ | ||
public function remove(string $organization, int $runnerId) | ||
{ | ||
return $this->delete('/orgs/'.rawurlencode($organization).'/actions/runners/'.$runnerId); | ||
} | ||
|
||
/** | ||
* @link https://docs.github.com/en/rest/actions/self-hosted-runners?apiVersion=2022-11-28#list-runner-applications-for-an-organization | ||
* | ||
* @param string $organization | ||
* | ||
* @return array|string | ||
*/ | ||
public function applications(string $organization) | ||
{ | ||
return $this->get('/orgs/'.rawurlencode($organization).'/actions/runners/downloads'); | ||
} | ||
} |
116 changes: 116 additions & 0 deletions
116
test/Github/Tests/Api/Organization/Actions/SelfHostedRunnersTest.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
<?php | ||
|
||
namespace Github\Tests\Api\Organization\Actions; | ||
|
||
use Github\Api\Organization\Actions\SelfHostedRunners; | ||
use Github\Tests\Api\TestCase; | ||
use PHPUnit\Framework\MockObject\MockObject; | ||
|
||
class SelfHostedRunnersTest extends TestCase | ||
{ | ||
/** | ||
* @test | ||
*/ | ||
public function shouldGetSelfHostedRunners() | ||
{ | ||
$expectedArray = [ | ||
[ | ||
'id' => 1, | ||
'name' => 'MBP', | ||
'os' => 'macos', | ||
'status' => 'online', | ||
], | ||
[ | ||
'id' => 2, | ||
'name' => 'iMac', | ||
'os' => 'macos', | ||
'status' => 'offline', | ||
], | ||
]; | ||
|
||
/** @var SelfHostedRunners|MockObject $api */ | ||
$api = $this->getApiMock(); | ||
|
||
$api | ||
->expects($this->once()) | ||
->method('get') | ||
->with('/orgs/KnpLabs/actions/runners') | ||
->will($this->returnValue($expectedArray)); | ||
|
||
$this->assertEquals($expectedArray, $api->all('KnpLabs')); | ||
} | ||
|
||
/** | ||
* @test | ||
*/ | ||
public function shouldGetSelfHostedRunner() | ||
{ | ||
$expectedArray = [ | ||
'id' => 1, | ||
'name' => 'MBP', | ||
'os' => 'macos', | ||
'status' => 'online', | ||
]; | ||
|
||
/** @var SelfHostedRunners|MockObject $api */ | ||
$api = $this->getApiMock(); | ||
|
||
$api | ||
->expects($this->once()) | ||
->method('get') | ||
->with('/orgs/KnpLabs/actions/runners/1') | ||
->will($this->returnValue($expectedArray)); | ||
|
||
$this->assertEquals($expectedArray, $api->show('KnpLabs', 1)); | ||
} | ||
|
||
/** | ||
* @test | ||
*/ | ||
public function shouldRemoveSelfHostedRunner() | ||
{ | ||
$expectedValue = 'response'; | ||
|
||
/** @var SelfHostedRunners|MockObject $api */ | ||
$api = $this->getApiMock(); | ||
|
||
$api | ||
->expects($this->once()) | ||
->method('delete') | ||
->with('/orgs/KnpLabs/actions/runners/1') | ||
->will($this->returnValue($expectedValue)); | ||
|
||
$this->assertEquals($expectedValue, $api->remove('KnpLabs', 1)); | ||
} | ||
|
||
/** | ||
* @test | ||
*/ | ||
public function shouldGetSelfHostedRunnerApps() | ||
{ | ||
$expectedArray = [ | ||
['os' => 'osx', 'architecture' => 'x64', 'download_url' => 'download_url', 'filename' => 'filename'], | ||
['os' => 'linux', 'architecture' => 'x64', 'download_url' => 'download_url', 'filename' => 'filename'], | ||
['os' => 'linux', 'architecture' => 'arm', 'download_url' => 'download_url', 'filename' => 'filename'], | ||
['os' => 'win', 'architecture' => 'x64', 'download_url' => 'download_url', 'filename' => 'filename'], | ||
['os' => 'linux', 'architecture' => 'arm64', 'download_url' => 'download_url', 'filename' => 'filename'], | ||
]; | ||
|
||
/** @var SelfHostedRunners|MockObject $api */ | ||
$api = $this->getApiMock(); | ||
|
||
$api | ||
->expects($this->once()) | ||
->method('get') | ||
->with('/orgs/KnpLabs/actions/runners/downloads') | ||
->will($this->returnValue($expectedArray)); | ||
|
||
$this->assertEquals($expectedArray, $api->applications('KnpLabs')); | ||
} | ||
|
||
protected function getApiClass() | ||
{ | ||
return SelfHostedRunners::class; | ||
} | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters