2017 © Pedro Peláez
 

library timemachine

Laravel/Lumen application-level time setter for testing

image

appkr/timemachine

Laravel/Lumen application-level time setter for testing

  • Tuesday, July 4, 2017
  • by appkr
  • Repository
  • 1 Watchers
  • 2 Stars
  • 12 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 4 Versions
  • 33 % Grown

The README.md

Latest Stable Version Total Downloads Latest Unstable Version License, (*1)

Timemachine

Manipulates application(Laravel/Lumen) server's time arbitrarily for a given minutes., (*2)

CAVEAT, (*3)

USE THIS ONLY FOR TEST PURPOSE. DO NOT MAKE THIS AVAILABLE IN PUBLICLY ACCESSIBLE SERVICES., (*4)

  • Provided apis are not protected by authz.
  • While setting is alive, it affects all time related functions of the application. e.g. created_at written in the DB tables.

1. Install

Pull the library to your project., (*5)

composer install appkr/timemachine 

Append service provider in the providers array., (*6)

<?php // config/app.php (Laravel)

return [
    'providers' => [
        Appkr\Timemachine\TimemachineServiceProvider::class,
    ],
];

// boostrap/app.php (Lumen)
$app->register(Appkr\Timemachine\TimemachineServiceProvider::class);

Optionally publish config., (*7)

php artisan vendor:publish --provider="Appkr\Timemachine\TimemachineServiceProvider"

2. How to use

There are three APIs. For conveniences, a Postman collection is provided., (*8)

2.1. GET /timemachine

Returns time diff from current server time when target_server_time parameter is given. Or print current server time when nothing is given., (*9)

GET /timemachine
Accept: application/json
Content-Type: application/json
field type required description
target_server_time date(Y-m-d H:i:s) optional e.g. 2017-06-01 12:05:00
HTTP/1.1 200 OK
Content-Type: application/json
Date: Thu, 01 Jun 2017 12:00:00 +0900

{
  "current_server_time": "2017-06-01T12:00:00+0900",
  "target_server_time": "2017-06-01T12:05:00+0900",
  "add_days": 0,
  "add_minutes": 5,
  "sub_days": null,
  "sub_minutes": null
}

2.2. PUT /timemachine

Manipulates server's time for the given ttl., (*10)

PUT /timemachine
Accept: application/json
Content-Type: application/json

{
    "add_minutes": 5,
    "ttl": 5
}
field type required description
add_days int optional(max:365) Number of days to add to current time
sub_days int optional(max:365) Number of days to subtract from current time
add_minutes int optional(max:1440) Number of minutes to add to current time
sub_minutes int optional(max:1440) Number of minutes to subtract from current time
ttl int optional(default:5, max:60) Number of minutes for settings to live
HTTP/1.1 200 OK
Content-Type: application/json
Date: Thu, 01 Jun 2017 12:00:00 +0900

{
  "current_server_time": "2017-06-01T12:00:00+0900",
  "message": "Success. The settings will be effective from next request on for 5 minutes."
}

2.3. DELETE /timemachine

Removes time setting and restore back to the machine time., (*11)

DELETE /timemachine
Accept: application/json
Content-Type: application/json
HTTP/1.1 200 OK
Content-Type: application/json
Date: Thu, 01 Jun 2017 12:00:00 +0900

{
  "current_server_time": "2017-06-01T12:00:00+0900",
  "message": "Success. Settings removed."
}

3. Sponsors

This library is a by-product of a company project. Thanks MeshKorea., (*12)

MeshKorea, (*13)

Open source version was created using IntelliJ IDE sponsored by JetBrains., (*14)

JetBrains, (*15)

4. Note on HTTP Date response header

In Nginx, Date header can be settable from application side. So the following was possible:, (*16)

<?php

header('Date: ' . Carbon\Carbon::now()->addMinutes(5)->toRfc2822String());
echo $httpResponseBody;

While in Apache, it is not doable. https://laracasts.com/discuss/channels/servers/how-can-i-override-http-date-response-header-under-apache24, (*17)

The Versions

04/07 2017

dev-master

9999999-dev

Laravel/Lumen application-level time setter for testing

  Sources   Download

MIT

The Requires

 

The Development Requires

by Avatar appkr

04/07 2017

v0.3.0

0.3.0.0

Laravel/Lumen application-level time setter for testing

  Sources   Download

MIT

The Requires

 

The Development Requires

by Avatar appkr

03/06 2017

v0.2.0

0.2.0.0

Laravel/Lumen application-level time setter for testing

  Sources   Download

MIT

The Requires

 

The Development Requires

by Avatar appkr

02/06 2017

v0.1.0

0.1.0.0

Laravel/Lumen application-level time setter for testing

  Sources   Download

MIT

The Requires

 

The Development Requires

by Avatar appkr