Special Offers

We believe the computer and operating system are the most powerful and versatile tools ever created. Desktop operating systems have moved too far toward the casual user. We’re building an OS for the software developer, maker, and computer science professional who uses their computer as a tool to discover and create.

Welcome to

Pop!_OS

Imagine

The Future of Automation

Code life into the machinery of the future. Everyone from hobbyist to factory automation professionals can leverage vast open source tools and a vibrant hardware ecosystem to create incredible robots to do nearly anything.

a sweet robot

Imagine

Development as a First-Class Citizen

The cloud and devices of the future are running Linux. Accelerate your productivity by developing on the same platform that you deploy to. Your tools and programming languages are supported natively and only a command away.

ben@pop-os:~/Projects/hal$ mix test --trace
Compiling 176 files (.ex)
Generated hal app

Hal.EncryptorTest
  * test generates encrypted strings matching those generared by Joshua (5.4ms)
  * test decrypts strings encrypted by Joshua (0.1ms)

Hal.NotificationTest

Hal.SupportActionTest
  * test performing an illegal action returns an error (86.9ms)
  * test performing a legal action succeeds (43.6ms)
  * test performing an action as an unsupported role returns an error (16.4ms)
  * test completing a legal action resolves requirements (34.5ms)
  * test performing an action as an unauthenticated user returns an error (22.7ms)
  * test completing a legal action creates new requirements (60.4ms)
  * test invokes a system action check after a successful action is performed (23.5ms)

Hal.Type.JSONTest
  * test type is a string (0.00ms)
  * test cast accepts anything (0.00ms)
  * test dump allows setting NULL (0.00ms)
  * test dump stringifies to JSON (17.5ms)
  * test load hydrates JSON (6.9ms)
  * test load hydrates NULL columns (0.00ms)

JunctionBox.ParserTest
  * test handles bare strings (0.01ms)
  * test parses dot separated include paths (0.00ms)
  * test only parses one level deep (0.00ms)
  * test removes duplicates (0.01ms)

Hal.Type.OrderStatusTest
  * test cast rejects unknown statuses (0.00ms)
  * test cast accepts strings, atoms, and ints (0.00ms)
  * test dumping an atom produces an integer (0.00ms)
  * test loading an integer produces an atom (0.00ms)

Hal.Type.UnixTimestampTest
  * test casts ISO 8601 strings to datetimes (0.04ms)
  * test type is an integer (0.00ms)
  * test dumping a datetime object produces an integer timestamp (0.00ms)
  * test loading a timestamp returns a datetime object (0.01ms)

Hal.Type.IdListTest
  * test cast returns lists of integers unaltered (0.00ms)
  * test type is a string (0.00ms)
  * test cast returns an error for non-list types (0.00ms)
  * test dumping an empty list produces a JSON array containing the empty string (0.00ms)
  * test dumping a list of integers produces a JSON array of integer strings (0.00ms)
  * test loading a JSON array returns a list of integers (0.04ms)
  * test loading a JSON array containing the empty string returns an empty list (0.00ms)

Hal.Type.CommaSeparatedListTest
  * test cast returns lists of strings unaltered (0.00ms)
  * test type is a string (0.00ms)
  * test cast returns an error for non-list types (0.00ms)
  * test dumping an empty list produces nil (0.00ms)
  * test dumping a list of strings produces a comma separated list of strings (0.00ms)
  * test loading a string returns a list of strings (0.00ms)
  * test loading nil returns an empty list (0.00ms)

Hal.Plug.AuthenticatorTest
  * test assigns current_user if a valid auth header is provided (17.3ms)
  * test does nothing if no authentication header is present (19.2ms)
  * test returns a 401 and halts if an invalid auth header is present (13.7ms)
  * test returns a 401 and halts if an expired token is provided (4.5ms)
  * test returns a 401 and halts if a malformed auth header is present (5.1ms)
  * test returns a 401 and halts if multiple authentication headers are provided (13.5ms)
  * test allows an authentication token to be provided as a GET parameter (34.7ms)

JunctionBoxTest
  * test includes links if asked for (0.3ms)
  * test passes through normal requests unaltered (0.1ms)
  * test only alters GET requests (0.1ms)
  * test handles includes for nonexistent links (0.1ms)
  * test can include grandchildren (0.5ms)
  * test handles errors on the original request (3.2ms)
  * test handles errors on child requests (0.2ms)

Hal.ErrorViewTest
  * test renders 404.json (0.3ms)
  * test render 500.json (0.3ms)
  * test render any other (1.0ms)

Hal.UserTest
  * test changeset with valid attributes (0.4ms)
  * test changeset with invalid attributes (0.2ms)
  * test setting a password generates hashes matching the legacy system (0.2ms)
  * test changing the email also sets the username (0.3ms)
  * test authentication matches against hashes (2.0ms)
  * test recognizes admins and superadmins (6.2ms)

Hal.UserKeyTest
  * test changeset with invalid attributes (0.3ms)
  * test changeset with valid attributes (0.1ms)
  * test door is generated if not present (0.2ms)
  * test door is unaltered if present (0.1ms)

Hal.SurveyTest
  * test create changeset with valid attributes (0.7ms)
  * test create changeset with invalid attributes (0.2ms)
  * test update changeset fails if response_timestamp is already set (0.2ms)
  * test update changeset with valid attributes (0.2ms)
  * test update changeset with invalid attributes (4.7ms)
  * test allow exactly one of order, ticket, or question id (0.3ms)

Hal.TweetStormVideoTest
  * test changeset with valid attributes (0.2ms)
  * test changeset with invalid attributes (0.2ms)
  * test summarizes unlock conditions (0.1ms)

Hal.TransactionMethodTest
  * test changeset with valid attributes (0.1ms)
  * test changeset with invalid attributes (0.1ms)
  * test soft delete marks an address as removed (0.1ms)

Hal.TweetStormTest
  * test changeset with valid attributes (0.1ms)
  * test changeset with invalid attributes (0.1ms)

Hal.SupportCaseTest
  * test changeset with valid attributes (0.2ms)
  * test actions lists the available actions for a given role (2.5ms)
  * test changeset with invalid attributes (0.2ms)
  * test actions lists whether actions resolve requirements (2.1ms)
  * test recognizes when it is closed (7.1ms)

Hal.SupportCaseRequirementTest
  * test changeset with valid attributes (0.1ms)
  * test changeset with invalid attributes (0.2ms)

Hal.SupplierTest
  * test changeset with valid attributes (0.2ms)
  * test changeset with invalid attributes (0.1ms)

Hal.MessageTest
  * test authorization anyone can create a message (2.1ms)
  * test sets the timestamp (0.2ms)
  * test changeset with invalid attributes (0.1ms)
  * test authorization customers can read messages on objects they own if and only if the customer visible flag is set (7.8ms)
  * test authorization only admins can edit messages (7.0ms)
  * test authorization admins can read all messages (2.4ms)
  * test changeset with valid attributes (0.1ms)
  * test authorization admins are scoped to all records (2.3ms)
  * test authorization users can see messages that belong to objects they own and have the customer visible flag set (7.6ms)

