4 Commits

Author SHA1 Message Date
Karthikeyan Singaravelan
b38b805bf0 Use assertEqual instead of assertEquals for Python 3.11 compatibility. 2022-03-16 14:14:33 -04:00
Tim Burke
c0c9803956 Fix tests to pass with SQLAlchemy>=1.4.0
I'm not *entirely* sure what's going on here, but it seems that when we
do something like

    obj = OpaqueObject(...)
    Session = sessionmaker(...)
    session = Session()
    ...
    session.add(obj)
    session.commit()

the primary key (and maybe some foreign relations?) aren't automatically
populated on `obj` following the commit, and will attempt to lazy-load
on next reference. Since expire_on_commit defaults to True, the session
attached to `obj` (which is no longer the `session` in locals!) is closed
out when we later do

    session = Session()
    get_obj = session.query(OpaqueObject).filter(
        ManagedObject.unique_identifier == obj.unique_identifier).one()

leading to a DetachedInstanceError.

There seem to be a few different ways we can fix this:

* Set expire_on_commit=False so the old session is still useful for the
  lazy-loading.
* Re-use the same session instead of creating a new one.
* Explicitly refresh added objects post-commit.

Generally prefer the first one; there's some prior art to follow in
services/server/test_engine.py. Curiously, that same file runs into
trouble despite already setting expire_on_commit=False -- so do the
explicit refresh, on the assumption that there was a reason we went to
the trouble of creating a fresh session.

Closes #649
2021-09-23 13:43:04 -04:00
Nathan Reller
8d6575fa36 Added SQLAlchemy Code for Secret Data
The SecretData class has the SQLAlchemy code in it to allow it be
stored in the database using the library.
2016-02-19 10:33:36 -05:00
Peter Hamilton
e497e1c37c Adding secret data to the Pie object hierarchy
This change adds a SecretData class to the Pie object hierarchy. A unit
test suite covering the class is provided, as are updates to the Pie
object factory and associated tests.
2015-07-30 08:03:33 -04:00