Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/workflows/push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,16 @@ jobs:
- { name: "AuditEventTypesTest", filter: "--filter AuditEventTypesTest" }
- { name: "GuzzleTracingTest", filter: "--filter GuzzleTracingTest" }
- { name: "Repositories", filter: "--filter tests/Repositories/" }
- { name: "OAuth2AttendeesApiTest", filter: "--filter test/OAuth2AttendeesApiTest"}
- { name: "OAuth2SummitSponsorApiTest", filter: "--filter test/OAuth2SummitSponsorApiTest"}
- { name: "OAuth2BookableRoomAttributeTypesApiTest", filter: "--filter test/OAuth2BookableRoomAttributeTypesApiTest"}
- { name: "OAuth2CompaniesApiTest", filter: "--filter test/OAuth2CompaniesApiTest"}
- { name: "OAuth2ElectionsApiController", filter: "--filter test/OAuth2ElectionsApiController"}
- { name: "OAuth2MembersApiTest", filter: "--filter test/OAuth2MembersApiTest"}
- { name: "OAuth2GroupsApiTest", filter: "--filter test/OAuth2GroupsApiTest"}
- { name: "OAuth2OAuth2SponsorshipTypeApiTest", filter: "--filter test/OAuth2OAuth2SponsorshipTypeApiTest"}
- { name: "OAuth2OrganizationsApiTest", filter: "--filter test/OAuth2OrganizationsApiTest"}
- { name: "OAuth2PresentationApiTest", filter: "--filter test/OAuth2PresentationApiTest"}
env:
OTEL_SERVICE_ENABLED: false
APP_ENV: testing
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ class OAuth2ElectionsApiController extends OAuth2ProtectedController

use RequestProcessor;

use GetAndValidateJsonPayload;

/**
* @var IElectionService
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -440,7 +440,7 @@ public function getRsvpByEvent($event_id)
* @param int $ticket_id
* @return SummitAttendeeTicket
*/
public function getTicketById($ticket_id)
public function getTicketById(int $ticket_id)
{
$ticket = $this->tickets->matching(
$criteria = Criteria::create()
Expand Down Expand Up @@ -1223,8 +1223,8 @@ public function getBoughtTicketTypes(): array
{
try {
$sql = <<<SQL
SELECT TicketTypeID AS type_id, COUNT(SummitTicketType.ID) AS qty, SummitTicketType.Name AS type_name FROM `SummitAttendeeTicket`
INNER JOIN SummitTicketType ON SummitTicketType.ID = SummitAttendeeTicket.TicketTypeID
SELECT TicketTypeID AS type_id, COUNT(SummitTicketType.ID) AS qty, SummitTicketType.Name AS type_name FROM `SummitAttendeeTicket`
INNER JOIN SummitTicketType ON SummitTicketType.ID = SummitAttendeeTicket.TicketTypeID
WHERE OwnerID = :owner_id AND
SummitAttendeeTicket.IsActive = 1 AND
SummitAttendeeTicket.Status = 'Paid'
Expand Down Expand Up @@ -1311,12 +1311,12 @@ public function getAllowedBadgeFeatures(bool $exclude_deactivated_tickets = true
}

$query = <<<SQL
SELECT DISTINCT E.*
SELECT DISTINCT E.*
FROM SummitBadgeFeatureType E
INNER JOIN SummitAttendeeBadge_Features ON SummitAttendeeBadge_Features.SummitBadgeFeatureTypeID = E.ID
INNER JOIN SummitAttendeeBadge ON SummitAttendeeBadge.ID = SummitAttendeeBadge_Features.SummitAttendeeBadgeID
INNER JOIN SummitAttendeeTicket ON SummitAttendeeTicket.ID = SummitAttendeeBadge.TicketID
WHERE SummitAttendeeTicket.OwnerID = :owner_id
WHERE SummitAttendeeTicket.OwnerID = :owner_id
AND SummitAttendeeTicket.Status = 'Paid'
{$extra_where}
UNION
Expand Down Expand Up @@ -1615,4 +1615,4 @@ public function isTicketActive(string $ticket_number): bool
public function setLastReminderEmailSentDate(?\DateTime $last_reminder_email_sent_date): void{
$this->last_reminder_email_sent_date = $last_reminder_email_sent_date;
}
}
}
3 changes: 2 additions & 1 deletion database/seeders/ConfigSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public function run()
try {
// clear all
$em = Registry::getManager(ResourceServerEntity::EntityManager);
$em->clear();
$connection = $em->getConnection();
$connection->beginTransaction();
$statements = [
Expand All @@ -53,4 +54,4 @@ public function run()
Log::error($ex);
}
}
}
}
2 changes: 1 addition & 1 deletion routes/api_v1.php
Original file line number Diff line number Diff line change
Expand Up @@ -1346,7 +1346,7 @@