Hal.ProductTechSpecTest
  * test changeset with valid attributes (0.2ms)
  * test changeset with invalid attributes (0.2ms)

Hal.ProductTest
  * test changeset with valid attributes (0.2ms)
  * test changeset with invalid attributes (0.2ms)

Hal.RoleTest
  * test changeset with valid attributes (0.1ms)
  * test changeset with invalid attributes (0.2ms)

Hal.ProductOptionComponentTest
  * test changeset with valid attributes (0.2ms)
  * test changeset with invalid attributes (0.2ms)

Hal.ProductOptionTest
  * test changeset with valid attributes (0.1ms)
  * test changeset with invalid attributes (0.2ms)

Hal.ProductSpecTest
  * test changeset with valid attributes (0.1ms)
  * test changeset with invalid attributes (0.1ms)

Hal.LeadTest
  * test changeset with invalid attributes (0.1ms)
  * test changeset with valid attributes (0.1ms)
  * test changeset with duplicate email is invalid (45.3ms)
  * test changeset with attached user pulls data from user record (4.0ms)

Hal.ProductCalloutTest
  * test changeset with valid attributes (0.7ms)
  * test changeset with invalid attributes (0.6ms)

Hal.ProductDetailTest
  * test changeset with valid attributes (0.7ms)
  * test changeset with invalid attributes (0.6ms)

Hal.AddressTest
  * test changeset with invalid attributes (266.4ms)
  * test changeset with valid attributes (51.6ms)
  * test soft delete marks an address as removed (0.2ms)
  * test equivalency (0.2ms)

Hal.CountryTest
  * test changeset with valid attributes (3.8ms)
  * test upcases name and region before storage (0.2ms)
  * test changeset with invalid attributes (0.1ms)
  * test accepts 'shipping' instead of 'enabled' (0.2ms)
  * test some known countries require a zip code (0.2ms)

Hal.CartProductTest
  * test changeset with invalid attributes (0.2ms)
  * test changeset with valid attributes (0.1ms)
  * test creating a changeset sets the hash (0.2ms)
  * test allows setting component ids (16.7ms)

Hal.ComponentTest
  * test changeset with valid attributes (0.2ms)
  * test changeset with invalid attributes (0.2ms)

Hal.CartTest
  * test changeset with valid attributes (0.1ms)

Hal.Accounts.EmployeeProfileTest
  * test changeset with valid attributes (0.2ms)
  * test changeset with invalid attributes (0.2ms)

Hal.Accounts.DepartmentTest
  * test changeset with valid attributes (0.2ms)
  * test changeset with invalid attributes (2.8ms)

Stripe.APITest

Hal.SupportActions.SelectShippingAddressTest
  * test resolves the shipping address requirement (2.0ms)
  * test does not create any new requirements (1.8ms)
  * test resolving with a valid address id completes successfully (5.7ms)
  * test attempting to resolve without an address id fails (2.6ms)
  * test attempting to resolve with an address not owned by the support case owner returns an error (3.7ms)
  * test resolving with an invalid address id returns an error (2.6ms)

Hal.SupportActions.SelectTransactionMethodTest
  * test availability only available if the needs transaction method requirement is present (15.5ms)
  * test requirements does not create any new requirements (2.6ms)
  * test requirements resolves the needs transaction method requirement (2.4ms)
  * test resolving with a valid transaction method id completes successfully (4.8ms)
  * test resolving adds a message to the support case (5.8ms)

Hal.SupportActions.CreateSupportMessageTest
  * test requirements creates the needs customer message requirement (1.9ms)
  * test requirements resolves the needs support message requirement (1.7ms)
  * test resolving with valid message params completes successfully (3.6ms)
  * test resolving with invalid params returns an error (2.8ms)

Hal.SupportActions.CreateCustomerMessageTest
  * test requirements creates the needs support message requirement (1.8ms)
  * test requirements resolves the needs customer message requirement (1.8ms)
  * test resolving with valid message params completes successfully (3.3ms)
  * test resolving with invalid params returns an error (2.3ms)

Hal.Fulfillment.OrderTest
  * test pricing calculating taxable amount (3.8ms)
  * test pricing subtotals (16.8ms)
  * test pricing subtotal and total for cancelled orders is zero (5.2ms)
  * test pricing applying taxes to a cancelled, returned, or completed order is a no-op (4.3ms)
  * test summarizing an order multiple order products with the same model combine (0.4ms)
  * test summarizing an order empty orders produce empty lists (0.2ms)
  * test pricing totals (skipped)
  * test pricing order balance (even for cancelled orders) (5.5ms)
  * test summarizing an order each order product produces a summary (9.8ms)
  * test changeset with invalid attributes (0.2ms)
  * test pricing order summaries (3.6ms)
  * test pricing applying taxes (10.4ms)
  * test pricing flagging for manual security verification (3.6ms)
  * test changeset with valid attributes (0.2ms)
  * test pricing calibration (skipped)

Hal.Fulfillment.TaxRateTest
  * test changeset with valid attributes (0.1ms)
  * test changeset with invalid attributes (0.2ms)
  * test finding rates for an address (2.4ms)

Hal.Fulfillment.ProductTest
  * test pricing calculating taxable amounts (2.7ms)
  * test changeset with invalid attributes (0.1ms)
  * test changeset with valid attributes (0.2ms)
  * test pricing calculating prices (14.2ms)
  * test pricing applying surcharges (13.7ms)
  * test pricing calculating costs (8.2ms)
  * test pricing deducting returns (6.8ms)
  * test pricing calibration (15.4ms)

Hal.PaymentProcessor.StripeTest
  * test creates a transaction method (72.0ms)

Hal.UserControllerTest
  * test creates and renders resource when data is valid (8.5ms)
  * test shows chosen resource (3.2ms)
  * test does not create resource and renders errors when data is invalid (1.8ms)
  * test updates password when provided (3.4ms)
  * test updates and renders chosen resource when data is valid (4.1ms)
  * test does not update chosen resource and renders errors when data is invalid (2.4ms)
  * test generates a CSV of newsletter subscribers (9.6ms)

Hal.Fulfillment.SurchargeRateTest
  * test changeset with valid attributes (0.2ms)
  * test finding applicable surcharges locating a surcharge with all fields empty or set to "ALL" (1.3ms)
  * test changeset with invalid attributes (0.3ms)
  * test finding applicable surcharges locating a surcharge with a matching product ID (1.9ms)
  * test finding applicable surcharges locating a surcharge with a matching state or country (2.2ms)

Hal.Fulfillment.ReturnTest
  * test changeset with valid attributes (0.2ms)
  * test changeset with invalid attributes (0.2ms)

