Skip to content

Commit ea09dc7

Browse files
authored
Add support for uploading avatars (#681)
1 parent 62ad597 commit ea09dc7

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

src/Api/Projects.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1060,6 +1060,17 @@ public function uploadFile($project_id, string $file)
10601060
return $this->post($this->getProjectPath($project_id, 'uploads'), [], [], ['file' => $file]);
10611061
}
10621062

1063+
/**
1064+
* @param int|string $project_id
1065+
* @param string $file
1066+
*
1067+
* @return mixed
1068+
*/
1069+
public function uploadAvatar($project_id, string $file)
1070+
{
1071+
return $this->put($this->getProjectPath($project_id, ''), [], [], ['avatar' => $file]);
1072+
}
1073+
10631074
/**
10641075
* @param int|string $project_id
10651076
* @param array $parameters

tests/Api/ProjectsTest.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2491,6 +2491,25 @@ public function shouldDeleteProjectAccessToken(): void
24912491
$this->assertEquals($expectedBool, $api->deleteProjectAccessToken(1, 2));
24922492
}
24932493

2494+
/**
2495+
* @test
2496+
*/
2497+
public function shouldUploadAvatar(): void
2498+
{
2499+
$emptyPNGContents = 'iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAACYElEQVR42u3UMQEAAAjDMFCO9GEAByQSerQrmQJeagMAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAwADAAAwADAAwAMAAAAMADAAwAMAAAAMADAAwAMAAAAMADAAwAMAAAAMADAAwAMAAAAMADAAwAMAAAAMADAAwAMAAAAMADAAwAMAAAAMADAAwAMAAAAMAAzAAMADAAAADAAwAMADAAAADAAwAMADAAAADAAwAMADAAAADAAwAMADAAAADAAwAMADAAAADAAwAMADAAAADAAwAMADAAAADAAwAMADAAAADAAwADMAAwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAMAAZwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAwAAAAwAMADAAMADAAAADAAwAMADAAAADAAwAMADAAAADAAwAMADAAAADAAwAMADAAAADAAwAMADAAAADAAwAMADAAAADAAwAMADAAAADAAwAMADAAAADAAwAMAAwAMAAAAMADAAwAMAAAAMADAAwAMAAAAMADAAwAMAAAAMADAAwAMAAAAMADAAwAMAAAAMADAAwAMAAAAMADAAwAMAAAAMADAAwAOCybrx+H1CTHLYAAAAASUVORK5CYII=';
2500+
$fileName = \uniqid().'.png';
2501+
$expectedArray = ['id' => 1, 'name' => 'Project Name', 'avatar_url' => 'https://gitlab.example.com/uploads/-/system/project/avatar/1/'.$fileName];
2502+
\file_put_contents($fileName, \base64_decode($emptyPNGContents));
2503+
$this->assertFileExists($fileName);
2504+
$api = $this->getApiMock();
2505+
$api->expects($this->once())
2506+
->method('put')
2507+
->with('projects/1/', [], [], ['avatar' => $fileName])
2508+
->will($this->returnValue($expectedArray));
2509+
$this->assertEquals($expectedArray, $api->uploadAvatar(1, $fileName));
2510+
\unlink($fileName);
2511+
}
2512+
24942513
protected function getApiClass()
24952514
{
24962515
return Projects::class;

0 commit comments

Comments
 (0)