App-Dochazka-REST
view release on metacpan or search on metacpan
0.163 2014-08-27 17:42 CEST
- Dispatch/Employee.pm->_put_employee: allow undef as value for optional fields
('fullname', 'email', 'passhash', 'salt', 'remark')
- Model/Employee.pm->expurgate: when expurgating employee objects, do not
remove 'passhash' and 'salt' properties
0.164 2014-08-28 11:26 CEST
- Model/Shared.pm: do not put empty strings into the database
0.165 2014-09-01 07:51 CEST
- Unicode hell
- add more debug messages
0.166 2014-09-01 16:40 CEST
- Resource.pm: Unicode hell! /employee/nick/ÄÃÄa is handled correctly when
sent by browser, but incorrectly when sent via App::Dochazka::WWW - yet
the path_info string is decoded correctly in 'service_available' in both
cases! Very strange.
0.167 2014-09-04 17:34 CEST
- respect DOCHAZKA_REST_LOG_FILE and DOCHAZKA_REST_LOG_FILE_REST core/site
config parameters (as is already the case in App::Dochazka::WWW) - no
more chasing temporary files
0.168 2014-09-04 17:41 CEST
- t/: change default configuration directory (for unit testing purposes) from
'/etc/dochazka' to '/etc/dochazka-rest', as the former is ambiguous
0.169 2014-09-17 09:59 CEST
- REST.pm: modify INSTALLATION section of POD to bring it closer to current
reality
0.170 2014-09-17 10:30 CEST
- REST.pm: add some debug messages
0.171 2014-09-17 10:51 CEST
- REST.pm: fix bug 'Can't call method "errstr" on an undefined value' when
connect_db_pristine can't connect to database; remove debug messages
0.172 2014-09-17 11:13 CEST
- t/001-init.t: bail out of testing if we cannot connect to database
0.173 2014-09-17 14:28 CEST
- REST.pm: expand INSTALLATION section of POD with explanation of how to test database
connection using 'psql'
0.174 2014-09-24 16:38 CEST
- try to fix UTF-8 bug, but only make it worse
0.175 2014-09-25 09:29 CEST
- Resource.pm: encode response body in UTF-8 before sending it out on the line
0.176 2014-10-14 17:31 CEST
- Dispatch/: add some comments
- Resource.pm: add debug message; add allow_nonref; find bug #57
0.177 2014-10-15 10:33 CEST
- start revamping path dispatch code in light of bug #57 (PUT request to
non-existent resource returns HTTP code 200 and null entity body)
- realize that it makes no sense to return 404 on a PUT request, since the
whole idea of PUT is to create a new resource
- the principal change is in Resource.pm->allowed_methods:
- the definition of each resource (in config/dispatch) should contain list of allowed methods
- when path is recognized, return the allowed methods from the resource definition
- when the path is not recognized _AND_ the method is PUT, return 405 Method Not Allowed
0.178 2014-10-15 16:41 CEST
- the design change in 0.177 caused a lot of breakage: put the pieces back together (WIP)
0.179 2014-10-15 22:54 CEST
- Build.PL: require App::CELL 0.197 (for 'get_param')
- continue fixing brokenness following the design change in 0.177
0.180 2014-10-16 08:40 CEST
- massage Changes file
- config/dispatch: make 'help' resources for all four HTTP methods we support
(GET, POST, PUT, DELETE)
- t/: fix or disable all broken tests - test suite running clean again, but
many tests are missing
0.181 2014-10-16 10:35 CEST
- make 'employee/nick' and 'employee/eid' be POST requests (instead of PUT) -
we will reserve PUT for unique resources like 'employee/nick/joedavis'
0.182 2014-10-16 10:56 CEST
- Dispatch.pm: add POD for "" and "help" resources
0.183 2014-10-16 11:12 CEST
- LDAP.pm: use EXPORT_OK instead of EXPORT
- Resource.pm: import routines from LDAP.pm explicitly
0.184 2014-10-16 12:59 CEST
- Resource.pm: implement basic handling of DELETE requests
0.185 2014-10-16 13:37 CEST
- t/: tweak naming scheme for dispatch unit test files; add unit test files
for DELETE method
- config/dispatch/dispatch_Top_Config.pm: add target for DELETE on 'echo'
resource
0.186 2014-10-16 16:44 CEST
- Dispatch/, t/: work on dispatch-related POD, unit tests
0.187 2014-10-16 17:53 CEST
- t/: more dispatch tests
0.188 2014-10-16 22:46 CEST
- t/: add a bunch of tests; refine siteparam and metaparam tests; find
App::CELL bug ($meta can be used to access site parameters)
0.189 2014-10-17 11:10 CEST
- Resource.pm: provide hash to keys, instead of hash reference
0.190 2014-10-17 17:48 CEST
- Build.PL: require latest App::CELL to avoid bug
- implement 'bugreport' resource
- implement PUT method for 'metaparam/:param' resource
- Dispatch.pm: add POD for more resources
- t/310-dispatch-top-get.t: add test case for 'bugreport' resource
- t/312-dispatch-top-put.t: add test case "set meta parameter via REST
call"
0.191 2014-10-20 16:53 CEST
- Hackweek Day 1
- Build.PL: depend on latest version of App::Dochazka
- config/dispatch/dispatch_Employee_Config.pm: use refactored employee
targets
- config/sql/employee_Config.pm: do not include 'priv' and 'schedule' in
employee objects
- Dispatch/Employee.pm: refactor employee PUT and POST targets
- Model/Employee.pm: add 'overlay' method
- Resource.pm: instead of having 'priv' property directly in the current
employee hash, we make a separate 'current_priv' property for it;
push the HTTP method onto the context hash ASAP (in service_available)
- t/316-dispatch-employee-post.t: add some "real" tests involving inserting
and update employee objects
- t/317-dispatch-employee-put.t: fix broken tests
0.192 2014-10-20 22:15 CEST
- dispatch/dispatch_Employee_Config.pm: resources into alphabetical order; add
'employee/current/priv' resource
- dispatch/dispatch_Message_en.conf, Dispatch/Employee.pm: add
'employee/current/priv' resource
- Model/Shared.pm: add some log messages in course of debugging a problem with
App::Dochazka::CLI
0.193 2014-10-21 08:35 CEST
- t/: fix accumulated brokenness in data model tests
- t/315-dispatch-employee-get.t: clean up comments and add a test case
0.194 2014-10-21 09:21 CEST
- Resource.pm: if method is GET and result is "No records found", return
404 instead of 200 + status object
- t/: adapt tests to this change
0.195 2014-10-21 10:51 CEST
- Model/Employee.pm->noof_employees_by_priv: if $priv is not a valid
privlevel, return 'OK' status + status code DISPATCH_NO_RECORDS_FOUND
to trigger a 404 Not Found response; also, put 'count' property in the
payload where it belongs
- t/315-dispatch-employee-get.t: adapt existing test case
0.196 2014-10-21 11:38 CEST
- config/dispatch_Top_Config.pm: make "echo" work with POST only; put
resources in alphabetical order
- t/: remove 'echo' tests from top-level PUT and DELETE units
0.197 2014-10-21 11:47 CEST
- work on development-checklist
- t/: standardize method order (GET, PUT, POST, DELETE); adapt units
0.198 2014-10-21 12:10 CEST
- Dispatch.pm: document all target subroutines; put into alphabetical order
by resource name/path
0.199 2014-10-21 16:31 CEST
- Hackweek Day 2
- dispatch_Message_en.conf: add DISPATCH_RESOURCE_NOT_IMPLEMENTED
- dispatch_Top_Config.pm: implement 'not_implemented' resource
- Dispatch.pm: implement 'not_implemented' resource, alphabetical order
tweak
- t/: add missing top-level dispatch tests
- new ../development-checklist chart to clarify and streamline
resource-implementation workflow
0.200 2014-10-21 22:29 CEST
- ../development-checklist: finish implementing top-level resources
- Dispatch.pm: when getting site and meta params, show file and line
number along with other metadata; tweak resource documentation
- t/: some tests failing due to bug in App::CELL::Config->get_param_meta
0.201 2014-10-22 08:30 CEST
- Build.PL: require App::CELL 0.200 for bug fix
- t/: adjust two tests now that PUT metaparam/:param and PUT siteparam/:param
are assigning the request body to the parameter directly
0.202 2014-10-22 16:47 CEST
- Hackweek Day 3
- lots of refinements to (plus documentation and test cases for) employee
resources
- implement DELETE support for employee resources
- eliminate problematic "short-cut" 'employee/:nick' and 'employee/:eid'
resources
- make it possible to update an employee property to null
- eliminate problematic 'overlay' method in Model/Employee.pm
- improve debug message in Resource.pm
- add negative and otherwise pathological test cases
0.203 2014-10-22 17:15 CEST
- t/317-dispatch-employee-post.t: got tests running again
0.204 2014-10-23 10:57 CEST
- t/: figure out how to run tests using 'prove -r'; make a 't/dispatch/'
directory for dispatch tests; merge all top-level dispatch tests into a
single file 't/dispatch/top.t'
0.205 2014-10-23 14:02 CEST
- Hackweek Day 4
- Build.PL: make Module::Build walk t/ directory recursively
DISPATCH_SCHEDULE_INSERT_OK, DISPATCH_SCHEDULE_NO_UPDATE
- Dispatch/Schedule.pm: add _intervals_post and _intervals_delete dispatch
targets
- move 'expurgate' logic to Model/Shared.pm and implement a wrapper method
in each model module
- Model/Schedintvls.pm: fix 'insert' method so it returns a sensible status
payload
- Test.pm: in docu_check, run 'payload' tests only if there is a payload;
add as-yet untested 'create_testing_schedule' and 'delete_testing_schedule'
routines
- t/: add new 'intervals.t' unit; adapt existing units to current state
0.246 2014-11-04 21:08 CET
- stabilization after the last commit
- t/dispatch/intervals.t: add some tests called for by development workflow
0.247 2014-11-04 22:21 CET
- add 'DISPATCH_SCHEDULE_EXISTS' message
- add 'schedule/all' and 'schedule/all/disabled' resource definitions
- add 'disabled' field to 'schedules' table
- Dispatch/Schedule.pm: when schedule already exists, return
'DISPATCH_SCHEDULE_OK'
- t/dispatch/intervals.t: test for 'DISPATCH_SCHEDULE_OK' when inserting the
same schedule a second time
0.248 2014-11-05 11:05 CET
- Build.PL: require App::Dochazka 0.176 to ensure Schedule objects have a
'disabled' property
- config/dispatch/schedule_Config.pm: activate 'schedule/all' and
'schedule/all/disabled' resources
- config/sql/schedule_Config.pm: add 'disabled' field to SQL statements;
add two new SQL statements to get all schedule records
- Dispatch/Schedule.pm: import 'get_all_schedules' and
'get_all_schedules_including_disabled' routines
- Model/Schedule.pm: implement 'get_all_schedules' and
'get_all_schedules_including_disabled' routines
0.249 2014-11-05 12:18 CET
- give 'schedule/all/...' dispatch targets more sensible names
- enable POST on 'schedule/intervals/:sid', including documentation
- t/dispatch/schedule.t: add 405 tests for 'schedule/all/...'
0.250 2014-11-05 17:54 CET
- Build.PL: require App::Dochazka 0.177 for TO_JSON method; require
App::CELL 0.201 to get rid of Data::Structure::Util
- Resource.pm: get rid of wacky debug code; add 'convert_blessed' to our
JSON 'encode' method call now that we have TO_JSON methods in all models;
this obviates the need to call 'unblessed'
- Data::Structure::Util does not work with perl 5.20, so it needs to go;
remove all mentions of it; fix resulting brokenness
- Util.pm: get rid of jury-rigged 'deep_copy' routine (use Storable::dclone
instead!)
0.251 2014-11-06 09:42 CET
- Dispatch/Schedule.pm->_intervals_delete was reporting success even when
nothing was actually deleted - fixed
- Model/Schedule.pm->schedule_all was crashing when no records found (because
$counter was not initialized) - fixed
- t/104-employee.t: deprecate expurgate in favor of TO_JSON
- t/dispatch/intervals.t: when no schedule records are in the database,
'schedule/all/...' will return 404 - fixed
- t/dispatch/schedule.t: add basic tests for 'schedule/all' and
'schedule/all/disabled'
0.252 2014-11-06 16:43 CET
- Build.PL: require App::Dochazka 0.181 for new boilerplate code
- schedule_Config.pm: rename '/schedule/intervals/:sid' to
'/schedule/sid/:sid'
- dbinit_Config.pm: add a trigger to make immutable/unupdatable the 'schedule'
field of the 'shedules' table
- add a 'SQL_SCHEDULE_UPDATE' statement to support updates on the
'schedules' table
- replace calls to 'expurgate' method with 'TO_JSON'
- Dispatch/Schedule.pm: implement _intervals_get and _schedule_post dispatch
targets and '_update_schedule' routine adapted from Employee.pm
- Model/Shedule.pm: override the boilerplate 'compare' method for this
model because the 'disabled' field needs special handling; implement
an 'update' method
- Resource.pm: fix a debug message
- t/107-schedule.t: add test case for 'update' method
- t/dispatch/intervals.t: add GET test case for '/schedule/sid/:sid' resource
0.253 2014-11-07 14:33 CET
- Test.pm: make a new 'req' routine that to replace the current rag-tag
collection of kludgey routines for generating HTTP requests against the
Plack::Test object
- t/dispatch/intervals.t: add 'POST schedule/sid/:sid' test cases; migrate the
entire unit to the new 'req' routine
- t/: move model tests into their own subdirectory and comment out 'skip_all'
so they run
- Model/: remove 'expurgate' method from all model modules (replaced by TO_JSON);
remove 'compare' method overlay (replaced by compare_disabled)
- t/model/activity.t: adapt tests, remove deprecated tests, add new tests
0.254 2014-11-07 16:19 CET
- t/dispatch/activity.t: migrate to new 'req' function
0.255 2014-11-07 22:12 CET
- t/dispatch/employee.t: strenuously migrate to the new 'req' routine
0.256 2014-11-08 20:30 CET
- t/dispatch/priv.t: migrate another unit to 'req'
0.257 2014-11-08 21:35 CET
- t/dispatch/schedule.t: migrate unit to 'req'
0.258 2014-11-09 09:10 CET
- t/dispatch/top.t: migrate unit to 'req'
- Test.pm: deprecate and eliminate kludgey testing routines (replaced by 'req')
0.259 2014-11-10 08:54 CET
- Model/Shared.pm: finally get up the courage to return 'NOTICE' status level
instead of 'OK' when SELECT statements return no records - this makes
"nothing found" easy to distinguish from "something found", while keeping "ERR"
reserved for DBI errors; add 'make_test_exists' to generate 'nick_exists',
'eid_exists', etc. etc. (to be used in all model modules)
- Dispatch/Activity.pm: adapt to above change
- Model/Employee.pm: revamp nick_exists and eid_exists (generalize these routines
and generate them at runtime for code re-use)
- Resource.pm: adapt to above change
- t/dispatch/activity.t: cleanup
0.281 2014-11-14 16:42 CET
- finish implementation (including test cases) of POST dispatch
target for 'employee/{current,self}' resource
0.282 2014-11-14 21:36 CET
- dbinit_Config.pm: add trigger clause to make 'sid' field immutable
- Docs/Workflow.pm: add verbiage
- t/model/schedule.t: add test case verifying that 'update' method does not
change the database even if the 'sid' field is changed
0.283 2014-11-18 07:45 CET
- REST_Message_en.conf: add finer-grained notice messages for 'cud'
- Model/Shared.pm: in cud, check return value of '$sth->execute' and
return finer-grained notices to distinguish various edge cases
- t/: adapt to current state
0.284 2014-11-18 11:01 CET
- unit tests: move existing '002-root' and '003-current-priv' units to
new t/sql directory; add new 't/sql/immutable_id.t' unit to test
new triggers to make 'eid', 'iid', etc. fields immutable
- config/sql/dbinit_Config.pm: add "immutability" triggers for 'employees.eid',
'schedhistory.shid' and 'privhistory.phid'
0.285 2014-11-18 11:53 CET
- dbinit_Config.pm, t/sql/immutable_id.t: finish making '*id' fields immutable
0.286 2014-11-18 12:49 CET
- dispatch_Config.pm, interval_Config.pm: add basic set of 'intervals'
resources
0.287 2014-11-18 15:33 CET
- config/dispatch/HTTP_Message_en.conf: make a separate message file for codes
that map directly to an HTTP error code
- config/, lib/: transform DOCHAZKA_BAD_INPUT and DOCHAZKA_INSUFFICENT_PRIV into
special status codes that map directly to HTTP error codes
- Resource.pm: when target returns certain status codes (see package variable
%status_http_map), translate them directly into HTTP error codes
- t/: adapt to current state
0.288 2014-11-19 10:05 CET
- Dispatch/Lock.pm: lay groundwork for locks
- t/dispatch/interval.t: new tests
- interval_Config.pm, dispatch_Message_en.conf: minor fixes
- Dispatch/Interval.pm: add special ACL handling
- Model/Interval.pm: fix bug (wrong order of properties in call to 'cud')
- Test.pm: let 'req' handle any user as long as "passhash" property is
set the same as "nick"
0.289 2014-11-19 11:08 CET
- interval_Config.pm: make not-implemented resources use 'not_implemented'
dispatch target
- t/dispatch/interval.pm: add some missing boilerplate tests
0.290 2014-11-19 11:23 CET
- interval_Config.pm: 'interval/nick/:nick/:tsrange' resource was broken due to
missing EOH - fixed
- t/dispatch/interval.t: $base for 'interval/nick/:nick/:tsrange' resource was
set to wrong value - fixed
0.291 2014-11-19 15:19 CET
- HTTP_Message_en.conf, Resources.pm: add 404 status trigger
- interval_Config.pm: call the hypothetical error code DISPATCH_TOO_MANY_RECORDS_FOUND
- top_Config.pm: fix factual error in documentation
- dispatch_Message_en.conf: add DISPATCH_TOO_MANY_RECORDS_FOUND definition
- Dispatch/Shared.pm->history: trigger 404 when no records found
- Model/Employee.pm: return DISPATCH_NO_RECORDS_FOUND with status level 'NOTICE'
- t/dispatch/history.t: explore more possibilities for entering an invalid EID;
adapt to current state (status-triggered 404 errors)
- t/dispatch/interval.t: add basic tests for 'interval/self/:tsrange'
0.292 2014-11-19 16:40 CET
- dispatch/interval_Config.pm: enable _fetch_* dispatch targets
- sql/interval_Config.pm: add SQL_INTERVAL_SELECT_BY_EID_AND_TSRANGE
- Dispatch/Interval.pm: implement _fetch_* dispatch targets
- Model/Interval.pm: implement a fetch_by_eid_and_tsrange function
- Model/Shared.pm: load_multiple had no provision for binding parameters -
fixed
- t/dispatch/interval.t: add some basic tests for
'/interval/eid/:eid/:tsrange', 'interval/nick/:nick/:tsrange' and
'/interval/self/:tsrange'
0.293 2014-11-19 18:05 CET
- Dispatch/Interval.pm: let _new set EID to that of current user
if no EID specified in request body
- t/dispatch/interval.t: add tests under 'interval/new' resource
0.294 2014-11-19 22:59 CET
- Dispatch.pm: adapt _docu* dispatch targets so they expect to receive argument
in 'resource' property
- Dispatch/Interval.pm: pass argument with DISPATCH_PARAMETER_BAD_OR_MISSING to
report which property is missing
- Resource.pm: only that JSON is not malformed that converts into a hashref
- Test.pm: adapt to current state
- t/dispatch/intervals.t: add two tests under 'interval/new'
0.295 2014-11-20 11:50 CET
- rename resource 'schedule/interval' to 'schedule/new'
- Resource.pm: no longer accept content bodies that do not convert cleanly into
a hashref - this required some minor retooling of the following resources that
had been accepting bare scalars or JSON arrays:
- 'docu' and 'docu/html'
- 'metaparam' and 'siteparam'
- 'schedule/new'
- Dispatch.pm->_param_post now saves the pre-change value and attempts to
restore it if the new value is not set properly
- t/: adapt to current state
0.296 2014-11-20 14:01 CET
- split 'metaparam' / 'metaparam/:param'
0.297 2014-11-20 18:21 CET
- config/dispatch/lock_Config.pm: add lock resource definitions
(very similar to interval_Config.pm)
- dispatch/interval_Config.pm: adapt to generalized dispatch targets
- dispatch_Config.pm: enable lock resources
- sql/lock_Config.pm: add missing SQL statements
- Dispatch/: remove bogus "use App::Dochazka::REST::Dispatch::ACL qw( check_acl);"
line from all dispatch modules
- Dispatch/ACL.pm: add 'check_acl_context' routine (shared between interval
and lock dispatch targets)
- Dispatch/{Interval,Shared}.pm: generalize most of the dispatch targets
- Dispatch/Lock.pm: get it ready for business
- Model/Lock.pm: add missing fetch_by_eid_and_tsrange routine
- t/dispatch/: rename 'interval.t' to 'interval_lock.t' and start running
each resource's tests in a foreach loop so the same tests are run for
'interval/..' and 'lock/..' counterparts
0.298 2014-11-20 21:51 CET
- t/sql/: cleanup
- t/sql/schedintvl.t: new tests for intvl triggers
0.309 2014-11-27 17:09 CET
- dbinit_Config.pm: have 'schedule_at_timestamp' return NULL instead of {} when
there is no schedule in effect
- Model/Shared.pm: make decode_schedule_json handle the above NULL value
- t/: fix all the tests that were expecting {} but now get undef instead
0.310 2014-11-27 22:04 CET
- dbinit_Config.pm: add 'schedule_policy' trigger function to prevent users
from introducing intervals in time periods when the employee has no or
ambiguous scheduling
- t/dispatch/interval_lock.t: adapt to the above trigger (ensure testing user
has a schedule and the schedule is in effect)
- t/: disable a bunch of tests broken by introduction of this trigger
0.311 2014-11-27 23:04 CET
- dbinit_Config.pm: expand no_lock_conflict to handle DELETE as well as INSERT/UPDATE
- t/model/{interval,lock}.t: adapt to current state
- t/model/lock.t: add test confirming that it is no longer possible to delete a
locked interval
0.312 2014-11-28 11:27 CET
- t/dispatch/interval_lock.t: add some tests simulating: (1) create interval,
(2) lock it, (3) attempt to update it - interval is locked, (4) attempt to
delete it - interval is locked
- dbinit_Config.pm: add another trigger and run into problems because I didn't realize PostgreSQL
executes triggers in alphabetical order
0.313 2014-11-28 12:20 CET
- dbinit_Config.pm: rename triggers so "alphabetical order" is aligned with
"order of intended execution"
- Dispatch/{Interval,Lock,Shared}.pm: since all sanity checks will be
implemented via triggers, the sanity stuff we put here before is unnecessary,
so delete it
- t/dispatch/interval_lock.t: we are no longer returning 400 when intervals
are malformed or non-compliant
- t/model/interval.t: now that we have enabled the 'priv_policy' trigger, make
sure the testing user has a proper privhistory before attempting to add
intervals in his name
- t/model/: both interval.t and lock.t required the same setup/teardown code,
so move the lock tests to interval.t and get rid of lock.t
0.314 2014-11-28 15:23 CET
- rename t/model/interval.t -> t/model/interval_lock.t
- dbinit_Config.pm: add 'history_policy' trigger function to ensure that
privhistory/schedhistory records are not entered if they conflict with an
existing interval
- t/model/interval_lock.t: add minimal tests for the 'history_policy' trigger
0.315 2014-11-28 16:23 CET
- got Path::Router validations to work!!!
- config/dispatch/activity_Config.pm: added validations clauses
- config/dispatch/employee_Config.pm: added validations clauses
- config/dispatch_Message_en.conf: delete DISPATCH_AID_DOES_NOT_EXIST and
DISPATCH_CODE_DOES_NOT_EXIST
- dbinit_Config.pm: change 'kosher_code' constraint on 'activities' table to
match the validations clause
- Dispatch/Activity.pm: noticed that we were still returning custom codes (e.g.
DISPATCH_AID_DOES_NOT_EXIST) instead of a simple 404 (405 on PUT) -- fixed
- t/dispatch/activity.t: fix tests broken by the above changes
0.316 2014-11-28 16:48 CET
- dispatch/employee_Config.pm: add validations clause to the
'employee/count/:priv' resource definition
- Dispatch/Employee.pm: handle upper/mixed case priv strings gracefully
- Model/Employee.pm: noof_employees_by_priv was written long ago - update it to
use best practices
- t/dispatch/employee.t: add 'employee/count/:priv' test cases
0.317 2014-11-28 17:26 CET
- dispatch/employee_Config.pm: add validations clause to 'employee/nick/:nick'
resource definition
- sql/dbinit_Config.pm: change 'kosher_nick' constraint to match the above
validations clause
- t/dispatch/: add some more tests demonstrating invalid codes caught
by the new validations clauses
0.318 2014-11-28 18:12 CET
- Build.PL: require latest version of App::CELL
- dispatch/{interval,lock}_Config.pm: add validations clause
- dispatch/top_Config.pm: added missing 'interval' and 'lock' top-level
resource definitions
- t/dispatch/interval_lock.t: add some test cases for the above validations
clause
0.319 2014-11-28 18:30 CET
- dispatch/{interval,lock}_Config.pm: add validations clauses
- t/dispatch/interval_lock.t: adapt existing tests to new validations clauses;
add new tests to demonstrate the new validations clauses; one resource
(lock/nick/:nick/:tsrange) was completely missing - added it
0.320 2014-11-28 19:33 CET
- config/dispatch/: add remaining validations clauses
- t/: adapt existing tests to the new validations clauses without getting hung
up about adding new tests, because if I were to implement tests for all cases
I'd never get this thing finished
0.321 2014-11-28 21:59 CET
- dispatch/employee_Config.pm: adjust ACLs so 'inactive' and 'active' employees
can do various operations - trusting that later logic will prevent them from
seeing or modifying any data but their own
- Dispatch/Employee.pm: eliminate _post_current routine after moving ACL code
into _put_post_delete_employee_by_eid
- t/dispatch/employee.t: adapt to current state
0.322 2014-11-29 23:03 CET
- config/dispatch/employee_Config.pm: change ACL profiles of all the resources
for which we want to let 'inactive' and 'active' employees edit certain
fields of their own employee profile - this opens something of a bag of worms
because we have to let these requests through to Dispatch/Employee.pm
- config/dispatch_Message_en.conf: eliminate deprecated messages
- Dispatch/Employee.pm: refactor several routines to let 'inactive' and
'active' users update certain fields of their own employee profiles
- Dispatch/Shared.pm: eliminate deprecated messages
- t/dispatch/employee.t: adapt existing tests; add some tests to probe the
feature we just added
- t/dispatch/schedule.t: adapt to current state
0.323 2014-12-01 10:45 CET
- iron out last bugs, t/dispatch/history.t runs cleanly now
0.372 2015-02-06 06:12 CET
- Dispatch/Priv.pm: implement separate handler for 'priv/{eid,nick}'
- Dispatch/Schedule.pm: migrate 'schedule/all' and 'schedule/all/disabled' resources
- Dispatch/Shared.pm: migrate the not-very-aptly-named 'current' routine
- t/dispatch/{priv,schedule}.t: remove 'noop'/'help' tests
- t/dispatch/priv.t: unit runs cleanly
0.373 2015-02-06 15:23 CET
- migrate 'schedule/...' resources (WIP)
0.374 2015-02-08 19:49 CET
- Dispatch/Schedule.pm: migrate 'schedule/eid/...' and 'schedule/nick/...';
start migrating 'schedule/sid/:sid'
- Dispatch/Employee.pm: migrate 'employee/count/?:priv'; move hash_the_password
to Util.pm
- t/dispatch/schedule.t: migrate unit tests
0.375 2015-02-09 08:52 CET
- Dispatch/Shared.pm: make a generalized method ('handler_first_pass_lookup')
for fetching objects from the database based on URI mapping
- start migrating resource handlers to the new method
0.376 2015-02-09 15:15 CET
- migrating resources to 'handler_first_pass_lookup'
0.377 2015-02-09 20:33 CET
- debugging WIP
0.378 2015-02-10 08:40 CET
- migrate 'employee/...' resources (WIP)
- get rid of 'make_default', which was used to implement 'help' resources
but is not compatible with Web::MREST
0.379 2015-02-10 17:29 CET
- massive reorganization: move handler routines to Dispatch.pm
0.380 2015-02-10 18:27 CET
- Dispatch.pm: merge 'current' into 'handler_get_privsched'; fix _update_schedule
- t/dispatch/schedule.t: migrate unit tests - unit runs cleanly again
0.381 2015-02-11 10:42 CET
- work on employee handlers (PUT employee/eid/:eid and PUT employee/nick/:nick)
with two-pass additional ACL check for updates; insert is working, too
- TODO: migrate rest of employee resources and t/dispatch/employee.t
0.382 2015-02-11 14:41 CET
- ResourceDefs.pm: new module; move all migrated resource defs into it;
add missing acl_profile properties to top-level resource defs;
- Test.pm: include location header in return status (a-la Web::MREST)
- t/dispatch/top.t: migrate unit
0.383 2015-02-11 16:43 CET
- migrate Employee resources (WIP)
0.384 2015-02-12 07:31 CET
- support 'employee/search/nick/:key'
0.385 2015-02-12 09:22 CET
- Dispatch.pm: make 404 explanation in 'handler_get_employee_search_nick' more
descriptive
- move ACL.pm up one level in the directory structure, since the Dispatch/
directory will soon be gone
0.386 2015-02-12 09:44 CET
- Dispatch.pm: in 'GET employee/search/nick/:key', add '%' characters to :key
implicitly if none are provided (and note this in resource documentation)
- Model/Shared.pm: in load_multiple, mention search keys in the result
0.387 2015-02-12 10:13 CET
- Dispatch.pm: make 404 explanation more descriptive
- t/dispatch/employee.t: get unit running cleanly
0.388 2015-02-12 11:22 CET
- move Dispatch/Shared.pm up one directory level
- convert insert_employee and update_employee into ordinary functions and move
them to Shared.pm - to be manageable, Dispatch.pm should contain resource
handlers only
0.389 2015-02-12 14:40 CET
- Dispatch.pm, Shared.pm: migrating shared (non-handler) routines to Shared.pm
0.390 2015-02-12 15:05 CET
- drop 'test/?:specs' routine, which is specific to Web::MREST testing
0.391 2015-02-12 15:15 CET
- Dispatch.pm, Shared.pm: move shared employee ACL check routines to Shared.pm
0.392 2015-02-12 16:04 CET
- Dispatch.pm, Shared.pm: eliminate "history boilerplate" by integrating its
functionality directly into two history handlers
0.393 2015-02-12 21:16 CET
- ResourceDefs.pm, Dispatch.pm: start migrating 'activity/...' resources
- config/dispatch_Message_en.conf: replace hard-coded strings with message
object codes
- Shared.pm: implement 'shared_entity_check'
0.394 2015-02-13 08:28 CET
- continue migrating 'activity/...' resources
- finished moving shared routines from Dispatch.pm to Shared.pm
0.395 2015-02-13 09:04 CET
- finish migrating 'activity/...' resources
- cleanup
0.396 2015-02-13 15:15 CET
- major migration push (just four handlers left to go)
0.397 2015-02-13 21:51 CET
- migrate last resources
- cleanup (WIP)
0.398 2015-02-16 08:25 CET
- Dispatch.pm: fix syntax error
- ResourceDefs.pm: add missing resources 'activity', 'employee', 'interval', 'lock'
- Shared.pm: fix function name 'shared_process_quals'
- t/model/: clean up tests (WIP)
0.399 2015-02-16 11:01 CET
- all tests running cleanly again
- ACL.pm, Auth.pm: return to previous behavior where resources default to "403
Forbidden" in absence of a valid acl_profile property
0.400 2015-02-16 14:42 CET
- Test.pm, t/: comment out 'diag' statements so test output is clean
- docgen.plx, Docs/Resources.pm: first shot at migrating script that generates
resource documentation
- ResourceDefs.pm: fix 'documentation' properties so all resources have a
"preamble"
0.401 2015-02-16 21:59 CET
- docgen.plx: tweak to extract allowed methods for each resource
- Docs/Resource.pm: re-generate POD by latest docgen.plx
0.402 2015-02-17 18:30 CET
- t/model/schedule.t: fix brokenness previously hidden by a stale module file
in /usr/lib/perl5/site_perl
0.403 2015-02-18 11:59 CET
- use normalize_filespec to avoid $ENV{'HOME'}, which does not work on Windows
systems
0.404 2015-02-18 17:59 CET
- dispatch_Messages_en.conf, Auth.pm: define and use DISPATCH_ACL_CHECK_FAILED message
- Dispatch.pm: remove extraneous 'my'
0.405 2015-02-20 15:24 CET
- ACL.pm: add 'acl_check_is_me' - generalized check for handlers that have
acl_profile "passerby" but may only used to operate on one's own records
- ResourceDefs.pm, Dispatch.pm: use 'acl_check_is_me' in several handlers
0.406 2015-02-20 20:55 CET
- config/sql: add SQL_EMPLOYEE_SELECT_BY_SEC_ID
- ResourceDefs.pm: add employee/sec_id/:sec_id
0.407 2015-02-21 15:30 CET
- t/dispatch/employee.t: adapt tests to new ACL policy
0.408 2015-02-21 15:58 CET
- Model/Employee.pm: add load_by_sec_id routine
- t/model/employee.t: add rudimentary unit tests for load_by_sec_id
- Shared.pm: change all instances of $self to $d_obj since none of the routines
in this module use method calls; add sec_id to shared_first_pass_lookup
0.409 2015-02-22 16:36 CET
- implement shared_get_employee and use it to implement three resource handlers
0.410 2015-02-23 20:42 CET
- t/dispatch/employee.t: add rudimentary tests of "employee/sec_id/:sec_id"
resource
0.411 2015-02-24 10:55 CET
- Build.PL: no longer re-create README on each build
- README: instead, point would-be readers to metacpan.org
- REST.pm: work on POD
0.412 2015-03-20 21:35 CET
- config/sql/dbinit_Config.pm: add disabled_to_zero trigger to convert NULL
values to "false" in the disabled field
- t/sql/disabled_to_zero.t: test disabled_to_zero trigger
0.413 2015-03-24 21:30 CET
- allow single-character nicks
0.414 2015-03-25 16:24 CET
- Dispatch.pm: convert "hardcoded text as status codes" into proper status
codes
0.415 2015-03-30 17:29 CEST
- require App::Dochazka 0.186 for 'scode' property in schedule class
- make test suite tolerate 'scode' property
- t/sql/schedule_Config.pm: add scode property to all SQL statements where it
makes sense
- implement 'schedule/scode/:scode' property with basic test cases
0.416 2015-04-01 09:39 CEST
- t/dispatch/schedule.t: trying to verify with tests that the new schedule
insert logic really does what we want
0.417 2015-04-02 22:06 CEST
- use TDD to get what we want: POST schedule/new ignores scode value when given
schedule exactly matches an existing schedule with a different (non-NULL)
scode
0.418 2015-04-03 09:08 CEST
- SQL: split 'disabled_to_zero' function/triggers into separate variants for
insert and update; confidently add 'NOT NULL' constraint to 'disabled' fields
- t/sql/disabled_to_zero.t: adapt to current state
- t/model/schedule.t: add notes the way it should have been from the beginning
0.419 2015-04-03 18:06 CEST
- ResourceDefs.pm: change ACL of 'GET schedule/all' so inactives and actives
can do it, too
- t/dispatch/schedule.t: add appropriate test cases
0.420 2015-04-04 21:18 CEST
- SQL: implement 'not_before_1892' function to enforce sane timestamp policy
(no dates before 1892 in the database)
- t/: adapt tests; add test cases
0.421 2015-04-05 13:34 CEST
- REST/Shared.pm: in 'shared_get_privsched', return 404 if no priv/schedule
assigned (instead of returning 200 OK with a null priv/schedule)
- t/dispatch/schedule.t: adapt tests
0.422 2015-04-05 20:45 CEST
- dbinit_Config.pm: make schedule_at_timestamp return SID instead of the
schedule JSON itself
- Model/Shared.pm: schedule_by_eid returns SID
- REST/Shared.pm: shared_get_privsched looks up the SID and returns the
entire schedule
- t/dispatch/schedule.t: adapt tests affected by the above change
- t/sql/disabled_to_zero.t: clean up after ourselves
0.423 2015-04-06 13:42 CEST
- REST/Shared.pm: make shared_employee_acl_part2 declare 403 status with a
proper App::CELL::Status instead of a hard-coded string
0.424 2015-04-06 18:59 CEST
- ResourceDefs.pm: allow inactives and actives to view their own privilege
and schedule histories; fix spelling of the word 'schedule' in the 'cli'
property
0.425 2015-04-06 22:15 CEST
- ResourceDefs.pm, config/sql/: modifications to allow POST (update) on
'priv/history/phid/:phid' and 'schedule/history/shid/:shid'
- Model/Privhistory.pm, Model/Schedhistory.pm: add update method
- UPDATE privhistory does not work as it should
- tests not running cleanly
0.426 2015-04-07 07:15 CEST
- dbinit_Config.pm: fix bug in 'root_immutable_old' that was causing
NEW.* values to be replaced with OLD.* on updates
- t/sql/privhistory.t: add test case for the above bug
- t/sql/root.t: replace comments with note()s
0.427 2015-04-07 09:14 CEST
- dbinit_Config.pm: fix DBINIT_MAKE_ROOT_IMMUTABLE triggers that were causing
UPDATE and DELETE operations to silently fail
- REST/Dispatch.pm: add targets for POST operations on
'priv/history/phid/:phid' and 'schedule/history/shid/:shid'
- REST/Shared.pm: add 'shared_update_history' routine
- t/dispatch/: adapt tests, add tests
0.428 2015-04-14 15:40 CEST
- REST/Shared.pm: include nick in error message
0.429 2015-04-14 17:06 CEST
- fix bug "GET interval/eid/:eid/:tsrange and interval/nick/:nick/:tsrange
should work for active employees on themselves"
https://rt.cpan.org/Ticket/Display.html?id=103538
http://paste.opensuse.org/7703631
0.430 2015-04-16 10:34 CEST
- fix bug "Unexpected error in t/sql/current.t"
https://rt.cpan.org/Ticket/Display.html?id=103766
http://paste.opensuse.org/8781484
0.431 2015-04-16 16:01 CEST
- make "GET interval" operations return the activity code as well as the AID
to make life easier for clients
- t/dispatch/supervisor.t: add more tests
0.464 2015-07-10 16:50 CEST
- ResourceDefs.pm: change ACL profile of GET lock/eid/:eid/:tsrange
and GET lock/nick/:nick/:tsrange to 'active', so active employees
can view their locks and supervisors can view the locks of their
reports
- t/dispatch/supervisor.t: add more tests
0.465 2015-07-10 17:34 CEST
- t/dispatch/interval_lock.t: do not rely on IID having a particular value,
since this only holds if/when tests are run in a particular order
0.466 2015-07-12 22:24 CEST
- t/dispatch/supervisor.t: test that inactive supervisors cannot see their
peons' attendance data
0.467 2015-07-21 15:27 CEST
- REST.pm: define $VERSION in top-level module only
- Adapt to rename of App::Dochazka to App::Dochazka::Common
- release.sh: new release script
0.468 2015-07-21 16:01 CEST
- Update Copyright statement to include 2015
- release.sh: add "osc update"
0.469 2015-07-22 22:17 CEST
- implement new resources:
- GET employee/eid/:eid/minimal
- GET employee/nick/:nick/minimal
- GET employee/sec_id/:sec_id/minimal
- t/dispatch/employee.t: add some basic test cases for the new
GET employee/.../minimal resources
- t/: adapt test suite to App::Dochazka::Common rename
0.470 2015-07-23 14:50 CEST
- t/dispatch/employee.t: disable tests that broke when employees were allowed to modify their email address
- t/201-LDAP.t: expanded tests
- ResourceDefs.pm: add employee/nick/:nick/ldap resource
- LDAP.pm: make ldap_search() look up a property; implement populate_employee()
- Dispatch.pm: add handler_get_employee_ldap() for GET employee/nick/:nick/ldap
- Auth.pm: populate certain employee attributes from LDAP upon successful LDAP autocreate
- REST_Config.pm: default value for DOCHAZKA_LDAP_POPULATE_MATRIX
- Build.PL: require App::Dochazka::Common 0.191 for "set()" method
- Dispatch.pm: increase granularity of employee/.../minimal ACL check
- No longer auto-generate Makefile.PL
0.471 2015-07-23 16:55 CEST
- t/201-LDAP.t: add simple test cases for GET employee/nick/:nick/ldap
- ResourceDefs.pm: enable PUT on employee/nick/:nick/ldap
- LDAP.pm: fix populate_employee() so it returns not_ok if nick is not in LDAP
- Dispatch.pm: implement handler_get_employee_ldap and handler_put_employee_ldap
- Auth.pm: fix DOCHAZKA_LDAP_AUTOCREATE_AS code path
0.472 2015-07-24 17:06 CEST
- doc: config/REST_Config.pm: tell users to not add a nick property to
DOCHAZKA_LDAP_POPULATE_MATRIX
- t/: test POST employee/nick without required nick property
- Dispatch.pm: return 400 if POST employee/nick without nick property
(fixes github issue #2)
- Dispatch.pm: handler_put_employee_ldap() return 404 if nick not found in LDAP
0.473 2015-07-25 03:45 CEST
- REST_SiteConfig.pm: add config file for overriding Web::MREST core params
since those are set first
- REST.pm: add a version() package method
- GET version now reports App::Dochazka::REST version instead of Web::MREST
version (Github issue #3)
- t/sql/disabled_to_zero.t: fix issue where test was not cleaning up after itself
- Dispatch.pm: write a debug message if LDAP is enabled
- MANIFEST: refrain from packaging release script
0.474 2015-07-25 16:33 CEST
- t/001-init.t: skip all tests if PostgreSQL server unreachable
- REST/Test.pm: make initialize_unit() do skip_all if PostgreSQL server unreachable
- ConnBank.pm: catch exceptions in conn_status()
- REST.pm: init() routine is no longer used; move it to REST/Test.pm
- bin/dochazka-rest: enable passing of command-line options to mrest script
(resolves github issue #4)
- Build.PL: require Web::MREST 0.274 for bin/mrest command-line options
- bin/dochazka-rest: process command-line options using GNU getopt
- REST.pm: update init_no_db() documentation to reflect current state
- release scripting mods
0.475 2015-07-25 16:57 CEST
- Build.PL: set repository and bugtracker URLs
0.476 2015-07-25 17:49 CEST
- REST/Test.pm: use conn_up() instead of conn_status()
- ConnBank.pm: add conn_up() and rewrite conn_status() as a wrapper
- Auth.pm: drop obsolete call to App::Dochazka::REST::init()
- Auth.pm: call App::Dochazka::REST::ConnBank::init_singleton() instead of deprecated App::Dochazka::REST::init()
- ConnBank.pm: make init_singleton() use values from site configuration
- ConnBank.pm: make init_singleton() be idempotent
0.477 2015-07-25 20:13 CEST
- ResourceDefs.pm: change ACL profile to passerby in two places
- config/dispatch_Message_en.conf: fix DISPATCH_KEEP_TO_YOURSELF message which
was no longer accurate
0.478 2015-07-29 17:22 CEST
- Import normalize_filespec() from Web::MREST::CLI, where it now resides
- Dispatch.pm: do not report passhash and salt back to users
0.479 2015-07-30 14:41 CEST
- Build.PL: require Web::MREST 0.279 for early debugging feature
Fixes: https://github.com/smithfarm/dochazka-rest/issues/13
- REST.pm: document the early debugging feature
- Test.pm: drop call to init_no_db(); use Web::MREST::init() only
- Dispatch.pm: be more careful with DOCHAZKA_EMPLOYEE_MINIMAL_FIELDS
- REST.pm: drop init_no_db() which is no longer used
- Build.PL: require a more recent version of App::CELL
0.480 2015-07-30 21:56 CEST
- Test.pm: do not send deprecated debug_mode param to Web::MREST::init()
(fixes build failure in OBS)
0.481 2015-08-01 18:43 CEST
- Model/Shared.pm: add functions from deprecated Util/Timestamp.pm
- Model/{Priv,Sched}history.pm: get_history() is now exported
- Util/Timestamp.pm: drop deprecated module
( run in 0.804 second using v1.01-cache-2.11-cpan-39bf76dae61 )