Hal.TweetStormControllerTest
  * test lists all entries on index (16.7ms)
  * test does not create resource and renders errors when data is invalid (7.3ms)
  * test creates and renders resource when data is valid (9.2ms)
  * test does not show resource and instead throw error when id is nonexistent (12.3ms)
  * test updates and renders chosen resource when data is valid (3.9ms)
  * test deletes chosen resource (13.6ms)
  * test does not update chosen resource and renders errors when data is invalid (4.9ms)
  * test shows chosen resource (13.6ms)
  * test shows a summary of the tweet storm (3.7ms)
  * test registering a new tweet increments the tweet counter (6.7ms)

Hal.Fulfillment.ProductOptionTest

Hal.Fulfillment.PriceModificationTest
  * test changeset with valid attributes (1.6ms)
  * test changeset with invalid attributes (0.2ms)

Hal.ProductTechSpecControllerTest
  * test shows chosen resource (3.1ms)
  * test does not create resource and renders errors when data is invalid (2.1ms)
  * test broadcasts to the resource's channel when created (2.8ms)
  * test creates and renders resource when data is valid (3.4ms)
  * test lists all children of a product on child index (5.4ms)
  * test updates and renders chosen resource when data is valid (3.6ms)
  * test does not update chosen resource and renders errors when data is invalid (2.8ms)
  * test lists all entries on index (3.3ms)
  * test broadcasts to the resource's channel when updated (5.9ms)
  * test renders page not found when id is nonexistent (2.9ms)
  * test deletes chosen resource (3.5ms)
  * test broadcasts to the resource's channel when deleted (3.2ms)

Hal.TransactionMethodControllerTest
  * test lists all entries on index (2.3ms)
  * test lists all transaction methods for a given user (3.7ms)
  * test does not show resource and instead throw error when id is nonexistent (2.5ms)
  * test shows chosen resource (3.1ms)
  * test creates and renders resource when data is valid (57.3ms)
  * test soft deletes chosen resource (3.4ms)

Hal.TweetStormVideoControllerTest
  * test does not show resource and instead throw error when id is nonexistent (2.7ms)
  * test shows chosen resource (2.6ms)
  * test lists all entries on index (3.0ms)
  * test creates and renders resource when data is valid (3.0ms)
  * test updates and renders chosen resource when data is valid (4.0ms)
  * test does not create resource and renders errors when data is invalid (2.6ms)
  * test does not update chosen resource and renders errors when data is invalid (3.8ms)
  * test deletes chosen resource (4.7ms)

Hal.SupportCaseControllerTest
  * test lists all entries on index (3.0ms)
  * test does not create resource and renders errors when data is invalid (2.8ms)
  * test creates and renders resource when data is valid (9.4ms)
  * test renders page not found when id is nonexistent (2.8ms)
  * test updates and renders chosen resource when data is valid (7.8ms)
  * test deletes chosen resource (4.9ms)
  * test does not update chosen resource and renders errors when data is invalid (5.0ms)
  * test shows chosen resource (5.6ms)
  * test performing actions performs a valid action (5.0ms)
  * test performing actions does not perform action and renders errors when data is invalid (5.2ms)

Hal.SurveyControllerTest
  * test shows chosen resource (1.8ms)
  * test does not show resource and instead throw error when id is nonexistent (1.5ms)
  * test shows survey by hash (10.7ms)
  * test updates and renders chosen resource when data is valid (2.4ms)
  * test does not update chosen resource and renders errors when data is invalid (2.3ms)

Hal.ProductOptionControllerTest
  * test lists all entries on index (2.0ms)
  * test lists entries in sort order (2.5ms)
  * test doesn't list inactive entries (12.6ms)
  * test shows chosen resource (2.0ms)
  * test does not show resource and instead throw error when id is nonexistent (1.5ms)

Hal.SessionControllerTest
  * test creates and returns an auth token when valid credentials are provided (2.3ms)
  * test returns a 401 unauthorized when an invalid email or password is provided (1.4ms)
  * test marks a session as expired (3.7ms)

Hal.ProductCalloutControllerTest
  * test renders page not found when id is nonexistent (2.4ms)
  * test shows chosen resource (2.3ms)
  * test lists all entries on index (2.1ms)
  * test creates and renders resource when data is valid (2.5ms)
  * test updates and renders chosen resource when data is valid (2.6ms)
  * test does not create resource and renders errors when data is invalid (2.6ms)
  * test does not update chosen resource and renders errors when data is invalid (2.9ms)
  * test deletes chosen resource (3.8ms)

Hal.ProductControllerTest
  * test filters by type when provided (2.0ms)
  * test lists entries in sort order (2.6ms)
  * test lists all entries on index (0.9ms)
  * test filters by series when provided (2.7ms)
  * test finds resource by model number (2.1ms)
  * test shows chosen resource (1.6ms)
  * test includes details and options when requested (3.0ms)
  * test does not show resource and instead throw error when id is nonexistent (0.9ms)

Hal.ProductOptionComponentControllerTest
  * test lists all entries on index (1.9ms)
  * test lists entries in sort order (2.9ms)
  * test doesn't list inactive entries (11.4ms)
  * test shows chosen resource (2.5ms)
  * test does not show resource and instead throw error when id is nonexistent (1.6ms)

Hal.MessageControllerTest
  * test renders page not found when id is nonexistent (2.5ms)
  * test omits links for missing associations (3.0ms)
  * test shows chosen resource (15.8ms)
  * test creates and renders resource when data is valid (3.3ms)
  * test updates and renders chosen resource when data is valid (5.1ms)
  * test does not create resource and renders errors when data is invalid (1.9ms)
  * test lists all entries on index through support case (7.0ms)
  * test does not update chosen resource and renders errors when data is invalid (4.4ms)
  * test deletes chosen resource (2.9ms)

Hal.OrderControllerTest
  * test lists all entries on index (1.6ms)
  * test lists a fake order for serial number products (3.5ms)
  * test lists all entries for a given user (3.5ms)
  * test shows chosen resource (2.4ms)
  * test does not show resource and instead throw error when id is nonexistent (1.6ms)

Hal.OrderProductControllerTest
  * test lists all entries on index (2.3ms)
  * test shows chosen resource (3.8ms)
  * test renders page not found when id is nonexistent (2.3ms)

Hal.OrderProductOptionControllerTest
  * test lists all entries on index (2.5ms)
  * test shows chosen resource (4.8ms)
  * test renders page not found when id is nonexistent (2.3ms)

Hal.EmployeeProfileControllerTest
  * test lists all entries on index (2.0ms)
  * test shows chosen resource (2.8ms)
  * test renders page not found when id is nonexistent (2.4ms)

Hal.LeadControllerTest
  * test filters by  when provided (22.8ms)
  * test lists all entries on index (8.5ms)
  * test creates resource and returns a 204 No Content when data is valid (10.1ms)
  * test does not create resource and renders errors when data is invalid (4.8ms)