// sponsor services statistics
Route::group(['prefix' => 'sponsorservices-statistics'], function(){
Route::put('', ['uses' => 'OAuth2SummitSponsorApiController@updateSponsorServicesStatistics']);
Route::put('', ['middleware' => 'auth.user', 'uses' => 'OAuth2SummitSponsorApiController@updateSponsorServicesStatistics']);
});
});
});
Expand Down
35 changes: 21 additions & 14 deletions tests/BrowserKitTestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ abstract class BrowserKitTestCase extends BaseTestCase {
*/
protected $baseUrl = "http://localhost";

private static $seeding_done = false;

protected function setUp(): void {
parent::setUp(); // Don't forget this!
$this->redis = Redis::connection();
Expand All @@ -53,21 +55,26 @@ protected function prepareForTests(): void {
// see https://laravel.com/docs/9.x/mocking#mail-fake
Mail::fake();
Model::unguard();
// clean up
DB::setDefaultConnection("model");
Artisan::call("doctrine:migrations:migrate", ["--em" => "config", "--no-interaction" => true]);
Artisan::call("doctrine:migrations:migrate", ["--em" => "model", "--no-interaction" => true]);
if(!self::$seeding_done) {
// clean up
DB::setDefaultConnection("model");
Artisan::call("doctrine:migrations:migrate", ["--em" => "config", "--no-interaction" => true]);
Artisan::call("doctrine:migrations:migrate", ["--em" => "model", "--no-interaction" => true]);

DB::setDefaultConnection("config");

DB::delete("DELETE FROM endpoint_api_scopes");
DB::delete("DELETE FROM endpoint_api_authz_groups");
DB::delete("DELETE FROM api_scopes");
DB::delete("DELETE FROM api_endpoints");
DB::delete("DELETE FROM apis");

DB::setDefaultConnection("config");

DB::delete("DELETE FROM endpoint_api_scopes");
DB::delete("DELETE FROM endpoint_api_authz_groups");
DB::delete("DELETE FROM api_scopes");
DB::delete("DELETE FROM api_endpoints");
DB::delete("DELETE FROM apis");
$this->seed(ConfigSeeder::class);

$this->seed(ConfigSeeder::class);
$this->seed(MainDataSeeder::class);
$this->seed(SummitEmailFlowTypeSeeder::class);
$this->seed(MainDataSeeder::class);
$this->seed(SummitEmailFlowTypeSeeder::class);
self::$seeding_done = true;
}
}
}
}
58 changes: 31 additions & 27 deletions tests/OAuth2AttendeesApiTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,7 @@
**/
use App\Jobs\Emails\SummitAttendeeTicketRegenerateHashEmail;
use App\Models\Foundation\Main\IGroup;
use App\Services\Utils\Facades\EmailExcerpt;
use App\Services\utils\IEmailExcerptService;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Date;
/**
* Class OAuth2AttendeesApiTest
* @package Tests
Expand All @@ -25,21 +22,18 @@ class OAuth2AttendeesApiTest extends ProtectedApiTestCase
{
use InsertSummitTestData;

use InsertMemberTestData;

protected function setUp():void
{
$this->current_group = IGroup::TrackChairs;
parent::setUp();
self::insertMemberTestData(IGroup::TrackChairs);
self::$defaultMember = self::$member;
self::$defaultMember2 = self::$member2;
self::insertSummitTestData();
}

protected function tearDown():void
{
self::clearSummitTestData();
self::clearMemberTestData();
parent::tearDown();
}

Expand Down Expand Up @@ -132,11 +126,14 @@ public function testGetOwnAttendee(){
$this->assertTrue(!is_null($attendee));
}

public function testGetAttendeeByID($attendee_id = 1){
public function testGetAttendeeByID(){

$attendee = self::$summit->getAttendeeByMember(self::$defaultMember);
$this->assertNotNull($attendee);

$params = [
'id' => self::$summit->getId(),
'attendee_id' => $attendee_id,
'attendee_id' => $attendee->getId(),
'expand' => 'member,schedule,tickets,groups,rsvp,all_affiliations'
];

Expand Down Expand Up @@ -202,7 +199,7 @@ public function testAddAttendee(){
];

$data = [
'member_id' => self::$defaultMember->getId(),
'member_id' => self::$member2->getId(),
'tags' => ['tag#1', 'tag#2']
];

Expand Down Expand Up @@ -257,11 +254,12 @@ public function testDeleteAttendee(){
}

public function testUpdateAttendee(){
$attendee = $this->testAddAttendee(3);
$attendee = self::$summit->getAttendeeByMember(self::$defaultMember);
$this->assertNotNull($attendee);

$params = [
'id' => self::$summit->getId(),
'attendee_id' => $attendee->id
'attendee_id' => $attendee->getId()
];

$data = [
Expand Down Expand Up @@ -300,14 +298,15 @@ public function testUpdateAttendee(){
return $attendee;
}

public function testUpdateAttendeeNotesUnicode($attendee_id = 1){
$attendee = $this->testAddAttendee(3);
public function testUpdateAttendeeNotesUnicode(){
$attendee = self::$summit->getAttendeeByMember(self::$defaultMember);
$this->assertNotNull($attendee);

$admin_notes = '嘗試特殊字符';

$params = [
'id' => self::$summit->getId(),
'attendee_id' => $attendee->id,
'attendee_id' => $attendee->getId(),
'expand' => 'admin_notes'
];

Expand Down Expand Up @@ -338,20 +337,20 @@ public function testUpdateAttendeeNotesUnicode($attendee_id = 1){
$this->assertResponseStatus(201);
$attendee = json_decode($content);
$this->assertTrue(!is_null($attendee));
$this->assertEquals($attendee->admin_notes, $admin_notes);
return $attendee;
}

public function testAddAttendeeTicket(){
$attendee = $this->testAddAttendee(3);
$attendee = self::$summit->getAttendeeByMember(self::$defaultMember);
$this->assertNotNull($attendee);

$params = [
'id' => self::$summit->getId(),
'attendee_id' => $attendee->id,
'attendee_id' => $attendee->getId(),
];

$data = [
'ticket_type_id' => 50,
'ticket_type_id' => self::$default_ticket_type->getId(),
'external_order_id' => '617372932',
'external_attendee_id' => '774078887',
];
Expand Down Expand Up @@ -380,11 +379,11 @@ public function testAddAttendeeTicket(){
}

public function testDeleteAttendeeTicket(){

$attendee = self::$summit->getAttendeeByMember(self::$defaultMember);
$params = [
'id' => self::$summit->getId(),
'attendee_id' => 12642,
'ticket_id' => 14161
'attendee_id' => $attendee->getId(),
'ticket_id' => $attendee->getTickets()->first()->getId()
];

$headers = [
Expand All @@ -406,11 +405,16 @@ public function testDeleteAttendeeTicket(){
}

public function testReassignAttendeeTicket(){
$attendee = self::$summit->getAttendeeByMember(self::$defaultMember);
$this->assertNotNull($attendee);
$params = [
'id' => self::$summit->getId(),
'attendee_id' => 14938,
'ticket_id' => 15070,
'other_member_id' => 13867,
'attendee_id' => $attendee->getId(),
'ticket_id' => $attendee->getTickets()->first()->getId(),
];

$data = [
'attendee_email' => self::$member2->getEmail(),
];

$headers = [
Expand All @@ -426,7 +430,7 @@ public function testReassignAttendeeTicket(){
[],
[],
$headers,
''
json_encode($data)
);

$content = $response->getContent();
Expand Down Expand Up @@ -603,4 +607,4 @@ public function testCurrentSummitMyAttendeeScheduleUnset()
$this->assertResponseStatus(204);
}

}
}
34 changes: 26 additions & 8 deletions tests/OAuth2BookableRoomAttributeTypesApiTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,27 @@
*/
final class OAuth2BookableRoomAttributeTypesApiTest extends ProtectedApiTestCase
{
public function testGetBookableAttributeTypesBySummit($summit_id = 27){
use InsertSummitTestData;

protected function setUp():void
{
parent::setUp();
self::$defaultMember = self::$member;
self::insertSummitTestData();
}

protected function tearDown():void
{
self::clearSummitTestData();
parent::tearDown();
}

public function testGetBookableAttributeTypesBySummit(){
// create one first so the list is non-empty
$this->testAddAttributeType();

$params = [
'id' => $summit_id,
'id' => self::$summit->getId(),
'page' => 1 ,
'per_page' => 10,
'expand' => 'values'
Expand All @@ -45,9 +63,9 @@ public function testGetBookableAttributeTypesBySummit($summit_id = 27){
}


public function testAddAttributeType($summit_id = 27){
public function testAddAttributeType(){
$params = [
'id' => $summit_id,
'id' => self::$summit->getId(),
];

$type = str_random(16).'_attribute_type';
Expand Down Expand Up @@ -79,10 +97,10 @@ public function testAddAttributeType($summit_id = 27){
return $attribute_type;
}

public function testAddAttributeValue($summit_id = 27){
$type = $this->testAddAttributeType($summit_id);
public function testAddAttributeValue(){
$type = $this->testAddAttributeType();
$params = [
'id' => $summit_id,
'id' => self::$summit->getId(),
'type_id' => $type->id,
];

Expand Down Expand Up @@ -114,4 +132,4 @@ public function testAddAttributeValue($summit_id = 27){
$this->assertTrue(!is_null($attribute_value));
return $attribute_value;
}
}
}
Loading