File: /home/xedaptot/be.naniguide.com/tests/headless/subscriber-service-fixture.php
<?php
require __DIR__ . '/../../vendor/autoload.php';
$app = require __DIR__ . '/../../bootstrap/app.php';
$app->instance('request', Illuminate\Http\Request::create('/'));
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
$kernel->bootstrap();
use App\Model\Contact;
use App\Model\Customer;
use App\Model\Form;
use App\Model\MailList;
use App\Model\MailListTemplate;
use App\Model\Role;
use App\Model\Subscriber;
use App\Model\Template;
use App\Model\User;
use App\Services\SubscriberService;
config([
'sharding.enabled' => false,
'app.url' => rtrim(env('BASE_URL', config('app.url')), '/'),
]);
$prefix = 'hss' . substr(uniqid(), -6);
$contact = Contact::forceCreate([
'uid' => "{$prefix}_contact",
'first_name' => 'Headless',
'last_name' => 'Subscriber',
'email' => "{$prefix}@example.test",
]);
$customer = Customer::forceCreate([
'uid' => "{$prefix}_customer",
'contact_id' => $contact->id,
'status' => 'active',
'timezone' => 'UTC',
]);
$user = User::forceCreate([
'email' => "{$prefix}[email protected]",
'password' => bcrypt('123456'),
'status' => User::STATUS_ACTIVE,
'activated' => true,
'first_name' => 'Headless',
'last_name' => 'Operator',
'customer_id' => $customer->id,
]);
$role = Role::getDefaultAdminRole();
if ($role) {
$user->setRole($role);
}
$list = MailList::forceCreate([
'uid' => "{$prefix}_list",
'name' => 'Headless Subscriber Service List',
'customer_id' => $customer->id,
'from_email' => '[email protected]',
'from_name' => 'Sender',
'subscribe_confirmation' => false,
]);
$signUpTemplate = Template::forceCreate([
'uid' => "{$prefix}_tpl_signup",
'name' => 'Headless Sign Up Form',
'content' => '<html><body><label>Email<input type="email" name="EMAIL" /></label><button type="submit">Subscribe</button></body></html>',
'json' => \App\Model\Template::DEFAULT_BUILDER_JSON,
]);
MailListTemplate::forceCreate([
'uid' => "{$prefix}_mltpl_signup",
'mail_list_id' => $list->id,
'customer_id' => $customer->id,
'template_id' => $signUpTemplate->id,
'alias' => 'sign_up_form',
]);
$thankYouTemplate = Template::forceCreate([
'uid' => "{$prefix}_tpl_thanks",
'name' => 'Headless Thank You',
'content' => '<html><body><p>Thanks for confirming.</p></body></html>',
'json' => \App\Model\Template::DEFAULT_BUILDER_JSON,
]);
MailListTemplate::forceCreate([
'uid' => "{$prefix}_mltpl_thanks",
'mail_list_id' => $list->id,
'customer_id' => $customer->id,
'template_id' => $thankYouTemplate->id,
'alias' => 'sign_up_thankyou_page',
]);
$confirmationPageTemplate = Template::forceCreate([
'uid' => "{$prefix}_tpl_confirm_page",
'name' => 'Headless Check Inbox',
'content' => '<html><body><p>Please check your inbox.</p></body></html>',
'json' => \App\Model\Template::DEFAULT_BUILDER_JSON,
]);
MailListTemplate::forceCreate([
'uid' => "{$prefix}_mltpl_confirm_page",
'mail_list_id' => $list->id,
'customer_id' => $customer->id,
'template_id' => $confirmationPageTemplate->id,
'alias' => 'sign_up_confirmation_page',
]);
$popupTemplate = Template::forceCreate([
'uid' => "{$prefix}_tpl_popup",
'name' => 'Headless Popup Form',
'content' => '<div builder-wrapper><label>Email<input type="email" name="EMAIL" /></label><button type="submit">Join popup</button></div><message-section style="display:none"><p>Done</p></message-section>',
'json' => \App\Model\Template::DEFAULT_BUILDER_JSON,
]);
$form = Form::forceCreate([
'uid' => "{$prefix}_form",
'name' => 'Headless Popup Form',
'status' => Form::STATUS_PUBLISHED,
'customer_id' => $customer->id,
'mail_list_id' => $list->id,
'template_id' => $popupTemplate->id,
'metadata' => json_encode([
'display' => 'immediately',
'overlay_opacity' => 20,
]),
]);
$unconfirmedSubscriber = Subscriber::forceCreate([
'uid' => "{$prefix}_subscriber_confirm",
'email' => "{$prefix}[email protected]",
'status' => Subscriber::STATUS_UNCONFIRMED,
'mail_list_id' => $list->id,
]);
$subscriberService = app(SubscriberService::class);
$signedConfirmUrl = $subscriberService->generateSignedConfirmationUrl($unconfirmedSubscriber);
echo json_encode([
'prefix' => $prefix,
'customer_uid' => $customer->uid,
'list_uid' => $list->uid,
'form_uid' => $form->uid,
'customer_user_autologin_path' => "/autologin/{$user->api_token}",
'add_by_customer_create_path' => "/lists/{$list->uid}/subscribers/create",
'add_by_customer_index_path' => "/lists/{$list->uid}/subscribers",
'sign_up_path' => "/frontend/lists/{$list->uid}/{$customer->uid}/sign-up",
'embedded_subscribe_path' => "/lists/{$list->uid}/{$customer->uid}/embedded-form-subscribe",
'popup_content_path' => "/frontend/forms/{$form->uid}/content",
'popup_save_path' => "/frontend/forms/{$form->uid}/save",
'signed_confirm_url' => $signedConfirmUrl,
'tampered_confirm_url' => $signedConfirmUrl . '&tampered=1',
]);