Hal.LeadGenCampaignControllerTest
  * test shows campaign by name (5.3ms)
  * test lists all campaigns (4.2ms)
  * test renders 404 not found when name is nonexistent (2.9ms)
  * test returns CSV of campaign (3.4ms)

Hal.DepartmentControllerTest
  * test lists all entries on index (2.3ms)
  * test shows chosen resource (2.9ms)
  * test renders page not found when id is nonexistent (10.7ms)

Hal.CartProductControllerTest
  * test lists all entries on index (1.5ms)
  * test creates a resource with components (19.1ms)
  * test creates and renders resource when data is valid (17.8ms)
  * test does not show resource and instead throw error when id is nonexistent (2.7ms)
  * test does not create resource and renders errors when data is invalid (4.5ms)
  * test updates and renders chosen resource when data is valid (8.3ms)
  * test does not create resource when data is valid but cart is invalid (0.9ms)
  * test shows chosen resource (3.4ms)
  * test does not update chosen resource and renders errors when data is invalid (2.7ms)
  * test deletes chosen resource (2.9ms)

Hal.AddressControllerTest
  * test lists all entries for a given user (3.7ms)
  * test lists all entries on index (2.5ms)
  * test shows chosen resource (3.1ms)
  * test creates and renders resource when data is valid (55.1ms)
  * test does not show resource and instead throw error when id is nonexistent (4.0ms)
  * test does not create resource and renders errors when data is invalid (53.0ms)
  * test soft deletes chosen resource (5.4ms)

Hal.ComponentControllerTest
  * test does not show resource and instead throw error when id is nonexistent (3.0ms)
  * test shows chosen resource (3.0ms)
  * test lists all entries on index (2.6ms)
  * test creates and renders resource when data is valid (2.7ms)
  * test updates and renders chosen resource when data is valid (3.7ms)
  * test does not create resource and renders errors when data is invalid (2.4ms)
  * test does not update chosen resource and renders errors when data is invalid (3.0ms)
  * test deletes chosen resource (3.2ms)

Hal.CartControllerTest
  * test lists all entries on index (5.3ms)
  * test does not show resource and instead throw error when id is nonexistent (1.0ms)
  * test shows chosen resource (1.4ms)
  * test creates and renders resource (1.0ms)
  * test deletes chosen resource (1.6ms)

Hal.UserSocketTest
  * test authentication submitting an API token sets the current user (1.5ms)
  * test authentication anonymous users are connected (0.1ms)
  * test authentication submitting an invalid API token returns an error (0.3ms)
  * test identification owned sockets are named for their user id (0.6ms)
  * test identification anonymous sockets have no name (0.1ms)

Hal.UserChannelTest
  * test authorization unknown records are rejected (4.1ms)
  * test authorization authorized record collections are accepted (1.5ms)
  * test authorization authorized records are accepted (2.6ms)

Hal.TweetStormVideoChannelTest
  * test authorization unknown records are rejected (2.1ms)
  * test authorization authorized record collections are accepted (2.0ms)
  * test authorization authorized records are accepted (2.9ms)

Hal.CountryControllerTest
  * test lists all entries on index (1.6ms)

Hal.TweetStormChannelTest
  * test authorization authorized record collections are accepted (2.0ms)
  * test authorization unknown records are rejected (1.9ms)
  * test authorization authorized records are accepted (2.5ms)
  * test broadcasts are pushed to the client (2.0ms)

Hal.ProductChannelTest
  * test authorization unknown records are rejected (2.7ms)
  * test authorization authorized record collections are accepted (1.9ms)
  * test authorization authorized records are accepted (2.7ms)

Hal.SurveyChannelTest
  * test authorization unknown records are rejected (2.2ms)
  * test authorization authorized record collections are accepted (1.9ms)
  * test authorization authorized records are accepted (2.9ms)

Hal.ProductTechSpecChannelTest
  * test authorization unknown records are rejected (2.1ms)
  * test authorization authorized record collections are accepted (2.3ms)
  * test authorization authorized records are accepted (3.0ms)

Hal.SupportCaseChannelTest
  * test authorization unknown records are rejected (1.9ms)
  * test authorization authorized record collections are accepted (1.7ms)
  * test authorization authorized records are accepted (3.7ms)

Hal.ProductOptionComponentChannelTest
  * test authorization unknown records are rejected (2.0ms)
  * test authorization authorized record collections are accepted (2.1ms)
  * test authorization authorized records are accepted (3.1ms)

Hal.TransactionMethodChannelTest
  * test authorization unknown records are rejected (2.1ms)
  * test authorization authorized record collections are accepted (1.4ms)
  * test authorization authorized records are accepted (2.7ms)

Hal.ProductOptionChannelTest
  * test authorization unknown records are rejected (1.9ms)
  * test authorization authorized record collections are accepted (1.7ms)
  * test authorization authorized records are accepted (2.6ms)

Hal.CountryChannelTest
  * test authorization unknown records are rejected (1.9ms)
  * test authorization authorized record collections are accepted (1.8ms)
  * test authorization authorized records are accepted (2.1ms)

Hal.LeadChannelTest
  * test authorization unknown records are rejected (1.9ms)
  * test authorization authorized record collections are accepted (1.4ms)
  * test authorization authorized records are accepted (2.6ms)

Hal.OrderChannelTest
  * test authorization unknown records are rejected (2.2ms)
  * test authorization authorized record collections are accepted (1.8ms)
  * test authorization authorized records are accepted (2.7ms)

Hal.AddressChannelTest
  * test authorization unknown records are rejected (2.1ms)
  * test authorization authorized record collections are accepted (1.8ms)
  * test authorization authorized records are accepted (2.5ms)

Hal.MessageChannelTest
  * test authorization unknown records are rejected (1.9ms)
  * test authorization authorized record collections are accepted (1.5ms)
  * test authorization authorized records are accepted (3.9ms)

Hal.CartChannelTest
  * test authorization unknown records are rejected (2.0ms)
  * test authorization authorized record collections are accepted (1.8ms)
  * test authorization authorized records are accepted (2.6ms)

Hal.ComponentChannelTest
  * test authorization unknown records are rejected (1.8ms)
  * test authorization authorized record collections are accepted (1.5ms)
  * test authorization authorized records are accepted (2.5ms)

Hal.CartProductChannelTest
  * test authorization unknown records are rejected (2.0ms)
  * test authorization authorized record collections are accepted (1.7ms)
  * test authorization authorized records are accepted (3.2ms)


Finished in 3.1 seconds
407 tests, 0 failures, 2 skipped

Randomized with seed 285067
ben@pop-os:~/Projects/hal$ mix test --trace
Compiling 176 files (.ex)
Generated hal app

Hal.EncryptorTest
  * test generates encrypted strings matching those generared by Joshua (5.4ms)
  * test decrypts strings encrypted by Joshua (0.1ms)

Hal.NotificationTest

Hal.SupportActionTest
  * test performing an illegal action returns an error (86.9ms)
  * test performing a legal action succeeds (43.6ms)
  * test performing an action as an unsupported role returns an error (16.4ms)
  * test completing a legal action resolves requirements (34.5ms)
  * test performing an action as an unauthenticated user returns an error (22.7ms)
  * test completing a legal action creates new requirements (60.4ms)
  * test invokes a system action check after a successful action is performed (23.5ms)

Hal.Type.JSONTest
  * test type is a string (0.00ms)
  * test cast accepts anything (0.00ms)
  * test dump allows setting NULL (0.00ms)
  * test dump stringifies to JSON (17.5ms)
  * test load hydrates JSON (6.9ms)
  * test load hydrates NULL columns (0.00ms)

JunctionBox.ParserTest
  * test handles bare strings (0.01ms)
  * test parses dot separated include paths (0.00ms)
  * test only parses one level deep (0.00ms)
  * test removes duplicates (0.01ms)

Hal.Type.OrderStatusTest
  * test cast rejects unknown statuses (0.00ms)
  * test cast accepts strings, atoms, and ints (0.00ms)
  * test dumping an atom produces an integer (0.00ms)
  * test loading an integer produces an atom (0.00ms)

Hal.Type.UnixTimestampTest
  * test casts ISO 8601 strings to datetimes (0.04ms)
  * test type is an integer (0.00ms)
  * test dumping a datetime object produces an integer timestamp (0.00ms)
  * test loading a timestamp returns a datetime object (0.01ms)

Hal.Type.IdListTest
  * test cast returns lists of integers unaltered (0.00ms)
  * test type is a string (0.00ms)
  * test cast returns an error for non-list types (0.00ms)
  * test dumping an empty list produces a JSON array containing the empty string (0.00ms)
  * test dumping a list of integers produces a JSON array of integer strings (0.00ms)
  * test loading a JSON array returns a list of integers (0.04ms)
  * test loading a JSON array containing the empty string returns an empty list (0.00ms)

Hal.Type.CommaSeparatedListTest
  * test cast returns lists of strings unaltered (0.00ms)
  * test type is a string (0.00ms)
  * test cast returns an error for non-list types (0.00ms)
  * test dumping an empty list produces nil (0.00ms)
  * test dumping a list of strings produces a comma separated list of strings (0.00ms)
  * test loading a string returns a list of strings (0.00ms)
  * test loading nil returns an empty list (0.00ms)

Hal.Plug.AuthenticatorTest
  * test assigns current_user if a valid auth header is provided (17.3ms)
  * test does nothing if no authentication header is present (19.2ms)
  * test returns a 401 and halts if an invalid auth header is present (13.7ms)
  * test returns a 401 and halts if an expired token is provided (4.5ms)
  * test returns a 401 and halts if a malformed auth header is present (5.1ms)
  * test returns a 401 and halts if multiple authentication headers are provided (13.5ms)
  * test allows an authentication token to be provided as a GET parameter (34.7ms)

JunctionBoxTest
  * test includes links if asked for (0.3ms)
  * test passes through normal requests unaltered (0.1ms)
  * test only alters GET requests (0.1ms)
  * test handles includes for nonexistent links (0.1ms)
  * test can include grandchildren (0.5ms)
  * test handles errors on the original request (3.2ms)
  * test handles errors on child requests (0.2ms)

Hal.ErrorViewTest
  * test renders 404.json (0.3ms)
  * test render 500.json (0.3ms)
  * test render any other (1.0ms)

Hal.UserTest
  * test changeset with valid attributes (0.4ms)
  * test changeset with invalid attributes (0.2ms)
  * test setting a password generates hashes matching the legacy system (0.2ms)
  * test changing the email also sets the username (0.3ms)
  * test authentication matches against hashes (2.0ms)
  * test recognizes admins and superadmins (6.2ms)

Hal.UserKeyTest
  * test changeset with invalid attributes (0.3ms)
  * test changeset with valid attributes (0.1ms)
  * test door is generated if not present (0.2ms)
  * test door is unaltered if present (0.1ms)

Hal.SurveyTest
  * test create changeset with valid attributes (0.7ms)
  * test create changeset with invalid attributes (0.2ms)
  * test update changeset fails if response_timestamp is already set (0.2ms)
  * test update changeset with valid attributes (0.2ms)
  * test update changeset with invalid attributes (4.7ms)
  * test allow exactly one of order, ticket, or question id (0.3ms)

Hal.TweetStormVideoTest
  * test changeset with valid attributes (0.2ms)
  * test changeset with invalid attributes (0.2ms)
  * test summarizes unlock conditions (0.1ms)

Hal.TransactionMethodTest
  * test changeset with valid attributes (0.1ms)
  * test changeset with invalid attributes (0.1ms)
  * test soft delete marks an address as removed (0.1ms)

Hal.TweetStormTest
  * test changeset with valid attributes (0.1ms)
  * test changeset with invalid attributes (0.1ms)

Hal.SupportCaseTest
  * test changeset with valid attributes (0.2ms)
  * test actions lists the available actions for a given role (2.5ms)
  * test changeset with invalid attributes (0.2ms)
  * test actions lists whether actions resolve requirements (2.1ms)
  * test recognizes when it is closed (7.1ms)

Hal.SupportCaseRequirementTest
  * test changeset with valid attributes (0.1ms)
  * test changeset with invalid attributes (0.2ms)

Hal.SupplierTest
  * test changeset with valid attributes (0.2ms)
  * test changeset with invalid attributes (0.1ms)

Hal.MessageTest
  * test authorization anyone can create a message (2.1ms)
  * test sets the timestamp (0.2ms)
  * test changeset with invalid attributes (0.1ms)
  * test authorization customers can read messages on objects they own if and only if the customer visible flag is set (7.8ms)
  * test authorization only admins can edit messages (7.0ms)
  * test authorization admins can read all messages (2.4ms)
  * test changeset with valid attributes (0.1ms)
  * test authorization admins are scoped to all records (2.3ms)
  * test authorization users can see messages that belong to objects they own and have the customer visible flag set (7.6ms)

Hal.ProductTechSpecTest
  * test changeset with valid attributes (0.2ms)
  * test changeset with invalid attributes (0.2ms)

Hal.ProductTest
  * test changeset with valid attributes (0.2ms)
  * test changeset with invalid attributes (0.2ms)

Hal.RoleTest
  * test changeset with valid attributes (0.1ms)
  * test changeset with invalid attributes (0.2ms)

Hal.ProductOptionComponentTest
  * test changeset with valid attributes (0.2ms)
  * test changeset with invalid attributes (0.2ms)

Hal.ProductOptionTest
  * test changeset with valid attributes (0.1ms)
  * test changeset with invalid attributes (0.2ms)

Hal.ProductSpecTest
  * test changeset with valid attributes (0.1ms)
  * test changeset with invalid attributes (0.1ms)

Hal.LeadTest
  * test changeset with invalid attributes (0.1ms)
  * test changeset with valid attributes (0.1ms)
  * test changeset with duplicate email is invalid (45.3ms)
  * test changeset with attached user pulls data from user record (4.0ms)

Hal.ProductCalloutTest
  * test changeset with valid attributes (0.7ms)
  * test changeset with invalid attributes (0.6ms)

Hal.ProductDetailTest
  * test changeset with valid attributes (0.7ms)
  * test changeset with invalid attributes (0.6ms)

Hal.AddressTest
  * test changeset with invalid attributes (266.4ms)
  * test changeset with valid attributes (51.6ms)
  * test soft delete marks an address as removed (0.2ms)
  * test equivalency (0.2ms)

Hal.CountryTest
  * test changeset with valid attributes (3.8ms)
  * test upcases name and region before storage (0.2ms)
  * test changeset with invalid attributes (0.1ms)
  * test accepts 'shipping' instead of 'enabled' (0.2ms)
  * test some known countries require a zip code (0.2ms)

Hal.CartProductTest
  * test changeset with invalid attributes (0.2ms)
  * test changeset with valid attributes (0.1ms)
  * test creating a changeset sets the hash (0.2ms)
  * test allows setting component ids (16.7ms)

Hal.ComponentTest
  * test changeset with valid attributes (0.2ms)
  * test changeset with invalid attributes (0.2ms)

Hal.CartTest
  * test changeset with valid attributes (0.1ms)

Hal.Accounts.EmployeeProfileTest
  * test changeset with valid attributes (0.2ms)
  * test changeset with invalid attributes (0.2ms)

Hal.Accounts.DepartmentTest
  * test changeset with valid attributes (0.2ms)
  * test changeset with invalid attributes (2.8ms)

Stripe.APITest

Hal.SupportActions.SelectShippingAddressTest
  * test resolves the shipping address requirement (2.0ms)
  * test does not create any new requirements (1.8ms)
  * test resolving with a valid address id completes successfully (5.7ms)
  * test attempting to resolve without an address id fails (2.6ms)
  * test attempting to resolve with an address not owned by the support case owner returns an error (3.7ms)
  * test resolving with an invalid address id returns an error (2.6ms)

Hal.SupportActions.SelectTransactionMethodTest
  * test availability only available if the needs transaction method requirement is present (15.5ms)
  * test requirements does not create any new requirements (2.6ms)
  * test requirements resolves the needs transaction method requirement (2.4ms)
  * test resolving with a valid transaction method id completes successfully (4.8ms)
  * test resolving adds a message to the support case (5.8ms)

Hal.SupportActions.CreateSupportMessageTest
  * test requirements creates the needs customer message requirement (1.9ms)
  * test requirements resolves the needs support message requirement (1.7ms)
  * test resolving with valid message params completes successfully (3.6ms)
  * test resolving with invalid params returns an error (2.8ms)

Hal.SupportActions.CreateCustomerMessageTest
  * test requirements creates the needs support message requirement (1.8ms)
  * test requirements resolves the needs customer message requirement (1.8ms)
  * test resolving with valid message params completes successfully (3.3ms)
  * test resolving with invalid params returns an error (2.3ms)

Hal.Fulfillment.OrderTest
  * test pricing calculating taxable amount (3.8ms)
  * test pricing subtotals (16.8ms)
  * test pricing subtotal and total for cancelled orders is zero (5.2ms)
  * test pricing applying taxes to a cancelled, returned, or completed order is a no-op (4.3ms)
  * test summarizing an order multiple order products with the same model combine (0.4ms)
  * test summarizing an order empty orders produce empty lists (0.2ms)
  * test pricing totals (skipped)
  * test pricing order balance (even for cancelled orders) (5.5ms)
  * test summarizing an order each order product produces a summary (9.8ms)
  * test changeset with invalid attributes (0.2ms)
  * test pricing order summaries (3.6ms)
  * test pricing applying taxes (10.4ms)
  * test pricing flagging for manual security verification (3.6ms)
  * test changeset with valid attributes (0.2ms)
  * test pricing calibration (skipped)

Hal.Fulfillment.TaxRateTest
  * test changeset with valid attributes (0.1ms)
  * test changeset with invalid attributes (0.2ms)
  * test finding rates for an address (2.4ms)

Hal.Fulfillment.ProductTest
  * test pricing calculating taxable amounts (2.7ms)
  * test changeset with invalid attributes (0.1ms)
  * test changeset with valid attributes (0.2ms)
  * test pricing calculating prices (14.2ms)
  * test pricing applying surcharges (13.7ms)
  * test pricing calculating costs (8.2ms)
  * test pricing deducting returns (6.8ms)
  * test pricing calibration (15.4ms)

Hal.PaymentProcessor.StripeTest
  * test creates a transaction method (72.0ms)

Hal.UserControllerTest
  * test creates and renders resource when data is valid (8.5ms)
  * test shows chosen resource (3.2ms)
  * test does not create resource and renders errors when data is invalid (1.8ms)
  * test updates password when provided (3.4ms)
  * test updates and renders chosen resource when data is valid (4.1ms)
  * test does not update chosen resource and renders errors when data is invalid (2.4ms)
  * test generates a CSV of newsletter subscribers (9.6ms)

Hal.Fulfillment.SurchargeRateTest
  * test changeset with valid attributes (0.2ms)
  * test finding applicable surcharges locating a surcharge with all fields empty or set to "ALL" (1.3ms)
  * test changeset with invalid attributes (0.3ms)
  * test finding applicable surcharges locating a surcharge with a matching product ID (1.9ms)
  * test finding applicable surcharges locating a surcharge with a matching state or country (2.2ms)

Hal.Fulfillment.ReturnTest
  * test changeset with valid attributes (0.2ms)
  * test changeset with invalid attributes (0.2ms)

Hal.TweetStormControllerTest
  * test lists all entries on index (16.7ms)
  * test does not create resource and renders errors when data is invalid (7.3ms)
  * test creates and renders resource when data is valid (9.2ms)
  * test does not show resource and instead throw error when id is nonexistent (12.3ms)
  * test updates and renders chosen resource when data is valid (3.9ms)
  * test deletes chosen resource (13.6ms)
  * test does not update chosen resource and renders errors when data is invalid (4.9ms)
  * test shows chosen resource (13.6ms)
  * test shows a summary of the tweet storm (3.7ms)
  * test registering a new tweet increments the tweet counter (6.7ms)

Hal.Fulfillment.ProductOptionTest

Hal.Fulfillment.PriceModificationTest
  * test changeset with valid attributes (1.6ms)
  * test changeset with invalid attributes (0.2ms)

Hal.ProductTechSpecControllerTest
  * test shows chosen resource (3.1ms)
  * test does not create resource and renders errors when data is invalid (2.1ms)
  * test broadcasts to the resource's channel when created (2.8ms)
  * test creates and renders resource when data is valid (3.4ms)
  * test lists all children of a product on child index (5.4ms)
  * test updates and renders chosen resource when data is valid (3.6ms)
  * test does not update chosen resource and renders errors when data is invalid (2.8ms)
  * test lists all entries on index (3.3ms)
  * test broadcasts to the resource's channel when updated (5.9ms)
  * test renders page not found when id is nonexistent (2.9ms)
  * test deletes chosen resource (3.5ms)
  * test broadcasts to the resource's channel when deleted (3.2ms)

Hal.TransactionMethodControllerTest
  * test lists all entries on index (2.3ms)
  * test lists all transaction methods for a given user (3.7ms)
  * test does not show resource and instead throw error when id is nonexistent (2.5ms)
  * test shows chosen resource (3.1ms)
  * test creates and renders resource when data is valid (57.3ms)
  * test soft deletes chosen resource (3.4ms)

Hal.TweetStormVideoControllerTest
  * test does not show resource and instead throw error when id is nonexistent (2.7ms)
  * test shows chosen resource (2.6ms)
  * test lists all entries on index (3.0ms)
  * test creates and renders resource when data is valid (3.0ms)
  * test updates and renders chosen resource when data is valid (4.0ms)
  * test does not create resource and renders errors when data is invalid (2.6ms)
  * test does not update chosen resource and renders errors when data is invalid (3.8ms)
  * test deletes chosen resource (4.7ms)

Hal.SupportCaseControllerTest
  * test lists all entries on index (3.0ms)
  * test does not create resource and renders errors when data is invalid (2.8ms)
  * test creates and renders resource when data is valid (9.4ms)
  * test renders page not found when id is nonexistent (2.8ms)
  * test updates and renders chosen resource when data is valid (7.8ms)
  * test deletes chosen resource (4.9ms)
  * test does not update chosen resource and renders errors when data is invalid (5.0ms)
  * test shows chosen resource (5.6ms)
  * test performing actions performs a valid action (5.0ms)
  * test performing actions does not perform action and renders errors when data is invalid (5.2ms)

Hal.SurveyControllerTest
  * test shows chosen resource (1.8ms)
  * test does not show resource and instead throw error when id is nonexistent (1.5ms)
  * test shows survey by hash (10.7ms)
  * test updates and renders chosen resource when data is valid (2.4ms)
  * test does not update chosen resource and renders errors when data is invalid (2.3ms)

Hal.ProductOptionControllerTest
  * test lists all entries on index (2.0ms)
  * test lists entries in sort order (2.5ms)
  * test doesn't list inactive entries (12.6ms)
  * test shows chosen resource (2.0ms)
  * test does not show resource and instead throw error when id is nonexistent (1.5ms)

Hal.SessionControllerTest
  * test creates and returns an auth token when valid credentials are provided (2.3ms)
  * test returns a 401 unauthorized when an invalid email or password is provided (1.4ms)
  * test marks a session as expired (3.7ms)

Hal.ProductCalloutControllerTest
  * test renders page not found when id is nonexistent (2.4ms)
  * test shows chosen resource (2.3ms)
  * test lists all entries on index (2.1ms)
  * test creates and renders resource when data is valid (2.5ms)
  * test updates and renders chosen resource when data is valid (2.6ms)
  * test does not create resource and renders errors when data is invalid (2.6ms)
  * test does not update chosen resource and renders errors when data is invalid (2.9ms)
  * test deletes chosen resource (3.8ms)

Hal.ProductControllerTest
  * test filters by type when provided (2.0ms)
  * test lists entries in sort order (2.6ms)
  * test lists all entries on index (0.9ms)
  * test filters by series when provided (2.7ms)
  * test finds resource by model number (2.1ms)
  * test shows chosen resource (1.6ms)
  * test includes details and options when requested (3.0ms)
  * test does not show resource and instead throw error when id is nonexistent (0.9ms)

Hal.ProductOptionComponentControllerTest
  * test lists all entries on index (1.9ms)
  * test lists entries in sort order (2.9ms)
  * test doesn't list inactive entries (11.4ms)
  * test shows chosen resource (2.5ms)
  * test does not show resource and instead throw error when id is nonexistent (1.6ms)

Hal.MessageControllerTest
  * test renders page not found when id is nonexistent (2.5ms)
  * test omits links for missing associations (3.0ms)
  * test shows chosen resource (15.8ms)
  * test creates and renders resource when data is valid (3.3ms)
  * test updates and renders chosen resource when data is valid (5.1ms)
  * test does not create resource and renders errors when data is invalid (1.9ms)
  * test lists all entries on index through support case (7.0ms)
  * test does not update chosen resource and renders errors when data is invalid (4.4ms)
  * test deletes chosen resource (2.9ms)

Hal.OrderControllerTest
  * test lists all entries on index (1.6ms)
  * test lists a fake order for serial number products (3.5ms)
  * test lists all entries for a given user (3.5ms)
  * test shows chosen resource (2.4ms)
  * test does not show resource and instead throw error when id is nonexistent (1.6ms)

Hal.OrderProductControllerTest
  * test lists all entries on index (2.3ms)
  * test shows chosen resource (3.8ms)
  * test renders page not found when id is nonexistent (2.3ms)

Hal.OrderProductOptionControllerTest
  * test lists all entries on index (2.5ms)
  * test shows chosen resource (4.8ms)
  * test renders page not found when id is nonexistent (2.3ms)

Hal.EmployeeProfileControllerTest
  * test lists all entries on index (2.0ms)
  * test shows chosen resource (2.8ms)
  * test renders page not found when id is nonexistent (2.4ms)

Hal.LeadControllerTest
  * test filters by  when provided (22.8ms)
  * test lists all entries on index (8.5ms)
  * test creates resource and returns a 204 No Content when data is valid (10.1ms)
  * test does not create resource and renders errors when data is invalid (4.8ms)

Hal.LeadGenCampaignControllerTest
  * test shows campaign by name (5.3ms)
  * test lists all campaigns (4.2ms)
  * test renders 404 not found when name is nonexistent (2.9ms)
  * test returns CSV of campaign (3.4ms)

Hal.DepartmentControllerTest
  * test lists all entries on index (2.3ms)
  * test shows chosen resource (2.9ms)
  * test renders page not found when id is nonexistent (10.7ms)

Hal.CartProductControllerTest
  * test lists all entries on index (1.5ms)
  * test creates a resource with components (19.1ms)
  * test creates and renders resource when data is valid (17.8ms)
  * test does not show resource and instead throw error when id is nonexistent (2.7ms)
  * test does not create resource and renders errors when data is invalid (4.5ms)
  * test updates and renders chosen resource when data is valid (8.3ms)
  * test does not create resource when data is valid but cart is invalid (0.9ms)
  * test shows chosen resource (3.4ms)
  * test does not update chosen resource and renders errors when data is invalid (2.7ms)
  * test deletes chosen resource (2.9ms)

Hal.AddressControllerTest
  * test lists all entries for a given user (3.7ms)
  * test lists all entries on index (2.5ms)
  * test shows chosen resource (3.1ms)
  * test creates and renders resource when data is valid (55.1ms)
  * test does not show resource and instead throw error when id is nonexistent (4.0ms)
  * test does not create resource and renders errors when data is invalid (53.0ms)
  * test soft deletes chosen resource (5.4ms)

Hal.ComponentControllerTest
  * test does not show resource and instead throw error when id is nonexistent (3.0ms)
  * test shows chosen resource (3.0ms)
  * test lists all entries on index (2.6ms)
  * test creates and renders resource when data is valid (2.7ms)
  * test updates and renders chosen resource when data is valid (3.7ms)
  * test does not create resource and renders errors when data is invalid (2.4ms)
  * test does not update chosen resource and renders errors when data is invalid (3.0ms)
  * test deletes chosen resource (3.2ms)

Hal.CartControllerTest
  * test lists all entries on index (5.3ms)
  * test does not show resource and instead throw error when id is nonexistent (1.0ms)
  * test shows chosen resource (1.4ms)
  * test creates and renders resource (1.0ms)
  * test deletes chosen resource (1.6ms)

Hal.UserSocketTest
  * test authentication submitting an API token sets the current user (1.5ms)
  * test authentication anonymous users are connected (0.1ms)
  * test authentication submitting an invalid API token returns an error (0.3ms)
  * test identification owned sockets are named for their user id (0.6ms)
  * test identification anonymous sockets have no name (0.1ms)

Hal.UserChannelTest
  * test authorization unknown records are rejected (4.1ms)
  * test authorization authorized record collections are accepted (1.5ms)
  * test authorization authorized records are accepted (2.6ms)

Hal.TweetStormVideoChannelTest
  * test authorization unknown records are rejected (2.1ms)
  * test authorization authorized record collections are accepted (2.0ms)
  * test authorization authorized records are accepted (2.9ms)

Hal.CountryControllerTest
  * test lists all entries on index (1.6ms)

Hal.TweetStormChannelTest
  * test authorization authorized record collections are accepted (2.0ms)
  * test authorization unknown records are rejected (1.9ms)
  * test authorization authorized records are accepted (2.5ms)
  * test broadcasts are pushed to the client (2.0ms)

Hal.ProductChannelTest
  * test authorization unknown records are rejected (2.7ms)
  * test authorization authorized record collections are accepted (1.9ms)
  * test authorization authorized records are accepted (2.7ms)

Hal.SurveyChannelTest
  * test authorization unknown records are rejected (2.2ms)
  * test authorization authorized record collections are accepted (1.9ms)
  * test authorization authorized records are accepted (2.9ms)

Hal.ProductTechSpecChannelTest
  * test authorization unknown records are rejected (2.1ms)
  * test authorization authorized record collections are accepted (2.3ms)
  * test authorization authorized records are accepted (3.0ms)

Hal.SupportCaseChannelTest
  * test authorization unknown records are rejected (1.9ms)
  * test authorization authorized record collections are accepted (1.7ms)
  * test authorization authorized records are accepted (3.7ms)

Hal.ProductOptionComponentChannelTest
  * test authorization unknown records are rejected (2.0ms)
  * test authorization authorized record collections are accepted (2.1ms)
  * test authorization authorized records are accepted (3.1ms)

Hal.TransactionMethodChannelTest
  * test authorization unknown records are rejected (2.1ms)
  * test authorization authorized record collections are accepted (1.4ms)
  * test authorization authorized records are accepted (2.7ms)

Hal.ProductOptionChannelTest
  * test authorization unknown records are rejected (1.9ms)
  * test authorization authorized record collections are accepted (1.7ms)
  * test authorization authorized records are accepted (2.6ms)

Hal.CountryChannelTest
  * test authorization unknown records are rejected (1.9ms)
  * test authorization authorized record collections are accepted (1.8ms)
  * test authorization authorized records are accepted (2.1ms)

Hal.LeadChannelTest
  * test authorization unknown records are rejected (1.9ms)
  * test authorization authorized record collections are accepted (1.4ms)
  * test authorization authorized records are accepted (2.6ms)

Hal.OrderChannelTest
  * test authorization unknown records are rejected (2.2ms)
  * test authorization authorized record collections are accepted (1.8ms)
  * test authorization authorized records are accepted (2.7ms)

Hal.AddressChannelTest
  * test authorization unknown records are rejected (2.1ms)
  * test authorization authorized record collections are accepted (1.8ms)
  * test authorization authorized records are accepted (2.5ms)

Hal.MessageChannelTest
  * test authorization unknown records are rejected (1.9ms)
  * test authorization authorized record collections are accepted (1.5ms)
  * test authorization authorized records are accepted (3.9ms)

Hal.CartChannelTest
  * test authorization unknown records are rejected (2.0ms)
  * test authorization authorized record collections are accepted (1.8ms)
  * test authorization authorized records are accepted (2.6ms)

Hal.ComponentChannelTest
  * test authorization unknown records are rejected (1.8ms)
  * test authorization authorized record collections are accepted (1.5ms)
  * test authorization authorized records are accepted (2.5ms)

Hal.CartProductChannelTest
  * test authorization unknown records are rejected (2.0ms)
  * test authorization authorized record collections are accepted (1.7ms)
  * test authorization authorized records are accepted (3.2ms)


Finished in 3.1 seconds
407 tests, 0 failures, 2 skipped

Randomized with seed 285067

Imagine

Workflow Streamlined

Pop!_OS gets out of your way, maximizing screen real estate for your projects and communications. Organize your workflow with advanced window management, workspaces, and keyboard shortcuts for navigation.

Organize your workflow with dynamic workspaces.

Snap windows side by side.

Navigate your entire desktop by keyboard.

Imagine

A More Intelligent World

Harness the potential of machine learning and artificial intelligence. Teach computers to discover planets, a car to drive, or a city to manage itself. With Linux at its core, Pop!_OS provides native access to the toolkits used for creating a smarter tomorrow.

Imagine

Powerful Features, Beautifully Expressed

We’re focusing on you in a different way than anyone else. Our approach centers on user testing and careful analysis with the singular goal of delivering the most productive and gorgeous platform for developing your next creation. It’s not just about making the easiest tool, it’s about making the best tool. And we’re just getting started.

View apps and add to favorites for rapid access.

Prevent eye strain with intelligent hue shifting.

Imagine

Discovery Accelerated

Unleash your potential with Pop!_OS. Discover what’s possible at the cross-roads of IOT and AI. Calculate the size of stars or a path to Mars. Smash atoms and fold proteins. Peer further than ever before.

What Will You Make