From aa39e0c616db2e1e9b06529c6c68ae27a961f352 Mon Sep 17 00:00:00 2001 From: Matt Taylor Date: Sat, 17 Jan 2026 16:12:13 -0800 Subject: [PATCH 01/10] adding modified schemas --- .../schema/admin/modify/request.rb | 21 ++++++++++ .../schema/admin/modify/response.rb | 16 ++++++++ .../schema/admin/modify_role/request.rb | 16 ++++++++ .../schema/admin/modify_role/response.rb | 16 ++++++++ .../schema/admin/show/request.rb | 13 +++++++ .../schema/admin/show/response.rb | 16 ++++++++ lib/command_tower/schema/admin/users.rb | 16 -------- .../auth/plain_text/create_user/request.rb | 22 +++++++++++ .../auth/plain_text/create_user/response.rb | 20 ++++++++++ .../auth/plain_text/email_verify/request.rb | 15 ++++++++ .../auth/plain_text/email_verify/response.rb | 15 ++++++++ .../plain_text/email_verify/send_request.rb | 13 +++++++ .../plain_text/email_verify/send_response.rb | 15 ++++++++ .../schema/auth/plain_text/login/request.rb | 19 ++++++++++ .../schema/auth/plain_text/login/response.rb | 20 ++++++++++ .../login_identifier_valid/request.rb | 17 +++++++++ .../login_identifier_valid/response.rb | 19 ++++++++++ .../entities/inbox/message_blast_entity.rb | 20 ++++++++++ .../schema/entities/inbox/message_entity.rb | 16 ++++++++ .../schema/inbox/blast/create/request.rb | 19 ++++++++++ .../schema/inbox/blast/create/response.rb | 22 +++++++++++ .../schema/inbox/blast/delete/request.rb | 17 +++++++++ .../schema/inbox/blast/delete/response.rb | 16 ++++++++ .../schema/inbox/blast/metadata/request.rb | 15 ++++++++ .../schema/inbox/blast/metadata/response.rb | 18 +++++++++ .../schema/inbox/blast/modify/request.rb | 19 ++++++++++ .../schema/inbox/blast/modify/response.rb | 22 +++++++++++ .../schema/inbox/blast/show/request.rb | 17 +++++++++ .../schema/inbox/blast/show/response.rb | 18 +++++++++ .../schema/inbox/blast_request.rb | 15 -------- .../schema/inbox/blast_response.rb | 16 -------- .../schema/inbox/message_blast_entity.rb | 16 -------- .../schema/inbox/message_blast_metadata.rb | 16 -------- .../schema/inbox/message_entity.rb | 14 ------- .../schema/inbox/messages/ack/request.rb | 15 ++++++++ .../schema/inbox/messages/ack/response.rb | 18 +++++++++ .../schema/inbox/messages/delete/request.rb | 15 ++++++++ .../schema/inbox/messages/delete/response.rb | 18 +++++++++ .../inbox/messages/delete_by_id/request.rb | 17 +++++++++ .../inbox/messages/delete_by_id/response.rb | 18 +++++++++ .../schema/inbox/messages/message/request.rb | 17 +++++++++ .../schema/inbox/messages/message/response.rb | 18 +++++++++ .../schema/inbox/messages/metadata/request.rb | 15 ++++++++ .../inbox/messages/metadata/response.rb | 18 +++++++++ lib/command_tower/schema/inbox/metadata.rb | 18 --------- lib/command_tower/schema/inbox/modified.rb | 13 ------- .../schema/shared/admin/users.rb | 18 +++++++++ .../shared/inbox/message_blast_metadata.rb | 18 +++++++++ .../schema/shared/inbox/metadata.rb | 20 ++++++++++ .../schema/shared/inbox/modified.rb | 15 ++++++++ lib/command_tower/schema/shared/page.rb | 13 +++++++ lib/command_tower/schema/shared/pagination.rb | 18 +++++++++ lib/command_tower/schema/shared/user.rb | 38 +++++++++++++++++++ .../schema/user/modify/request.rb | 20 ++++++++++ .../schema/user/modify/response.rb | 16 ++++++++ lib/command_tower/schema/user/show/request.rb | 13 +++++++ .../schema/user/show/response.rb | 16 ++++++++ 57 files changed, 866 insertions(+), 124 deletions(-) create mode 100644 lib/command_tower/schema/admin/modify/request.rb create mode 100644 lib/command_tower/schema/admin/modify/response.rb create mode 100644 lib/command_tower/schema/admin/modify_role/request.rb create mode 100644 lib/command_tower/schema/admin/modify_role/response.rb create mode 100644 lib/command_tower/schema/admin/show/request.rb create mode 100644 lib/command_tower/schema/admin/show/response.rb delete mode 100644 lib/command_tower/schema/admin/users.rb create mode 100644 lib/command_tower/schema/auth/plain_text/create_user/request.rb create mode 100644 lib/command_tower/schema/auth/plain_text/create_user/response.rb create mode 100644 lib/command_tower/schema/auth/plain_text/email_verify/request.rb create mode 100644 lib/command_tower/schema/auth/plain_text/email_verify/response.rb create mode 100644 lib/command_tower/schema/auth/plain_text/email_verify/send_request.rb create mode 100644 lib/command_tower/schema/auth/plain_text/email_verify/send_response.rb create mode 100644 lib/command_tower/schema/auth/plain_text/login/request.rb create mode 100644 lib/command_tower/schema/auth/plain_text/login/response.rb create mode 100644 lib/command_tower/schema/auth/plain_text/login_identifier_valid/request.rb create mode 100644 lib/command_tower/schema/auth/plain_text/login_identifier_valid/response.rb create mode 100644 lib/command_tower/schema/entities/inbox/message_blast_entity.rb create mode 100644 lib/command_tower/schema/entities/inbox/message_entity.rb create mode 100644 lib/command_tower/schema/inbox/blast/create/request.rb create mode 100644 lib/command_tower/schema/inbox/blast/create/response.rb create mode 100644 lib/command_tower/schema/inbox/blast/delete/request.rb create mode 100644 lib/command_tower/schema/inbox/blast/delete/response.rb create mode 100644 lib/command_tower/schema/inbox/blast/metadata/request.rb create mode 100644 lib/command_tower/schema/inbox/blast/metadata/response.rb create mode 100644 lib/command_tower/schema/inbox/blast/modify/request.rb create mode 100644 lib/command_tower/schema/inbox/blast/modify/response.rb create mode 100644 lib/command_tower/schema/inbox/blast/show/request.rb create mode 100644 lib/command_tower/schema/inbox/blast/show/response.rb delete mode 100644 lib/command_tower/schema/inbox/blast_request.rb delete mode 100644 lib/command_tower/schema/inbox/blast_response.rb delete mode 100644 lib/command_tower/schema/inbox/message_blast_entity.rb delete mode 100644 lib/command_tower/schema/inbox/message_blast_metadata.rb delete mode 100644 lib/command_tower/schema/inbox/message_entity.rb create mode 100644 lib/command_tower/schema/inbox/messages/ack/request.rb create mode 100644 lib/command_tower/schema/inbox/messages/ack/response.rb create mode 100644 lib/command_tower/schema/inbox/messages/delete/request.rb create mode 100644 lib/command_tower/schema/inbox/messages/delete/response.rb create mode 100644 lib/command_tower/schema/inbox/messages/delete_by_id/request.rb create mode 100644 lib/command_tower/schema/inbox/messages/delete_by_id/response.rb create mode 100644 lib/command_tower/schema/inbox/messages/message/request.rb create mode 100644 lib/command_tower/schema/inbox/messages/message/response.rb create mode 100644 lib/command_tower/schema/inbox/messages/metadata/request.rb create mode 100644 lib/command_tower/schema/inbox/messages/metadata/response.rb delete mode 100644 lib/command_tower/schema/inbox/metadata.rb delete mode 100644 lib/command_tower/schema/inbox/modified.rb create mode 100644 lib/command_tower/schema/shared/admin/users.rb create mode 100644 lib/command_tower/schema/shared/inbox/message_blast_metadata.rb create mode 100644 lib/command_tower/schema/shared/inbox/metadata.rb create mode 100644 lib/command_tower/schema/shared/inbox/modified.rb create mode 100644 lib/command_tower/schema/shared/page.rb create mode 100644 lib/command_tower/schema/shared/pagination.rb create mode 100644 lib/command_tower/schema/shared/user.rb create mode 100644 lib/command_tower/schema/user/modify/request.rb create mode 100644 lib/command_tower/schema/user/modify/response.rb create mode 100644 lib/command_tower/schema/user/show/request.rb create mode 100644 lib/command_tower/schema/user/show/response.rb diff --git a/lib/command_tower/schema/admin/modify/request.rb b/lib/command_tower/schema/admin/modify/request.rb new file mode 100644 index 0000000..76f422e --- /dev/null +++ b/lib/command_tower/schema/admin/modify/request.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Admin + module Modify + class Request < JsonSchematize::Generator + schema_default option: :dig_type, value: :string + + add_field name: :user_id, type: Integer, required: true + add_field name: :email, type: String, required: false + add_field name: :email_validated, type: JsonSchematize::Boolean, required: false + add_field name: :first_name, type: String, required: false + add_field name: :last_name, type: String, required: false + add_field name: :username, type: String, required: false + add_field name: :verifier_token, type: JsonSchematize::Boolean, required: false + end + end + end + end +end diff --git a/lib/command_tower/schema/admin/modify/response.rb b/lib/command_tower/schema/admin/modify/response.rb new file mode 100644 index 0000000..c20046d --- /dev/null +++ b/lib/command_tower/schema/admin/modify/response.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +require "command_tower/schema/shared/user" + +module CommandTower + module Schema + module Admin + module Modify + class Response < JsonSchematize::Generator + # Response is just the User schema + # We'll use Shared::User directly in the controller + end + end + end + end +end diff --git a/lib/command_tower/schema/admin/modify_role/request.rb b/lib/command_tower/schema/admin/modify_role/request.rb new file mode 100644 index 0000000..c38fe9d --- /dev/null +++ b/lib/command_tower/schema/admin/modify_role/request.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Admin + module ModifyRole + class Request < JsonSchematize::Generator + schema_default option: :dig_type, value: :string + + add_field name: :user_id, type: Integer, required: true + add_field name: :roles, type: Array, required: false + end + end + end + end +end diff --git a/lib/command_tower/schema/admin/modify_role/response.rb b/lib/command_tower/schema/admin/modify_role/response.rb new file mode 100644 index 0000000..54910b8 --- /dev/null +++ b/lib/command_tower/schema/admin/modify_role/response.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +require "command_tower/schema/shared/user" + +module CommandTower + module Schema + module Admin + module ModifyRole + class Response < JsonSchematize::Generator + # Response is just the User schema + # We'll use Shared::User directly in the controller + end + end + end + end +end diff --git a/lib/command_tower/schema/admin/show/request.rb b/lib/command_tower/schema/admin/show/request.rb new file mode 100644 index 0000000..e378fcd --- /dev/null +++ b/lib/command_tower/schema/admin/show/request.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Admin + module Show + class Request < JsonSchematize::Generator + # GET endpoint - no request body validation needed + end + end + end + end +end diff --git a/lib/command_tower/schema/admin/show/response.rb b/lib/command_tower/schema/admin/show/response.rb new file mode 100644 index 0000000..e80043d --- /dev/null +++ b/lib/command_tower/schema/admin/show/response.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +require "command_tower/schema/shared/admin/users" + +module CommandTower + module Schema + module Admin + module Show + class Response < JsonSchematize::Generator + # Response is the Shared::Admin::Users schema + # We'll use it directly in the controller + end + end + end + end +end diff --git a/lib/command_tower/schema/admin/users.rb b/lib/command_tower/schema/admin/users.rb deleted file mode 100644 index 9e9cbfd..0000000 --- a/lib/command_tower/schema/admin/users.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -require "command_tower/schema/user" -require "command_tower/schema/pagination" - -module CommandTower - module Schema - module Admin - class Users < JsonSchematize::Generator - add_field name: :users, array_of_types: true, type: CommandTower::Schema::User - add_field name: :count, type: Integer, required: false - add_field name: :pagination, type: CommandTower::Schema::Pagination, required: false - end - end - end -end diff --git a/lib/command_tower/schema/auth/plain_text/create_user/request.rb b/lib/command_tower/schema/auth/plain_text/create_user/request.rb new file mode 100644 index 0000000..362b2a7 --- /dev/null +++ b/lib/command_tower/schema/auth/plain_text/create_user/request.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Auth + module PlainText + module CreateUser + class Request < JsonSchematize::Generator + schema_default option: :dig_type, value: :string + + add_field name: :first_name, type: String, required: false + add_field name: :last_name, type: String, required: false + add_field name: :username, type: String, required: false + add_field name: :email, type: String, required: false + add_field name: :password, type: String, required: false + add_field name: :password_confirmation, type: String, required: false + end + end + end + end + end +end diff --git a/lib/command_tower/schema/auth/plain_text/create_user/response.rb b/lib/command_tower/schema/auth/plain_text/create_user/response.rb new file mode 100644 index 0000000..63f2c0e --- /dev/null +++ b/lib/command_tower/schema/auth/plain_text/create_user/response.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Auth + module PlainText + module CreateUser + class Response < JsonSchematize::Generator + add_field name: :full_name, type: String + add_field name: :first_name, type: String + add_field name: :last_name, type: String + add_field name: :username, type: String + add_field name: :email, type: String + add_field name: :msg, type: String + end + end + end + end + end +end diff --git a/lib/command_tower/schema/auth/plain_text/email_verify/request.rb b/lib/command_tower/schema/auth/plain_text/email_verify/request.rb new file mode 100644 index 0000000..7e94325 --- /dev/null +++ b/lib/command_tower/schema/auth/plain_text/email_verify/request.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Auth + module PlainText + module EmailVerify + class Request < JsonSchematize::Generator + add_field name: :code, type: String + end + end + end + end + end +end diff --git a/lib/command_tower/schema/auth/plain_text/email_verify/response.rb b/lib/command_tower/schema/auth/plain_text/email_verify/response.rb new file mode 100644 index 0000000..ac640b0 --- /dev/null +++ b/lib/command_tower/schema/auth/plain_text/email_verify/response.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Auth + module PlainText + module EmailVerify + class Response < JsonSchematize::Generator + add_field name: :message, type: String + end + end + end + end + end +end diff --git a/lib/command_tower/schema/auth/plain_text/email_verify/send_request.rb b/lib/command_tower/schema/auth/plain_text/email_verify/send_request.rb new file mode 100644 index 0000000..3c2cfa1 --- /dev/null +++ b/lib/command_tower/schema/auth/plain_text/email_verify/send_request.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Auth + module PlainText + module EmailVerify + class SendRequest < JsonSchematize::Generator; end + end + end + end + end +end diff --git a/lib/command_tower/schema/auth/plain_text/email_verify/send_response.rb b/lib/command_tower/schema/auth/plain_text/email_verify/send_response.rb new file mode 100644 index 0000000..796446e --- /dev/null +++ b/lib/command_tower/schema/auth/plain_text/email_verify/send_response.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Auth + module PlainText + module EmailVerify + class SendResponse < JsonSchematize::Generator + add_field name: :message, type: String + end + end + end + end + end +end diff --git a/lib/command_tower/schema/auth/plain_text/login/request.rb b/lib/command_tower/schema/auth/plain_text/login/request.rb new file mode 100644 index 0000000..279e238 --- /dev/null +++ b/lib/command_tower/schema/auth/plain_text/login/request.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Auth + module PlainText + module Login + class Request < JsonSchematize::Generator + schema_default option: :dig_type, value: :string + + add_field name: :username, type: String, required: false + add_field name: :email, type: String, required: false + add_field name: :password, type: String, required: false + end + end + end + end + end +end diff --git a/lib/command_tower/schema/auth/plain_text/login/response.rb b/lib/command_tower/schema/auth/plain_text/login/response.rb new file mode 100644 index 0000000..f073d28 --- /dev/null +++ b/lib/command_tower/schema/auth/plain_text/login/response.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require "command_tower/schema/shared/user" + +module CommandTower + module Schema + module Auth + module PlainText + module Login + class Response < JsonSchematize::Generator + add_field name: :token, type: String + add_field name: :header_name, type: String + add_field name: :message, type: String + add_field name: :user, type: CommandTower::Schema::Shared::User + end + end + end + end + end +end diff --git a/lib/command_tower/schema/auth/plain_text/login_identifier_valid/request.rb b/lib/command_tower/schema/auth/plain_text/login_identifier_valid/request.rb new file mode 100644 index 0000000..f56e235 --- /dev/null +++ b/lib/command_tower/schema/auth/plain_text/login_identifier_valid/request.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Auth + module PlainText + module LoginIdentifierValid + class Request < JsonSchematize::Generator + schema_default option: :dig_type, value: :string + + add_field name: :identifier, type: String, required: false + end + end + end + end + end +end diff --git a/lib/command_tower/schema/auth/plain_text/login_identifier_valid/response.rb b/lib/command_tower/schema/auth/plain_text/login_identifier_valid/response.rb new file mode 100644 index 0000000..56d07ec --- /dev/null +++ b/lib/command_tower/schema/auth/plain_text/login_identifier_valid/response.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +require "command_tower/schema/shared/user" + +module CommandTower + module Schema + module Auth + module PlainText + module LoginIdentifierValid + class Response < JsonSchematize::Generator + add_field name: :valid, type: JsonSchematize::Boolean + add_field name: :message, type: String + add_field name: :user, type: CommandTower::Schema::Shared::User + end + end + end + end + end +end diff --git a/lib/command_tower/schema/entities/inbox/message_blast_entity.rb b/lib/command_tower/schema/entities/inbox/message_blast_entity.rb new file mode 100644 index 0000000..63ee8db --- /dev/null +++ b/lib/command_tower/schema/entities/inbox/message_blast_entity.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require "command_tower/schema/shared/user" + +module CommandTower + module Schema + module Entities + module Inbox + class MessageBlastEntity < JsonSchematize::Generator + add_field name: :created_by, type: CommandTower::Schema::Shared::User, required: false # to allow metadata call to be fast + add_field name: :text, type: String, required: false # to allow metadata call to be fast + add_field name: :title, type: String + add_field name: :id, type: Integer + add_field name: :existing_users, type: JsonSchematize::Boolean + add_field name: :new_users, type: JsonSchematize::Boolean + end + end + end + end +end diff --git a/lib/command_tower/schema/entities/inbox/message_entity.rb b/lib/command_tower/schema/entities/inbox/message_entity.rb new file mode 100644 index 0000000..d9343b2 --- /dev/null +++ b/lib/command_tower/schema/entities/inbox/message_entity.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Entities + module Inbox + class MessageEntity < JsonSchematize::Generator + add_field name: :title, type: String + add_field name: :id, type: Integer + add_field name: :text, type: String, required: false + add_field name: :viewed, type: JsonSchematize::Boolean + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/blast/create/request.rb b/lib/command_tower/schema/inbox/blast/create/request.rb new file mode 100644 index 0000000..cd0303f --- /dev/null +++ b/lib/command_tower/schema/inbox/blast/create/request.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Inbox + module Blast + module Create + class Request < JsonSchematize::Generator + add_field name: :existing_users, type: JsonSchematize::Boolean + add_field name: :new_users, type: JsonSchematize::Boolean + add_field name: :title, type: String + add_field name: :text, type: String + add_field name: :id, type: Integer, required: false + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/blast/create/response.rb b/lib/command_tower/schema/inbox/blast/create/response.rb new file mode 100644 index 0000000..d08e9f2 --- /dev/null +++ b/lib/command_tower/schema/inbox/blast/create/response.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +require "command_tower/schema/shared/user" + +module CommandTower + module Schema + module Inbox + module Blast + module Create + class Response < JsonSchematize::Generator + add_field name: :created_by, type: CommandTower::Schema::Shared::User + add_field name: :existing_users, type: JsonSchematize::Boolean + add_field name: :new_users, type: JsonSchematize::Boolean + add_field name: :title, type: String + add_field name: :text, type: String + add_field name: :id, type: Integer, required: false + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/blast/delete/request.rb b/lib/command_tower/schema/inbox/blast/delete/request.rb new file mode 100644 index 0000000..5638fde --- /dev/null +++ b/lib/command_tower/schema/inbox/blast/delete/request.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Inbox + module Blast + module Delete + class Request < JsonSchematize::Generator + schema_default option: :dig_type, value: :string + + add_field name: :id, type: Integer, required: false + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/blast/delete/response.rb b/lib/command_tower/schema/inbox/blast/delete/response.rb new file mode 100644 index 0000000..60bbea0 --- /dev/null +++ b/lib/command_tower/schema/inbox/blast/delete/response.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Inbox + module Blast + module Delete + class Response < JsonSchematize::Generator + add_field name: :id, type: Integer + add_field name: :msg, type: String + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/blast/metadata/request.rb b/lib/command_tower/schema/inbox/blast/metadata/request.rb new file mode 100644 index 0000000..5974119 --- /dev/null +++ b/lib/command_tower/schema/inbox/blast/metadata/request.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Inbox + module Blast + module Metadata + class Request < JsonSchematize::Generator + # GET endpoint - pagination handled separately + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/blast/metadata/response.rb b/lib/command_tower/schema/inbox/blast/metadata/response.rb new file mode 100644 index 0000000..3065efb --- /dev/null +++ b/lib/command_tower/schema/inbox/blast/metadata/response.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require "command_tower/schema/shared/inbox/message_blast_metadata" + +module CommandTower + module Schema + module Inbox + module Blast + module Metadata + class Response < JsonSchematize::Generator + # Response is the Shared::Inbox::MessageBlastMetadata schema + # We'll use it directly in the controller + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/blast/modify/request.rb b/lib/command_tower/schema/inbox/blast/modify/request.rb new file mode 100644 index 0000000..d2e7467 --- /dev/null +++ b/lib/command_tower/schema/inbox/blast/modify/request.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Inbox + module Blast + module Modify + class Request < JsonSchematize::Generator + add_field name: :existing_users, type: JsonSchematize::Boolean + add_field name: :new_users, type: JsonSchematize::Boolean + add_field name: :title, type: String + add_field name: :text, type: String + add_field name: :id, type: Integer, required: false + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/blast/modify/response.rb b/lib/command_tower/schema/inbox/blast/modify/response.rb new file mode 100644 index 0000000..75ea9cf --- /dev/null +++ b/lib/command_tower/schema/inbox/blast/modify/response.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true + +require "command_tower/schema/shared/user" + +module CommandTower + module Schema + module Inbox + module Blast + module Modify + class Response < JsonSchematize::Generator + add_field name: :created_by, type: CommandTower::Schema::Shared::User + add_field name: :existing_users, type: JsonSchematize::Boolean + add_field name: :new_users, type: JsonSchematize::Boolean + add_field name: :title, type: String + add_field name: :text, type: String + add_field name: :id, type: Integer, required: false + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/blast/show/request.rb b/lib/command_tower/schema/inbox/blast/show/request.rb new file mode 100644 index 0000000..47481ae --- /dev/null +++ b/lib/command_tower/schema/inbox/blast/show/request.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Inbox + module Blast + module Show + class Request < JsonSchematize::Generator + schema_default option: :dig_type, value: :string + + add_field name: :id, type: Integer, required: false + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/blast/show/response.rb b/lib/command_tower/schema/inbox/blast/show/response.rb new file mode 100644 index 0000000..4a3bae8 --- /dev/null +++ b/lib/command_tower/schema/inbox/blast/show/response.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require "command_tower/schema/entities/inbox/message_blast_entity" + +module CommandTower + module Schema + module Inbox + module Blast + module Show + class Response < JsonSchematize::Generator + # Response is the Entities::Inbox::MessageBlastEntity schema + # We'll use it directly in the controller + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/blast_request.rb b/lib/command_tower/schema/inbox/blast_request.rb deleted file mode 100644 index bad48fb..0000000 --- a/lib/command_tower/schema/inbox/blast_request.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -module CommandTower - module Schema - module Inbox - class BlastRequest < JsonSchematize::Generator - add_field name: :existing_users, type: JsonSchematize::Boolean - add_field name: :new_users, type: JsonSchematize::Boolean - add_field name: :title, type: String - add_field name: :text, type: String - add_field name: :id, type: Integer, required: false - end - end - end -end diff --git a/lib/command_tower/schema/inbox/blast_response.rb b/lib/command_tower/schema/inbox/blast_response.rb deleted file mode 100644 index 932e92a..0000000 --- a/lib/command_tower/schema/inbox/blast_response.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -module CommandTower - module Schema - module Inbox - class BlastResponse < JsonSchematize::Generator - add_field name: :created_by, type: CommandTower::Schema::User - add_field name: :existing_users, type: JsonSchematize::Boolean - add_field name: :new_users, type: JsonSchematize::Boolean - add_field name: :title, type: String - add_field name: :text, type: String - add_field name: :id, type: Integer, required: false - end - end - end -end diff --git a/lib/command_tower/schema/inbox/message_blast_entity.rb b/lib/command_tower/schema/inbox/message_blast_entity.rb deleted file mode 100644 index 8c54952..0000000 --- a/lib/command_tower/schema/inbox/message_blast_entity.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -module CommandTower - module Schema - module Inbox - class MessageBlastEntity < JsonSchematize::Generator - add_field name: :created_by, type: CommandTower::Schema::User, required: false # to allow metadata call to be fast - add_field name: :text, type: String, required: false # to allow metadata call to be fast - add_field name: :title, type: String - add_field name: :id, type: Integer - add_field name: :existing_users, type: JsonSchematize::Boolean - add_field name: :new_users, type: JsonSchematize::Boolean - end - end - end -end diff --git a/lib/command_tower/schema/inbox/message_blast_metadata.rb b/lib/command_tower/schema/inbox/message_blast_metadata.rb deleted file mode 100644 index 2c07109..0000000 --- a/lib/command_tower/schema/inbox/message_blast_metadata.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -require "command_tower/schema/inbox/message_blast_entity" -require "command_tower/schema/pagination" - -module CommandTower - module Schema - module Inbox - class MessageBlastMetadata < JsonSchematize::Generator - add_field name: :entities, array_of_types: true, type: CommandTower::Schema::Inbox::MessageBlastEntity, required: false - add_field name: :count, type: Integer - add_field name: :pagination, type: CommandTower::Schema::Pagination, required: false - end - end - end -end diff --git a/lib/command_tower/schema/inbox/message_entity.rb b/lib/command_tower/schema/inbox/message_entity.rb deleted file mode 100644 index 472bf9d..0000000 --- a/lib/command_tower/schema/inbox/message_entity.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -module CommandTower - module Schema - module Inbox - class MessageEntity < JsonSchematize::Generator - add_field name: :title, type: String - add_field name: :id, type: Integer - add_field name: :text, type: String, required: false - add_field name: :viewed, type: JsonSchematize::Boolean - end - end - end -end diff --git a/lib/command_tower/schema/inbox/messages/ack/request.rb b/lib/command_tower/schema/inbox/messages/ack/request.rb new file mode 100644 index 0000000..4b57279 --- /dev/null +++ b/lib/command_tower/schema/inbox/messages/ack/request.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Inbox + module Messages + module Ack + class Request < JsonSchematize::Generator + add_field name: :ids, type: Array, required: true + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/messages/ack/response.rb b/lib/command_tower/schema/inbox/messages/ack/response.rb new file mode 100644 index 0000000..2db2409 --- /dev/null +++ b/lib/command_tower/schema/inbox/messages/ack/response.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require "command_tower/schema/shared/inbox/modified" + +module CommandTower + module Schema + module Inbox + module Messages + module Ack + class Response < JsonSchematize::Generator + # Response is the Shared::Inbox::Modified schema + # We'll use it directly in the controller + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/messages/delete/request.rb b/lib/command_tower/schema/inbox/messages/delete/request.rb new file mode 100644 index 0000000..298bc31 --- /dev/null +++ b/lib/command_tower/schema/inbox/messages/delete/request.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Inbox + module Messages + module Delete + class Request < JsonSchematize::Generator + add_field name: :ids, type: Array, required: true + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/messages/delete/response.rb b/lib/command_tower/schema/inbox/messages/delete/response.rb new file mode 100644 index 0000000..7d61f12 --- /dev/null +++ b/lib/command_tower/schema/inbox/messages/delete/response.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require "command_tower/schema/shared/inbox/modified" + +module CommandTower + module Schema + module Inbox + module Messages + module Delete + class Response < JsonSchematize::Generator + # Response is the Shared::Inbox::Modified schema + # We'll use it directly in the controller + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/messages/delete_by_id/request.rb b/lib/command_tower/schema/inbox/messages/delete_by_id/request.rb new file mode 100644 index 0000000..43f92b4 --- /dev/null +++ b/lib/command_tower/schema/inbox/messages/delete_by_id/request.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Inbox + module Messages + module DeleteById + class Request < JsonSchematize::Generator + schema_default option: :dig_type, value: :string + + add_field name: :id, type: Integer, required: false + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/messages/delete_by_id/response.rb b/lib/command_tower/schema/inbox/messages/delete_by_id/response.rb new file mode 100644 index 0000000..a4fd632 --- /dev/null +++ b/lib/command_tower/schema/inbox/messages/delete_by_id/response.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require "command_tower/schema/shared/inbox/modified" + +module CommandTower + module Schema + module Inbox + module Messages + module DeleteById + class Response < JsonSchematize::Generator + # Response is the Shared::Inbox::Modified schema + # We'll use it directly in the controller + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/messages/message/request.rb b/lib/command_tower/schema/inbox/messages/message/request.rb new file mode 100644 index 0000000..7c314f8 --- /dev/null +++ b/lib/command_tower/schema/inbox/messages/message/request.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Inbox + module Messages + module Message + class Request < JsonSchematize::Generator + schema_default option: :dig_type, value: :string + + add_field name: :id, type: Integer, required: false + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/messages/message/response.rb b/lib/command_tower/schema/inbox/messages/message/response.rb new file mode 100644 index 0000000..75258c9 --- /dev/null +++ b/lib/command_tower/schema/inbox/messages/message/response.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require "command_tower/schema/entities/inbox/message_entity" + +module CommandTower + module Schema + module Inbox + module Messages + module Message + class Response < JsonSchematize::Generator + # Response is the Entities::Inbox::MessageEntity schema + # We'll use it directly in the controller + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/messages/metadata/request.rb b/lib/command_tower/schema/inbox/messages/metadata/request.rb new file mode 100644 index 0000000..7e6953c --- /dev/null +++ b/lib/command_tower/schema/inbox/messages/metadata/request.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Inbox + module Messages + module Metadata + class Request < JsonSchematize::Generator + # GET endpoint - pagination handled separately + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/messages/metadata/response.rb b/lib/command_tower/schema/inbox/messages/metadata/response.rb new file mode 100644 index 0000000..aeb599b --- /dev/null +++ b/lib/command_tower/schema/inbox/messages/metadata/response.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require "command_tower/schema/shared/inbox/metadata" + +module CommandTower + module Schema + module Inbox + module Messages + module Metadata + class Response < JsonSchematize::Generator + # Response is the Shared::Inbox::Metadata schema + # We'll use it directly in the controller + end + end + end + end + end +end diff --git a/lib/command_tower/schema/inbox/metadata.rb b/lib/command_tower/schema/inbox/metadata.rb deleted file mode 100644 index 785f83b..0000000 --- a/lib/command_tower/schema/inbox/metadata.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -require "command_tower/schema/inbox/message_entity" -require "command_tower/schema/pagination" - -module CommandTower - module Schema - module Inbox - class Metadata < JsonSchematize::Generator - # schema_default option: :dig_type, value: :string - - add_field name: :entities, array_of_types: true, type: CommandTower::Schema::Inbox::MessageEntity, required: false - add_field name: :count, type: Integer - add_field name: :pagination, type: CommandTower::Schema::Pagination, required: false - end - end - end -end diff --git a/lib/command_tower/schema/inbox/modified.rb b/lib/command_tower/schema/inbox/modified.rb deleted file mode 100644 index 205e199..0000000 --- a/lib/command_tower/schema/inbox/modified.rb +++ /dev/null @@ -1,13 +0,0 @@ -# frozen_string_literal: true - -module CommandTower - module Schema - module Inbox - class Modified < JsonSchematize::Generator - add_field name: :type, type: Symbol - add_field name: :ids, type: Array - add_field name: :count, type: Integer - end - end - end -end diff --git a/lib/command_tower/schema/shared/admin/users.rb b/lib/command_tower/schema/shared/admin/users.rb new file mode 100644 index 0000000..0a47656 --- /dev/null +++ b/lib/command_tower/schema/shared/admin/users.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require "command_tower/schema/shared/user" +require "command_tower/schema/shared/pagination" + +module CommandTower + module Schema + module Shared + module Admin + class Users < JsonSchematize::Generator + add_field name: :users, array_of_types: true, type: CommandTower::Schema::Shared::User + add_field name: :count, type: Integer, required: false + add_field name: :pagination, type: CommandTower::Schema::Shared::Pagination, required: false + end + end + end + end +end diff --git a/lib/command_tower/schema/shared/inbox/message_blast_metadata.rb b/lib/command_tower/schema/shared/inbox/message_blast_metadata.rb new file mode 100644 index 0000000..8fe9adb --- /dev/null +++ b/lib/command_tower/schema/shared/inbox/message_blast_metadata.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require "command_tower/schema/entities/inbox/message_blast_entity" +require "command_tower/schema/shared/pagination" + +module CommandTower + module Schema + module Shared + module Inbox + class MessageBlastMetadata < JsonSchematize::Generator + add_field name: :entities, array_of_types: true, type: CommandTower::Schema::Entities::Inbox::MessageBlastEntity, required: false + add_field name: :count, type: Integer + add_field name: :pagination, type: CommandTower::Schema::Shared::Pagination, required: false + end + end + end + end +end diff --git a/lib/command_tower/schema/shared/inbox/metadata.rb b/lib/command_tower/schema/shared/inbox/metadata.rb new file mode 100644 index 0000000..730c09b --- /dev/null +++ b/lib/command_tower/schema/shared/inbox/metadata.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +require "command_tower/schema/entities/inbox/message_entity" +require "command_tower/schema/shared/pagination" + +module CommandTower + module Schema + module Shared + module Inbox + class Metadata < JsonSchematize::Generator + # schema_default option: :dig_type, value: :string + + add_field name: :entities, array_of_types: true, type: CommandTower::Schema::Entities::Inbox::MessageEntity, required: false + add_field name: :count, type: Integer + add_field name: :pagination, type: CommandTower::Schema::Shared::Pagination, required: false + end + end + end + end +end diff --git a/lib/command_tower/schema/shared/inbox/modified.rb b/lib/command_tower/schema/shared/inbox/modified.rb new file mode 100644 index 0000000..04b3622 --- /dev/null +++ b/lib/command_tower/schema/shared/inbox/modified.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Shared + module Inbox + class Modified < JsonSchematize::Generator + add_field name: :type, type: Symbol + add_field name: :ids, type: Array + add_field name: :count, type: Integer + end + end + end + end +end diff --git a/lib/command_tower/schema/shared/page.rb b/lib/command_tower/schema/shared/page.rb new file mode 100644 index 0000000..f8ebd34 --- /dev/null +++ b/lib/command_tower/schema/shared/page.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Shared + class Page < JsonSchematize::Generator + add_field name: :cursor, type: Integer + add_field name: :limit, type: Integer + add_field name: :query, type: String + end + end + end +end diff --git a/lib/command_tower/schema/shared/pagination.rb b/lib/command_tower/schema/shared/pagination.rb new file mode 100644 index 0000000..eb712bf --- /dev/null +++ b/lib/command_tower/schema/shared/pagination.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +require "command_tower/schema/shared/page" + +module CommandTower + module Schema + module Shared + class Pagination < JsonSchematize::Generator + add_field name: :current, type: Shared::Page + add_field name: :next, type: Shared::Page, required: false + add_field name: :count_available, type: Integer, required: false + add_field name: :current_page, type: Integer, required: false + add_field name: :remaining_pages, type: Integer, required: false + add_field name: :total_pages, type: Integer, required: false + end + end + end +end diff --git a/lib/command_tower/schema/shared/user.rb b/lib/command_tower/schema/shared/user.rb new file mode 100644 index 0000000..724974c --- /dev/null +++ b/lib/command_tower/schema/shared/user.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module Shared + class User < JsonSchematize::Generator + schema_default option: :dig_type, value: :string + + def self.convert_user_object(user:) + attributes = CommandTower.config.user.default_attributes.map(&:to_s) + object = user.attributes.slice(*attributes) + + new(object) + end + + # Gets assigned during configuration phase via + # lib/command_tower/configuration/user/config.rb + def self.assign! + attributes = CommandTower.config.user.default_attributes + + attributes.each do |attribute| + if metadata = ::User.attribute_to_type_mapping[attribute] + type = metadata[:serialized_type] ? metadata[:serialized_type] : metadata[:base] + type = JsonSchematize::Boolean if type == "Boolean" + begin + add_field(name: attribute, type:) + + rescue StandardError => e + binding.pry + raise + end + end + end + end + end + end + end +end diff --git a/lib/command_tower/schema/user/modify/request.rb b/lib/command_tower/schema/user/modify/request.rb new file mode 100644 index 0000000..c0ae1c7 --- /dev/null +++ b/lib/command_tower/schema/user/modify/request.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module User + module Modify + class Request < JsonSchematize::Generator + schema_default option: :dig_type, value: :string + + add_field name: :email, type: String, required: false + add_field name: :email_validated, type: JsonSchematize::Boolean, required: false + add_field name: :first_name, type: String, required: false + add_field name: :last_name, type: String, required: false + add_field name: :username, type: String, required: false + add_field name: :verifier_token, type: JsonSchematize::Boolean, required: false + end + end + end + end +end diff --git a/lib/command_tower/schema/user/modify/response.rb b/lib/command_tower/schema/user/modify/response.rb new file mode 100644 index 0000000..de92353 --- /dev/null +++ b/lib/command_tower/schema/user/modify/response.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +require "command_tower/schema/shared/user" + +module CommandTower + module Schema + module User + module Modify + class Response < JsonSchematize::Generator + # Response is just the User schema + # We'll use Shared::User directly in the controller + end + end + end + end +end diff --git a/lib/command_tower/schema/user/show/request.rb b/lib/command_tower/schema/user/show/request.rb new file mode 100644 index 0000000..aad863e --- /dev/null +++ b/lib/command_tower/schema/user/show/request.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +module CommandTower + module Schema + module User + module Show + class Request < JsonSchematize::Generator + # GET endpoint - no request body validation needed + end + end + end + end +end diff --git a/lib/command_tower/schema/user/show/response.rb b/lib/command_tower/schema/user/show/response.rb new file mode 100644 index 0000000..f560ff7 --- /dev/null +++ b/lib/command_tower/schema/user/show/response.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +require "command_tower/schema/shared/user" + +module CommandTower + module Schema + module User + module Show + class Response < JsonSchematize::Generator + # Response is just the User schema + # We'll use Shared::User directly in the controller + end + end + end + end +end From c0fa231540a85ff166b7067c70bc537397acbc2f Mon Sep 17 00:00:00 2001 From: Matt Taylor Date: Sat, 17 Jan 2026 16:12:45 -0800 Subject: [PATCH 02/10] updating spec tests --- .../command_tower/admin_controller_spec.rb | 6 +- .../inbox/message_blast_controller_spec.rb | 9 +- .../inbox/message_controller_spec.rb | 8 +- .../command_tower/user_controller_spec.rb | 6 +- spec/examples.txt | 2056 +++++++++-------- .../command_tower/admin_service/users_spec.rb | 2 +- .../inbox_service/blast/metadata_spec.rb | 6 +- .../inbox_service/blast/retrieve_spec.rb | 2 +- .../inbox_service/blast/upsert_spec.rb | 8 +- .../inbox_service/message/metadata_spec.rb | 6 +- .../inbox_service/message/modify_spec.rb | 4 +- .../inbox_service/message/retrieve_spec.rb | 2 +- 12 files changed, 1089 insertions(+), 1026 deletions(-) diff --git a/spec/controllers/command_tower/admin_controller_spec.rb b/spec/controllers/command_tower/admin_controller_spec.rb index 382f224..5ba7f59 100644 --- a/spec/controllers/command_tower/admin_controller_spec.rb +++ b/spec/controllers/command_tower/admin_controller_spec.rb @@ -56,7 +56,7 @@ it "returns user array" do subject - expect(response_body["users"]).to all(include(*CommandTower::Schema::User.introspect.keys)) + expect(response_body["users"]).to all(include(*CommandTower::Schema::Shared::User.introspect.keys)) end context "with pagination" do @@ -162,7 +162,7 @@ it "returns new user keys" do subject - expect(response_body.keys).to include(*CommandTower::Schema::User.introspect.keys) + expect(response_body.keys).to include(*CommandTower::Schema::Shared::User.introspect.keys) end it "has correct key change" do @@ -234,7 +234,7 @@ it "returns new user keys" do subject - expect(response_body.keys).to include(*CommandTower::Schema::User.introspect.keys) + expect(response_body.keys).to include(*CommandTower::Schema::Shared::User.introspect.keys) end include_examples "with invalid user to modify" diff --git a/spec/controllers/command_tower/inbox/message_blast_controller_spec.rb b/spec/controllers/command_tower/inbox/message_blast_controller_spec.rb index 7752ddd..1fe4ad6 100644 --- a/spec/controllers/command_tower/inbox/message_blast_controller_spec.rb +++ b/spec/controllers/command_tower/inbox/message_blast_controller_spec.rb @@ -17,7 +17,7 @@ it "returns metadata values" do metadata - expect(response_body).to include(*CommandTower::Schema::Inbox::MessageBlastMetadata.introspect.keys) + expect(response_body).to include(*CommandTower::Schema::Shared::Inbox::MessageBlastMetadata.introspect.keys) end context "with auth* failures" do @@ -43,7 +43,7 @@ it "returns entity values" do blast - expect(response_body).to include(*CommandTower::Schema::Inbox::MessageBlastEntity.introspect.keys) + expect(response_body).to include(*CommandTower::Schema::Entities::Inbox::MessageBlastEntity.introspect.keys) expect(response_body["text"]).to eq(message_blast.text) end @@ -91,7 +91,7 @@ it "returns blast" do create_post - expect(response_body).to include(*CommandTower::Schema::Inbox::BlastResponse.introspect.keys) + expect(response_body).to include(*CommandTower::Schema::Inbox::Blast::Create::Response.introspect.keys) expect(response_body["text"]).to eq(text) end @@ -140,7 +140,7 @@ it "returns blast" do modify - expect(response_body).to include(*CommandTower::Schema::Inbox::BlastResponse.introspect.keys) + expect(response_body).to include(*CommandTower::Schema::Inbox::Blast::Create::Response.introspect.keys) end it "modifies existing blast" do @@ -184,4 +184,3 @@ end end end - diff --git a/spec/controllers/command_tower/inbox/message_controller_spec.rb b/spec/controllers/command_tower/inbox/message_controller_spec.rb index 1059560..a2783d9 100644 --- a/spec/controllers/command_tower/inbox/message_controller_spec.rb +++ b/spec/controllers/command_tower/inbox/message_controller_spec.rb @@ -22,7 +22,7 @@ it "returns metadata values" do metadata - expect(response_body).to include(*CommandTower::Schema::Inbox::Metadata.introspect.keys) + expect(response_body).to include(*CommandTower::Schema::Shared::Inbox::Metadata.introspect.keys) end context "with pagination" do @@ -112,7 +112,7 @@ it "returns message values" do message - expect(response_body).to include(*CommandTower::Schema::Inbox::MessageEntity.introspect.keys) + expect(response_body).to include(*CommandTower::Schema::Entities::Inbox::MessageEntity.introspect.keys) expect(response_body["text"]).to eq(record.text) end @@ -135,7 +135,7 @@ it "changes metadata" do subject - expect(response_body).to include(*CommandTower::Schema::Inbox::Modified.introspect.keys) + expect(response_body).to include(*CommandTower::Schema::Shared::Inbox::Modified.introspect.keys) expect(response_body["count"]).to eq(messages.length) expect(response_body["type"]).to eq(modify_type) expect(response_body["ids"]).to include(*ids) @@ -161,7 +161,7 @@ it "changes metadata" do subject - expect(response_body).to include(*CommandTower::Schema::Inbox::Modified.introspect.keys) + expect(response_body).to include(*CommandTower::Schema::Shared::Inbox::Modified.introspect.keys) expect(response_body["count"]).to eq(messages.length) expect(response_body["type"]).to eq(modify_type) expect(response_body["ids"]).to include(*available_ids) diff --git a/spec/controllers/command_tower/user_controller_spec.rb b/spec/controllers/command_tower/user_controller_spec.rb index 1495ccc..2ae32fd 100644 --- a/spec/controllers/command_tower/user_controller_spec.rb +++ b/spec/controllers/command_tower/user_controller_spec.rb @@ -19,7 +19,7 @@ it "returns user values" do subject - expect(response_body).to include(*CommandTower::Schema::User.introspect.keys) + expect(response_body).to include(*CommandTower::Schema::Shared::User.introspect.keys) end include_examples "Invalid/Missing JWT token on required route" @@ -58,7 +58,7 @@ it "returns new user keys" do subject - expect(response_body.keys).to include(*CommandTower::Schema::User.introspect.keys) + expect(response_body.keys).to include(*CommandTower::Schema::Shared::User.introspect.keys) end it "has correct key change" do @@ -121,7 +121,7 @@ it "returns new user keys" do subject - expect(response_body.keys).to include(*CommandTower::Schema::User.introspect.keys) + expect(response_body.keys).to include(*CommandTower::Schema::Shared::User.introspect.keys) end end diff --git a/spec/examples.txt b/spec/examples.txt index 0ab350b..884805f 100644 --- a/spec/examples.txt +++ b/spec/examples.txt @@ -1,1001 +1,1065 @@ example_id | status | run_time | ---------------------------------------------------------------------------------------------------- | ------- | --------------- | -./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:1:1:1] | passed | 0.01773 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:1:1:2] | passed | 0.04028 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:1:1:3] | passed | 0.01769 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:1:2:1:1] | passed | 0.03332 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:1:2:1:2] | passed | 0.02675 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:1:2:1:3] | passed | 0.02901 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:1:2:2:1] | passed | 0.02305 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:1:2:2:2] | passed | 0.018 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:1:2:2:3] | passed | 0.02199 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:2:1] | passed | 0.02922 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:2:2] | passed | 0.02448 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:1:2] | passed | 0.02016 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:1:3] | passed | 0.01861 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:1:4] | passed | 0.01857 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:1:1:1] | passed | 0.00715 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:1:1:2] | passed | 0.00778 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:1:1:3] | passed | 0.00712 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:1:2:1:1] | passed | 0.00958 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:1:2:1:2] | passed | 0.00922 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:1:2:1:3] | passed | 0.00994 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:1:2:2:1] | passed | 0.00831 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:1:2:2:2] | passed | 0.00813 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:1:2:2:3] | passed | 0.01162 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:2:1] | passed | 0.01019 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:2:2] | passed | 0.00919 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:1:1:1] | passed | 0.00971 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:1:1:2] | passed | 0.01 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:1:1:3] | passed | 0.01064 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:1:1:4] | passed | 0.00964 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:2:1:1] | passed | 0.01075 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:2:1:2] | passed | 0.01049 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:2:1:3] | passed | 0.01042 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:2:1:4] | passed | 0.01086 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:3:1:1:1] | passed | 0.0092 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:3:1:1:2] | passed | 0.00963 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:3:1:1:3] | passed | 0.00945 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:3:1:1:4] | passed | 0.00892 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:3:2:1:1] | passed | 0.01191 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:3:2:1:2] | passed | 0.01031 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:3:2:1:3] | passed | 0.00959 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:3:2:1:4] | passed | 0.00946 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:3:1] | passed | 0.01032 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:3:2] | passed | 0.01092 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:3:3] | passed | 0.00996 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:3:4:1] | passed | 0.00694 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:3:4:2] | passed | 0.01003 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:4:1] | passed | 0.01046 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:4:2] | passed | 0.01056 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:4:3] | passed | 0.01027 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:4:4:1] | passed | 0.01087 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:4:4:2] | passed | 0.00676 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:5:1] | passed | 0.01146 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:5:2] | passed | 0.01081 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:5:3:1] | passed | 0.00742 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:5:3:2] | passed | 0.00805 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:6:1] | passed | 0.01174 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:6:2] | passed | 0.01197 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:6:3] | passed | 0.0126 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:6:4:1] | passed | 0.00767 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:6:4:2] | passed | 0.00843 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:7:1] | passed | 0.01022 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:7:2] | passed | 0.01128 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:7:3] | passed | 0.01094 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:7:4:1] | passed | 0.00713 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:2:7:4:2] | passed | 0.00705 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:1:1:1] | passed | 0.00701 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:1:1:2] | passed | 0.00716 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:1:1:3] | passed | 0.00687 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:1:2:1:1] | passed | 0.00881 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:1:2:1:2] | passed | 0.00984 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:1:2:1:3] | passed | 0.00959 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:1:2:2:1] | passed | 0.0105 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:1:2:2:2] | passed | 0.00869 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:1:2:2:3] | passed | 0.00942 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:2:1] | passed | 0.00865 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:2:2] | passed | 0.00785 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:2:1:1] | passed | 0.00709 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:2:1:2] | passed | 0.00686 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:2:2:1] | passed | 0.00914 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:2:2:2] | passed | 0.00882 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:2:2:3] | passed | 0.01199 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:2:2:4] | passed | 0.00971 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:3] | passed | 0.0103 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:4] | passed | 0.01086 seconds | -./spec/controllers/command_tower/admin_controller_spec.rb[1:3:5] | passed | 0.0103 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:1:1:1] | passed | 0.00192 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:1:1:2] | passed | 0.00193 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:1:1:3] | passed | 0.00183 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:1:1:4] | passed | 0.00217 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:2:1:1] | passed | 0.0025 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:2:1:2] | passed | 0.00195 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:2:1:3] | passed | 0.00207 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:2:1:4] | passed | 0.00249 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:3:1:1] | passed | 0.00453 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:3:1:2] | passed | 0.0047 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:3:1:3] | passed | 0.00605 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:3:1:4] | passed | 0.00498 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:1:1:1] | passed | 0.002 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:1:1:2] | passed | 0.00193 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:1:1:3] | passed | 0.00231 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:1:1:4] | passed | 0.00194 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:2:1:1] | passed | 0.00183 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:2:1:2] | passed | 0.00282 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:2:1:3] | passed | 0.00169 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:2:1:4] | passed | 0.00197 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:3:1:1] | passed | 0.00186 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:3:1:2] | passed | 0.00193 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:3:1:3] | passed | 0.00199 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:3:1:4] | passed | 0.00198 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:4:1:1] | passed | 0.00217 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:4:1:2] | passed | 0.00171 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:4:1:3] | passed | 0.00189 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:4:1:4] | passed | 0.00209 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:5:1:1] | passed | 0.00198 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:5:1:2] | passed | 0.00201 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:5:1:3] | passed | 0.00187 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:5:1:4] | passed | 0.00198 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:6:1:1] | passed | 0.00196 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:6:1:2] | passed | 0.00191 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:6:1:3] | passed | 0.00218 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:6:1:4] | passed | 0.0019 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:7:1:1] | passed | 0.00192 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:7:1:2] | passed | 0.00195 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:7:1:3] | passed | 0.00218 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:7:1:4] | passed | 0.00201 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:5] | passed | 0.0052 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:6] | passed | 0.00618 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:7] | passed | 0.0056 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:1:1:1] | passed | 0.00571 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:1:1:2] | passed | 0.00612 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:1:1:3] | passed | 0.00581 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:1:2:1:1] | passed | 0.00794 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:1:2:1:2] | passed | 0.00753 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:1:2:1:3] | passed | 0.00845 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:1:2:2:1] | passed | 0.01353 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:1:2:2:2] | passed | 0.01221 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:1:2:2:3] | passed | 0.00714 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:2:1:1] | passed | 0.006 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:2:1:2] | passed | 0.00658 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:2:1:3] | passed | 0.00679 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:2:1:4] | passed | 0.00657 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:2:2:1:1] | passed | 0.01666 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:2:2:1:2] | passed | 0.01104 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:2:2:1:3] | passed | 0.01109 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:2:2:1:4] | passed | 0.01204 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:3:1] | passed | 0.01262 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:3:2] | passed | 0.01198 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:4:1] | passed | 0.00659 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:4:2] | passed | 0.00683 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:1:1:1] | passed | 0.00607 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:1:1:2] | passed | 0.00526 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:1:1:3] | passed | 0.0055 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:1:2:1:1] | passed | 0.00583 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:1:2:1:2] | passed | 0.00554 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:1:2:1:3] | passed | 0.00557 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:1:2:2:1] | passed | 0.00578 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:1:2:2:2] | passed | 0.00583 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:1:2:2:3] | passed | 0.00576 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:2] | passed | 0.00963 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:3] | passed | 0.01089 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:4:1] | passed | 0.00889 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:4:2] | passed | 0.01069 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:5:1] | passed | 0.00534 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:5:2] | passed | 0.00583 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:1:1:1] | passed | 0.00667 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:1:1:2] | passed | 0.00677 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:1:2:1] | passed | 0.00652 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:1:2:2] | passed | 0.01108 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:1:1:1] | passed | 0.00391 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:1:1:2] | passed | 0.00393 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:1:1:3] | passed | 0.00525 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:1:1:4] | passed | 0.00403 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:2:1:1] | passed | 0.00155 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:2:1:2] | passed | 0.00167 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:2:1:3] | passed | 0.00174 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:2:1:4] | passed | 0.00148 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:3:1:1] | passed | 0.00384 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:3:1:2] | passed | 0.00406 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:3:1:3] | passed | 0.00413 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:3:1:4] | passed | 0.00407 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:3:1:1:1:1] | passed | 0.00206 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:3:1:1:1:2] | passed | 0.00218 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:3:1:1:1:3] | passed | 0.00266 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:3:1:1:1:4] | passed | 0.00204 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:3:1:2:1:1] | passed | 0.00221 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:3:1:2:1:2] | passed | 0.00241 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:3:1:2:1:3] | passed | 0.00276 seconds | -./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:3:1:2:1:4] | passed | 0.00194 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:1] | passed | 0.01007 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:2] | passed | 0.00696 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:1:1:1] | passed | 0.00603 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:1:1:2] | passed | 0.00543 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:1:1:3] | passed | 0.00534 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:1:2:1:1] | passed | 0.00626 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:1:2:1:2] | passed | 0.00653 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:1:2:1:3] | passed | 0.0067 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:1:2:2:1] | passed | 0.00593 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:1:2:2:2] | passed | 0.00673 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:1:2:2:3] | passed | 0.00636 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:2:1] | passed | 0.00675 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:2:2] | passed | 0.00722 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:1] | passed | 0.0111 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:2] | passed | 0.01139 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:3:1:1] | passed | 0.00718 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:3:1:2] | passed | 0.00744 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:3:1:3] | passed | 0.00831 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:3:1:4] | passed | 0.00743 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:1:1:1] | passed | 0.00753 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:1:1:2] | passed | 0.00837 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:1:1:3] | passed | 0.00932 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:1:2:1:1] | passed | 0.00911 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:1:2:1:2] | passed | 0.00861 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:1:2:1:3] | passed | 0.00833 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:1:2:2:1] | passed | 0.00869 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:1:2:2:2] | passed | 0.00864 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:1:2:2:3] | passed | 0.00931 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:2:1] | passed | 0.00948 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:2:2] | passed | 0.00956 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:1] | passed | 0.00753 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:2] | passed | 0.0092 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:3] | passed | 0.01 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:4:1:1] | passed | 0.00699 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:4:1:2] | passed | 0.00731 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:4:1:3] | passed | 0.0098 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:4:1:4] | passed | 0.00748 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:1:1:1] | passed | 0.00577 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:1:1:2] | passed | 0.00555 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:1:1:3] | passed | 0.00552 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:1:2:1:1] | passed | 0.0062 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:1:2:1:2] | passed | 0.00617 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:1:2:1:3] | passed | 0.00622 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:1:2:2:1] | passed | 0.00632 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:1:2:2:2] | passed | 0.00772 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:1:2:2:3] | passed | 0.00935 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:2:1] | passed | 0.00753 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:2:2] | passed | 0.00717 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:1] | passed | 0.01482 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:2] | passed | 0.01194 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:3] | passed | 0.01304 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:4] | passed | 0.01237 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:5:1:1] | passed | 0.01154 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:5:1:2] | passed | 0.01047 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:5:1:3] | passed | 0.01051 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:5:1:4] | passed | 0.01105 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:1:1:1] | passed | 0.01329 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:1:1:2] | passed | 0.00908 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:1:1:3] | passed | 0.00825 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:1:2:1:1] | passed | 0.00934 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:1:2:1:2] | passed | 0.00894 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:1:2:1:3] | passed | 0.00945 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:1:2:2:1] | passed | 0.00943 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:1:2:2:2] | passed | 0.00939 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:1:2:2:3] | passed | 0.0125 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:2:1] | passed | 0.01095 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:2:2] | passed | 0.00979 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:5:1] | passed | 0.01442 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:5:2] | passed | 0.0138 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:5:3:1:1] | passed | 0.0116 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:5:3:1:2] | passed | 0.0115 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:5:3:1:3] | passed | 0.0127 seconds | -./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:5:3:1:4] | passed | 0.01651 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:1] | passed | 0.01324 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:2] | passed | 0.01697 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:3:1:1] | passed | 0.01203 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:3:1:2] | passed | 0.01102 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:3:1:3] | passed | 0.00965 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:3:2:1:1] | passed | 0.01317 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:3:2:1:2] | passed | 0.01761 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:3:2:1:3] | passed | 0.01226 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:3:2:2:1] | passed | 0.01079 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:3:2:2:2] | passed | 0.01113 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:3:2:2:3] | passed | 0.0107 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:1] | passed | 0.01148 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:2] | passed | 0.01309 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:3:1:1] | passed | 0.02146 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:3:1:2] | passed | 0.01133 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:3:1:3] | passed | 0.01232 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:3:1:4] | passed | 0.01156 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:4:1:1] | passed | 0.01087 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:4:1:2] | passed | 0.01153 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:4:1:3] | passed | 0.01068 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:4:2:1:1] | passed | 0.01939 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:4:2:1:2] | passed | 0.013 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:4:2:1:3] | passed | 0.01254 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:4:2:2:1] | passed | 0.01438 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:4:2:2:2] | passed | 0.0106 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:4:2:2:3] | passed | 0.01152 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:1] | passed | 0.0727 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:2] | passed | 0.04588 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:3:1:1] | passed | 0.0243 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:3:1:2] | passed | 0.01607 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:3:1:3] | passed | 0.01727 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:3:1:4] | passed | 0.01582 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:4:1] | passed | 0.01833 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:4:2] | passed | 0.02393 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:5:1:1] | passed | 0.02019 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:5:1:2] | passed | 0.01537 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:5:1:3] | passed | 0.01238 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:5:2:1:1] | passed | 0.01402 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:5:2:1:2] | passed | 0.01802 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:5:2:1:3] | passed | 0.01547 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:5:2:2:1] | passed | 0.01725 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:5:2:2:2] | passed | 0.01559 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:5:2:2:3] | passed | 0.02293 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:1] | passed | 0.01525 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:2] | passed | 0.02277 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:3:1:1] | passed | 0.02236 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:3:1:2] | passed | 0.01188 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:3:1:3] | passed | 0.01442 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:3:1:4] | passed | 0.01287 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:4:1] | passed | 0.02637 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:4:2] | passed | 0.01585 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:5:1:1] | passed | 0.01236 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:5:1:2] | passed | 0.01203 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:5:1:3] | passed | 0.01759 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:5:2:1:1] | passed | 0.01134 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:5:2:1:2] | passed | 0.01194 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:5:2:1:3] | passed | 0.01139 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:5:2:2:1] | passed | 0.0152 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:5:2:2:2] | passed | 0.01535 seconds | -./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:5:2:2:3] | passed | 0.0149 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:1:1] | passed | 0.00769 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:1:2] | passed | 0.01177 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:1:3:1:1] | passed | 0.00589 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:1:3:1:2] | passed | 0.00664 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:1:3:1:3] | passed | 0.00645 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:1:3:2:1:1] | passed | 0.00699 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:1:3:2:1:2] | passed | 0.00637 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:1:3:2:1:3] | passed | 0.00637 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:1:3:2:2:1] | passed | 0.00784 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:1:3:2:2:2] | passed | 0.00695 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:1:3:2:2:3] | passed | 0.00627 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:1:1:1] | passed | 0.00699 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:1:1:2] | passed | 0.01057 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:1:1:3] | passed | 0.00724 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:1:1:4] | passed | 0.0074 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:2:1:1] | passed | 0.02549 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:2:1:2] | passed | 0.00714 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:2:1:3] | passed | 0.00782 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:2:1:4] | passed | 0.01004 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:3:1:1:1] | passed | 0.00759 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:3:1:1:2] | passed | 0.0079 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:3:1:1:3] | passed | 0.00772 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:3:1:1:4] | passed | 0.01005 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:3:2:1:1] | passed | 0.00824 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:3:2:1:2] | passed | 0.0088 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:3:2:1:3] | passed | 0.01662 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:3:2:1:4] | passed | 0.01079 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:2:1] | passed | 0.014 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:2:2] | passed | 0.01321 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:2:3] | passed | 0.01107 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:3:1] | passed | 0.0113 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:3:2] | passed | 0.01044 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:3:3] | passed | 0.0107 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:4:1] | passed | 0.00926 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:4:2] | passed | 0.00879 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:5:1] | passed | 0.00763 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:5:2] | passed | 0.00897 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:5:3] | passed | 0.00875 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:6:1] | passed | 0.01325 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:6:2] | passed | 0.01392 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:6:3] | passed | 0.01526 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:7:1:1] | passed | 0.00858 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:7:1:2] | passed | 0.00552 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:7:1:3] | passed | 0.00878 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:7:2:1:1] | passed | 0.00694 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:7:2:1:2] | passed | 0.00614 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:7:2:1:3] | passed | 0.00849 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:7:2:2:1] | passed | 0.00702 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:7:2:2:2] | passed | 0.00789 seconds | -./spec/controllers/command_tower/user_controller_spec.rb[1:2:7:2:2:3] | passed | 0.0085 seconds | -./spec/integration_test/admin/change_settings_spec.rb[1:1] | passed | 0.06818 seconds | -./spec/integration_test/application_controller_actions/header_with_reset_spec.rb[1:1] | passed | 0.02506 seconds | -./spec/integration_test/auth/plain_text/integration_spec.rb[1:1] | passed | 0.09429 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:1:1] | passed | 0.00067 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:1:2:1] | passed | 0.00083 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:2:1] | passed | 0.00092 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:3:1:1] | passed | 0.00076 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:3:2:1] | passed | 0.0009 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:3:3:1:1] | passed | 0.00077 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:3:3:2:1] | passed | 0.00087 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:3:4:1] | passed | 0.00078 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:3:4:2:1] | passed | 0.00073 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:3:5:1] | passed | 0.00067 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:3:5:2:1] | passed | 0.00098 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:3:6] | passed | 0.0007 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:4:1] | passed | 0.00061 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:5:1] | passed | 0.00338 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:6:1:1:1] | passed | 0.00065 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:6:1:2:1:1] | passed | 0.00066 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:6:1:2:2:1] | passed | 0.00068 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:6:1:3:1:1] | passed | 0.00098 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:6:1:3:2:1] | passed | 0.00061 seconds | -./spec/lib/command_tower/authorization/entity_spec.rb[1:6:2:1] | passed | 0.00055 seconds | -./spec/lib/command_tower/authorization/role_spec.rb[1:1:1:1] | passed | 0.00089 seconds | -./spec/lib/command_tower/authorization/role_spec.rb[1:1:2:1] | passed | 0.00105 seconds | -./spec/lib/command_tower/authorization/role_spec.rb[1:1:3:1] | passed | 0.00068 seconds | -./spec/lib/command_tower/authorization/role_spec.rb[1:1:4:1] | passed | 0.00119 seconds | -./spec/lib/command_tower/authorization/role_spec.rb[1:1:5:1] | passed | 0.00141 seconds | -./spec/lib/command_tower/authorization/role_spec.rb[1:1:6] | passed | 0.00149 seconds | -./spec/lib/command_tower/authorization/role_spec.rb[1:2:1:1] | passed | 0.00313 seconds | -./spec/lib/command_tower/authorization/role_spec.rb[1:2:2:1] | passed | 0.00316 seconds | -./spec/lib/command_tower/authorization/role_spec.rb[1:2:3:1] | passed | 0.00319 seconds | -./spec/lib/command_tower/authorization/role_spec.rb[1:2:4:1] | passed | 0.00321 seconds | -./spec/lib/command_tower/authorization/role_spec.rb[1:2:4:2:1] | passed | 0.00284 seconds | -./spec/lib/command_tower/authorization/role_spec.rb[1:2:4:3:1] | passed | 0.00338 seconds | -./spec/lib/command_tower/authorization/role_spec.rb[1:2:4:3:2:1] | passed | 0.00358 seconds | -./spec/lib/command_tower/authorization/role_spec.rb[1:3:1:1] | passed | 0.00098 seconds | -./spec/lib/command_tower/authorization/role_spec.rb[1:3:2:1] | pending | 0.00065 seconds | -./spec/lib/command_tower/authorization/role_spec.rb[1:3:2:2] | passed | 0.00139 seconds | -./spec/lib/command_tower/authorization/role_spec.rb[1:3:3:1] | passed | 0.00103 seconds | -./spec/lib/command_tower/authorization_spec.rb[1:1:1] | passed | 0.00111 seconds | -./spec/lib/command_tower/authorization_spec.rb[1:1:2] | passed | 0.00124 seconds | -./spec/lib/command_tower/authorization_spec.rb[1:1:3] | passed | 0.00208 seconds | -./spec/lib/command_tower/authorization_spec.rb[1:1:4] | passed | 0.013 seconds | -./spec/lib/command_tower/authorization_spec.rb[1:2:1:1] | passed | 0.00195 seconds | -./spec/lib/command_tower/authorization_spec.rb[1:2:2:1] | passed | 0.00418 seconds | -./spec/lib/command_tower/authorization_spec.rb[1:2:3:1] | passed | 0.00149 seconds | -./spec/models/user_secret_spec.rb[1:1:1] | passed | 0.00553 seconds | -./spec/models/user_secret_spec.rb[1:1:2] | passed | 0.00735 seconds | -./spec/models/user_secret_spec.rb[1:1:3:1] | passed | 0.00584 seconds | -./spec/models/user_secret_spec.rb[1:1:3:2] | passed | 0.00567 seconds | -./spec/models/user_secret_spec.rb[1:1:4:1] | passed | 0.005 seconds | -./spec/models/user_secret_spec.rb[1:1:4:2] | passed | 0.00531 seconds | -./spec/models/user_secret_spec.rb[1:1:5:1] | passed | 0.00477 seconds | -./spec/models/user_secret_spec.rb[1:1:6:1] | passed | 0.00378 seconds | -./spec/models/user_secret_spec.rb[1:2:1:1] | passed | 0.00364 seconds | -./spec/models/user_secret_spec.rb[1:2:2:1] | passed | 0.00365 seconds | -./spec/models/user_secret_spec.rb[1:2:3:1] | passed | 0.00361 seconds | -./spec/models/user_secret_spec.rb[1:2:4:1] | passed | 0.00376 seconds | -./spec/models/user_secret_spec.rb[1:3:1] | passed | 0.01983 seconds | -./spec/models/user_secret_spec.rb[1:4:1] | passed | 0.00382 seconds | -./spec/models/user_secret_spec.rb[1:4:2:1] | passed | 0.00361 seconds | -./spec/models/user_secret_spec.rb[1:4:3:1] | passed | 0.00363 seconds | -./spec/models/user_secret_spec.rb[1:5:1] | passed | 0.00465 seconds | -./spec/models/user_secret_spec.rb[1:5:2:1] | passed | 0.00391 seconds | -./spec/models/user_secret_spec.rb[1:5:3:1] | passed | 0.00371 seconds | -./spec/models/user_secret_spec.rb[1:6:1] | passed | 0.00379 seconds | -./spec/models/user_secret_spec.rb[1:6:2:1] | passed | 0.00371 seconds | -./spec/models/user_secret_spec.rb[1:6:3:1] | passed | 0.00337 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:1:1:1] | passed | 0.02507 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:1:1:2] | passed | 0.02619 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:1:1:3] | passed | 0.02067 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:1:2:1:1] | passed | 0.03964 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:1:2:1:2] | passed | 0.02703 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:1:2:1:3] | passed | 0.03759 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:1:2:2:1] | passed | 0.03346 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:1:2:2:2] | passed | 0.02789 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:1:2:2:3] | passed | 0.03023 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:2:1] | passed | 0.0394 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:1:2:2] | passed | 0.0338 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:2] | passed | 0.02903 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:3] | passed | 0.03045 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:4] | passed | 0.02894 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:5:1:1] | passed | 0.0753 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:5:2:1:1] | passed | 0.07716 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:5:2:2:1] | passed | 0.0701 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:5:2:3:1] | passed | 0.07267 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:5:3:1:1] | passed | 0.0988 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:5:3:2:1] | passed | 0.10644 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:1:5:3:3:1] | passed | 0.09678 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:1:1:1] | passed | 0.01002 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:1:1:2] | passed | 0.00848 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:1:1:3] | passed | 0.00829 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:1:2:1:1] | passed | 0.00994 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:1:2:1:2] | passed | 0.00924 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:1:2:1:3] | passed | 0.01058 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:1:2:2:1] | passed | 0.00937 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:1:2:2:2] | passed | 0.0097 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:1:2:2:3] | passed | 0.01021 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:2:1] | passed | 0.00989 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:1:2:2] | passed | 0.01225 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:1:1:1] | passed | 0.01184 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:1:1:2] | passed | 0.012 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:1:1:3] | passed | 0.01097 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:1:1:4] | passed | 0.01178 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:2:1:1] | passed | 0.01254 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:2:1:2] | passed | 0.0128 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:2:1:3] | passed | 0.01169 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:2:1:4] | passed | 0.01363 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:3:1:1:1] | passed | 0.01188 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:3:1:1:2] | passed | 0.01141 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:3:1:1:3] | passed | 0.0109 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:3:1:1:4] | passed | 0.01204 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:3:2:1:1] | passed | 0.0105 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:3:2:1:2] | passed | 0.00977 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:3:2:1:3] | passed | 0.01016 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:2:3:2:1:4] | passed | 0.00956 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:3:1] | passed | 0.01553 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:3:2] | passed | 0.01104 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:3:3] | passed | 0.01115 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:3:4:1] | passed | 0.00886 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:3:4:2] | passed | 0.00959 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:4:1] | passed | 0.01159 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:4:2] | passed | 0.01045 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:4:3] | passed | 0.01218 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:4:4:1] | passed | 0.00723 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:4:4:2] | passed | 0.00695 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:5:1] | passed | 0.01241 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:5:2] | passed | 0.01302 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:5:3:1] | passed | 0.00874 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:5:3:2] | passed | 0.00884 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:6:1] | passed | 0.01343 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:6:2] | passed | 0.01298 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:6:3] | passed | 0.01347 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:6:4:1] | passed | 0.00995 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:6:4:2] | passed | 0.01067 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:7:1] | passed | 0.01455 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:7:2] | passed | 0.01247 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:7:3] | passed | 0.01367 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:7:4:1] | passed | 0.0078 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:2:7:4:2] | passed | 0.00848 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:1:1:1] | passed | 0.00955 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:1:1:2] | passed | 0.01108 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:1:1:3] | passed | 0.00989 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:1:2:1:1] | passed | 0.01058 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:1:2:1:2] | passed | 0.01102 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:1:2:1:3] | passed | 0.01099 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:1:2:2:1] | passed | 0.01003 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:1:2:2:2] | passed | 0.01059 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:1:2:2:3] | passed | 0.01001 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:2:1] | passed | 0.01176 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:1:2:2] | passed | 0.0106 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:2:1:1] | passed | 0.00873 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:2:1:2] | passed | 0.01036 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:2:2:1] | passed | 0.01156 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:2:2:2] | passed | 0.01098 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:2:2:3] | passed | 0.0119 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:2:2:4] | passed | 0.0118 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:3] | passed | 0.01638 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:4] | passed | 0.01535 seconds | +./spec/controllers/command_tower/admin_controller_spec.rb[1:3:5] | passed | 0.0197 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:1:1:1] | passed | 0.00161 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:1:1:2] | passed | 0.00155 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:1:1:3] | passed | 0.0022 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:1:1:4] | passed | 0.00207 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:2:1:1] | passed | 0.00349 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:2:1:2] | passed | 0.00322 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:2:1:3] | passed | 0.00285 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:2:1:4] | passed | 0.00196 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:3:1:1] | passed | 0.00548 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:3:1:2] | passed | 0.00487 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:3:1:3] | passed | 0.00862 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:3:1:4] | passed | 0.00517 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:1:1:1] | passed | 0.00223 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:1:1:2] | passed | 0.002 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:1:1:3] | passed | 0.00232 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:1:1:4] | passed | 0.00232 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:2:1:1] | passed | 0.00233 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:2:1:2] | passed | 0.00194 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:2:1:3] | passed | 0.00263 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:2:1:4] | passed | 0.00195 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:3:1:1] | passed | 0.0027 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:3:1:2] | passed | 0.0025 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:3:1:3] | passed | 0.00211 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:3:1:4] | passed | 0.00224 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:4:1:1] | passed | 0.00236 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:4:1:2] | passed | 0.01041 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:4:1:3] | passed | 0.00347 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:4:1:4] | passed | 0.01376 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:5:1:1] | passed | 0.00426 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:5:1:2] | passed | 0.00235 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:5:1:3] | passed | 0.00256 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:5:1:4] | passed | 0.00183 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:6:1:1] | passed | 0.00307 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:6:1:2] | passed | 0.0044 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:6:1:3] | passed | 0.00284 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:6:1:4] | passed | 0.0029 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:7:1:1] | passed | 0.00213 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:7:1:2] | passed | 0.00175 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:7:1:3] | passed | 0.00253 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:4:7:1:4] | passed | 0.00231 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:5] | passed | 0.00559 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:6] | passed | 0.0152 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:1:7] | passed | 0.00487 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:1:1:1] | passed | 0.00656 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:1:1:2] | passed | 0.00609 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:1:1:3] | passed | 0.00644 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:1:2:1:1] | passed | 0.0099 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:1:2:1:2] | passed | 0.01208 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:1:2:1:3] | passed | 0.0092 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:1:2:2:1] | passed | 0.00833 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:1:2:2:2] | passed | 0.00764 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:1:2:2:3] | passed | 0.00846 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:2:1:1] | passed | 0.00953 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:2:1:2] | passed | 0.00902 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:2:1:3] | passed | 0.01269 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:2:1:4] | passed | 0.01296 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:2:2:1:1] | passed | 0.01678 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:2:2:1:2] | passed | 0.04018 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:2:2:1:3] | passed | 0.0148 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:2:2:1:4] | passed | 0.01404 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:3:1] | passed | 0.02083 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:3:2] | passed | 0.01437 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:4:1] | passed | 0.01075 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:2:4:2] | passed | 0.01243 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:1:1:1] | passed | 0.00599 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:1:1:2] | passed | 0.0065 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:1:1:3] | passed | 0.00574 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:1:2:1:1] | passed | 0.0075 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:1:2:1:2] | passed | 0.00717 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:1:2:1:3] | passed | 0.00702 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:1:2:2:1] | passed | 0.00737 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:1:2:2:2] | passed | 0.00748 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:1:2:2:3] | passed | 0.00733 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:2] | passed | 0.01289 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:3] | passed | 0.05608 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:4:1] | passed | 0.01508 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:4:2] | passed | 0.01118 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:5:1] | passed | 0.0079 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:3:5:2] | passed | 0.00671 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:1:1:1] | passed | 0.01935 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:1:1:2] | passed | 0.01236 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:1:2:1] | passed | 0.01054 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:1:2:2] | passed | 0.01035 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:1:1:1] | passed | 0.00488 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:1:1:2] | passed | 0.00493 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:1:1:3] | passed | 0.00459 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:1:1:4] | passed | 0.00398 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:2:1:1] | passed | 0.00206 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:2:1:2] | passed | 0.00161 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:2:1:3] | passed | 0.00207 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:2:1:4] | passed | 0.00171 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:3:1:1] | passed | 0.00415 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:3:1:2] | passed | 0.00539 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:3:1:3] | passed | 0.01569 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:2:3:1:4] | passed | 0.00392 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:3:1:1:1:1] | passed | 0.00884 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:3:1:1:1:2] | passed | 0.00413 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:3:1:1:1:3] | passed | 0.00479 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:3:1:1:1:4] | passed | 0.004 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:3:1:2:1:1] | passed | 0.00288 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:3:1:2:1:2] | passed | 0.00428 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:3:1:2:1:3] | passed | 0.00323 seconds | +./spec/controllers/command_tower/auth/plain_text_controller_spec.rb[1:4:3:1:2:1:4] | passed | 0.00601 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:1] | passed | 0.00589 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:2] | passed | 0.00547 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:1:1:1] | passed | 0.00489 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:1:1:2] | passed | 0.00388 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:1:1:3] | passed | 0.00394 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:1:2:1:1] | passed | 0.00486 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:1:2:1:2] | passed | 0.00528 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:1:2:1:3] | passed | 0.00547 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:1:2:2:1] | passed | 0.00468 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:1:2:2:2] | passed | 0.00531 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:1:2:2:3] | passed | 0.00495 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:2:1] | passed | 0.00498 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:1:3:2:2] | passed | 0.00516 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:1] | passed | 0.00998 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:2] | passed | 0.00962 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:3:1:1] | passed | 0.00655 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:3:1:2] | passed | 0.00634 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:3:1:3] | passed | 0.00678 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:3:1:4] | passed | 0.00593 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:1:1:1] | passed | 0.01019 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:1:1:2] | passed | 0.01068 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:1:1:3] | passed | 0.01021 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:1:2:1:1] | passed | 0.01147 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:1:2:1:2] | passed | 0.01053 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:1:2:1:3] | passed | 0.00945 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:1:2:2:1] | passed | 0.00956 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:1:2:2:2] | passed | 0.00967 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:1:2:2:3] | passed | 0.01174 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:2:1] | passed | 0.01245 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:2:4:2:2] | passed | 0.01279 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:1] | passed | 0.00729 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:2] | passed | 0.00641 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:3] | passed | 0.00586 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:4:1:1] | passed | 0.00646 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:4:1:2] | passed | 0.0072 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:4:1:3] | passed | 0.00655 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:4:1:4] | passed | 0.00669 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:1:1:1] | passed | 0.00555 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:1:1:2] | passed | 0.00472 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:1:1:3] | passed | 0.00537 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:1:2:1:1] | passed | 0.00702 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:1:2:1:2] | passed | 0.00627 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:1:2:1:3] | passed | 0.00812 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:1:2:2:1] | passed | 0.00626 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:1:2:2:2] | passed | 0.00682 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:1:2:2:3] | passed | 0.00621 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:2:1] | passed | 0.00586 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:3:5:2:2] | passed | 0.00587 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:1] | passed | 0.0127 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:2] | passed | 0.01121 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:3] | passed | 0.01562 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:4] | passed | 0.01581 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:5:1:1] | passed | 0.00992 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:5:1:2] | passed | 0.00971 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:5:1:3] | passed | 0.01009 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:5:1:4] | passed | 0.01055 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:1:1:1] | passed | 0.00825 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:1:1:2] | passed | 0.00855 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:1:1:3] | passed | 0.00807 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:1:2:1:1] | passed | 0.01051 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:1:2:1:2] | passed | 0.00992 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:1:2:1:3] | passed | 0.00812 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:1:2:2:1] | passed | 0.00844 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:1:2:2:2] | passed | 0.00873 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:1:2:2:3] | passed | 0.00821 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:2:1] | passed | 0.00914 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:4:6:2:2] | passed | 0.00888 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:5:1] | passed | 0.00912 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:5:2] | passed | 0.00816 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:5:3:1:1] | passed | 0.00925 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:5:3:1:2] | passed | 0.01139 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:5:3:1:3] | passed | 0.00971 seconds | +./spec/controllers/command_tower/inbox/message_blast_controller_spec.rb[1:5:3:1:4] | passed | 0.0076 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:1] | passed | 0.01005 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:2] | passed | 0.00894 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:3:1:1] | passed | 0.03253 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:3:2:1:1] | passed | 0.02896 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:3:2:2:1] | passed | 0.03006 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:3:2:3:1] | passed | 0.03089 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:3:3:1:1] | passed | 0.03351 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:3:3:2:1] | passed | 0.02872 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:3:3:3:1] | passed | 0.03162 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:4:1:1] | passed | 0.00889 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:4:1:2] | passed | 0.00774 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:4:1:3] | passed | 0.0078 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:4:2:1:1] | passed | 0.00793 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:4:2:1:2] | passed | 0.00868 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:4:2:1:3] | passed | 0.00906 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:4:2:2:1] | passed | 0.00817 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:4:2:2:2] | passed | 0.0105 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:1:4:2:2:3] | passed | 0.00808 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:1] | passed | 0.01155 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:2] | passed | 0.01359 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:3:1:1] | passed | 0.0104 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:3:1:2] | passed | 0.00994 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:3:1:3] | passed | 0.00885 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:3:1:4] | passed | 0.00891 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:4:1:1] | passed | 0.01217 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:4:1:2] | passed | 0.00762 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:4:1:3] | passed | 0.00741 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:4:2:1:1] | passed | 0.00959 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:4:2:1:2] | passed | 0.01078 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:4:2:1:3] | passed | 0.01007 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:4:2:2:1] | passed | 0.00899 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:4:2:2:2] | passed | 0.01009 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:2:4:2:2:3] | passed | 0.01089 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:1] | passed | 0.01122 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:2] | passed | 0.01061 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:3:1:1] | passed | 0.00737 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:3:1:2] | passed | 0.00744 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:3:1:3] | passed | 0.00859 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:3:1:4] | passed | 0.00885 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:4:1] | passed | 0.0114 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:4:2] | passed | 0.01025 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:5:1:1] | passed | 0.00851 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:5:1:2] | passed | 0.00915 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:5:1:3] | passed | 0.00738 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:5:2:1:1] | passed | 0.00958 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:5:2:1:2] | passed | 0.00943 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:5:2:1:3] | passed | 0.01056 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:5:2:2:1] | passed | 0.00942 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:5:2:2:2] | passed | 0.01224 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:3:5:2:2:3] | passed | 0.00731 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:1] | passed | 0.01601 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:2] | passed | 0.02178 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:3:1:1] | passed | 0.00967 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:3:1:2] | passed | 0.01061 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:3:1:3] | passed | 0.01056 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:3:1:4] | passed | 0.01141 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:4:1] | passed | 0.01401 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:4:2] | passed | 0.01312 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:5:1:1] | passed | 0.00875 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:5:1:2] | passed | 0.00876 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:5:1:3] | passed | 0.00906 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:5:2:1:1] | passed | 0.01198 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:5:2:1:2] | passed | 0.00861 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:5:2:1:3] | passed | 0.01023 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:5:2:2:1] | passed | 0.01045 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:5:2:2:2] | passed | 0.00918 seconds | +./spec/controllers/command_tower/inbox/message_controller_spec.rb[1:4:5:2:2:3] | passed | 0.00826 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:1:1] | passed | 0.00634 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:1:2] | passed | 0.01055 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:1:3:1:1] | passed | 0.00482 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:1:3:1:2] | passed | 0.00546 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:1:3:1:3] | passed | 0.00594 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:1:3:2:1:1] | passed | 0.00789 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:1:3:2:1:2] | passed | 0.00636 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:1:3:2:1:3] | passed | 0.00744 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:1:3:2:2:1] | passed | 0.007 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:1:3:2:2:2] | passed | 0.00614 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:1:3:2:2:3] | passed | 0.00608 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:1:1:1] | passed | 0.00841 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:1:1:2] | passed | 0.00922 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:1:1:3] | passed | 0.0094 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:1:1:4] | passed | 0.00878 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:2:1:1] | passed | 0.0084 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:2:1:2] | passed | 0.00936 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:2:1:3] | passed | 0.00883 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:2:1:4] | passed | 0.00854 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:3:1:1:1] | passed | 0.0085 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:3:1:1:2] | passed | 0.0083 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:3:1:1:3] | passed | 0.00778 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:3:1:1:4] | passed | 0.00809 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:3:2:1:1] | passed | 0.00796 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:3:2:1:2] | passed | 0.00814 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:3:2:1:3] | passed | 0.01389 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:1:3:2:1:4] | passed | 0.00836 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:2:1] | passed | 0.00943 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:2:2] | passed | 0.01129 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:2:3] | passed | 0.00932 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:3:1] | passed | 0.01294 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:3:2] | passed | 0.01015 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:3:3] | passed | 0.01033 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:4:1] | passed | 0.00954 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:4:2] | passed | 0.00885 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:5:1] | passed | 0.0085 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:5:2] | passed | 0.0085 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:5:3] | passed | 0.00768 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:6:1] | passed | 0.00865 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:6:2] | passed | 0.00682 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:6:3] | passed | 0.00764 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:7:1:1] | passed | 0.00971 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:7:1:2] | passed | 0.00652 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:7:1:3] | passed | 0.00714 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:7:2:1:1] | passed | 0.00801 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:7:2:1:2] | passed | 0.00789 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:7:2:1:3] | passed | 0.00764 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:7:2:2:1] | passed | 0.00801 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:7:2:2:2] | passed | 0.0078 seconds | +./spec/controllers/command_tower/user_controller_spec.rb[1:2:7:2:2:3] | passed | 0.00776 seconds | +./spec/integration_test/admin/change_settings_spec.rb[1:1] | passed | 0.06994 seconds | +./spec/integration_test/application_controller_actions/header_with_reset_spec.rb[1:1] | passed | 0.01834 seconds | +./spec/integration_test/auth/plain_text/integration_spec.rb[1:1] | passed | 0.06306 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:1:1] | passed | 0.00095 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:1:2:1] | passed | 0.00074 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:2:1] | passed | 0.0006 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:3:1:1] | passed | 0.00085 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:3:2:1] | passed | 0.0005 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:3:3:1:1] | passed | 0.00086 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:3:3:2:1] | passed | 0.00072 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:3:4:1] | passed | 0.00097 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:3:4:2:1] | passed | 0.00071 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:3:5:1] | passed | 0.0008 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:3:5:2:1] | passed | 0.00088 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:3:6] | passed | 0.00073 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:4:1] | passed | 0.00085 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:5:1] | passed | 0.00402 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:6:1:1:1] | passed | 0.00052 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:6:1:2:1:1] | passed | 0.00055 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:6:1:2:2:1] | passed | 0.00067 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:6:1:3:1:1] | passed | 0.00076 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:6:1:3:2:1] | passed | 0.00076 seconds | +./spec/lib/command_tower/authorization/entity_spec.rb[1:6:2:1] | passed | 0.00071 seconds | +./spec/lib/command_tower/authorization/role_spec.rb[1:1:1:1] | passed | 0.00124 seconds | +./spec/lib/command_tower/authorization/role_spec.rb[1:1:2:1] | passed | 0.00093 seconds | +./spec/lib/command_tower/authorization/role_spec.rb[1:1:3:1] | passed | 0.00057 seconds | +./spec/lib/command_tower/authorization/role_spec.rb[1:1:4:1] | passed | 0.00237 seconds | +./spec/lib/command_tower/authorization/role_spec.rb[1:1:5:1] | passed | 0.00162 seconds | +./spec/lib/command_tower/authorization/role_spec.rb[1:1:6] | passed | 0.00331 seconds | +./spec/lib/command_tower/authorization/role_spec.rb[1:2:1:1] | passed | 0.0029 seconds | +./spec/lib/command_tower/authorization/role_spec.rb[1:2:2:1] | passed | 0.00342 seconds | +./spec/lib/command_tower/authorization/role_spec.rb[1:2:3:1] | passed | 0.00428 seconds | +./spec/lib/command_tower/authorization/role_spec.rb[1:2:4:1] | passed | 0.0036 seconds | +./spec/lib/command_tower/authorization/role_spec.rb[1:2:4:2:1] | passed | 0.00268 seconds | +./spec/lib/command_tower/authorization/role_spec.rb[1:2:4:3:1] | passed | 0.00277 seconds | +./spec/lib/command_tower/authorization/role_spec.rb[1:2:4:3:2:1] | passed | 0.00362 seconds | +./spec/lib/command_tower/authorization/role_spec.rb[1:3:1:1] | passed | 0.00125 seconds | +./spec/lib/command_tower/authorization/role_spec.rb[1:3:2:1] | pending | 0.00001 seconds | +./spec/lib/command_tower/authorization/role_spec.rb[1:3:2:2] | passed | 0.00103 seconds | +./spec/lib/command_tower/authorization/role_spec.rb[1:3:3:1] | passed | 0.00079 seconds | +./spec/lib/command_tower/authorization_spec.rb[1:1:1] | passed | 0.00133 seconds | +./spec/lib/command_tower/authorization_spec.rb[1:1:2] | passed | 0.0012 seconds | +./spec/lib/command_tower/authorization_spec.rb[1:1:3] | passed | 0.00102 seconds | +./spec/lib/command_tower/authorization_spec.rb[1:1:4] | passed | 0.00258 seconds | +./spec/lib/command_tower/authorization_spec.rb[1:2:1:1] | passed | 0.00125 seconds | +./spec/lib/command_tower/authorization_spec.rb[1:2:2:1] | passed | 0.00295 seconds | +./spec/lib/command_tower/authorization_spec.rb[1:2:3:1] | passed | 0.00144 seconds | +./spec/models/user_secret_spec.rb[1:1:1] | passed | 0.00952 seconds | +./spec/models/user_secret_spec.rb[1:1:2] | passed | 0.00611 seconds | +./spec/models/user_secret_spec.rb[1:1:3:1] | passed | 0.00637 seconds | +./spec/models/user_secret_spec.rb[1:1:3:2] | passed | 0.00452 seconds | +./spec/models/user_secret_spec.rb[1:1:4:1] | passed | 0.00541 seconds | +./spec/models/user_secret_spec.rb[1:1:4:2] | passed | 0.00552 seconds | +./spec/models/user_secret_spec.rb[1:1:5:1] | passed | 0.00416 seconds | +./spec/models/user_secret_spec.rb[1:1:6:1] | passed | 0.00451 seconds | +./spec/models/user_secret_spec.rb[1:2:1:1] | passed | 0.00284 seconds | +./spec/models/user_secret_spec.rb[1:2:2:1] | passed | 0.00305 seconds | +./spec/models/user_secret_spec.rb[1:2:3:1] | passed | 0.00395 seconds | +./spec/models/user_secret_spec.rb[1:2:4:1] | passed | 0.00391 seconds | +./spec/models/user_secret_spec.rb[1:3:1] | passed | 0.01749 seconds | +./spec/models/user_secret_spec.rb[1:4:1] | passed | 0.00339 seconds | +./spec/models/user_secret_spec.rb[1:4:2:1] | passed | 0.00297 seconds | +./spec/models/user_secret_spec.rb[1:4:3:1] | passed | 0.00304 seconds | +./spec/models/user_secret_spec.rb[1:5:1] | passed | 0.00284 seconds | +./spec/models/user_secret_spec.rb[1:5:2:1] | passed | 0.00302 seconds | +./spec/models/user_secret_spec.rb[1:5:3:1] | passed | 0.00315 seconds | +./spec/models/user_secret_spec.rb[1:6:1] | passed | 0.00345 seconds | +./spec/models/user_secret_spec.rb[1:6:2:1] | passed | 0.00278 seconds | +./spec/models/user_secret_spec.rb[1:6:3:1] | passed | 0.00323 seconds | ./spec/models/user_spec.rb[1:1] | pending | 0.0008 seconds | -./spec/services/command_tower/authorize/validate_spec.rb[1:1:1] | passed | 0.00427 seconds | -./spec/services/command_tower/authorize/validate_spec.rb[1:1:2] | passed | 0.00565 seconds | -./spec/services/command_tower/authorize/validate_spec.rb[1:1:3:1] | passed | 0.00472 seconds | -./spec/services/command_tower/authorize/validate_spec.rb[1:1:3:2] | passed | 0.00405 seconds | -./spec/services/command_tower/authorize/validate_spec.rb[1:1:4:1] | passed | 0.00402 seconds | -./spec/services/command_tower/authorize/validate_spec.rb[1:1:4:2] | passed | 0.00408 seconds | -./spec/services/command_tower/authorize/validate_spec.rb[1:1:5:1] | passed | 0.00389 seconds | -./spec/services/command_tower/authorize/validate_spec.rb[1:1:5:2] | passed | 0.00394 seconds | -./spec/services/command_tower/inbox_service/blast/metadata_spec.rb[1:1:1] | passed | 0.00252 seconds | -./spec/services/command_tower/inbox_service/blast/metadata_spec.rb[1:1:2] | passed | 0.00148 seconds | -./spec/services/command_tower/inbox_service/blast/metadata_spec.rb[1:1:3:1] | passed | 0.01752 seconds | -./spec/services/command_tower/inbox_service/blast/metadata_spec.rb[1:1:3:2] | passed | 0.01772 seconds | -./spec/services/command_tower/inbox_service/blast/new_user_blaster_spec.rb[1:1:1] | passed | 0.03664 seconds | -./spec/services/command_tower/inbox_service/blast/new_user_blaster_spec.rb[1:1:2] | passed | 0.04588 seconds | -./spec/services/command_tower/inbox_service/blast/new_user_blaster_spec.rb[1:1:3] | passed | 0.0365 seconds | -./spec/services/command_tower/inbox_service/blast/retrieve_spec.rb[1:1:1] | passed | 0.00625 seconds | -./spec/services/command_tower/inbox_service/blast/retrieve_spec.rb[1:1:2] | passed | 0.00644 seconds | -./spec/services/command_tower/inbox_service/blast/retrieve_spec.rb[1:1:3] | passed | 0.01843 seconds | -./spec/services/command_tower/inbox_service/blast/retrieve_spec.rb[1:1:4:1] | passed | 0.00164 seconds | -./spec/services/command_tower/inbox_service/blast/retrieve_spec.rb[1:1:4:2] | passed | 0.0029 seconds | -./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:1:1] | passed | 0.03054 seconds | -./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:1:2] | passed | 0.03767 seconds | -./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:1:3] | passed | 0.02954 seconds | -./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:1:4] | passed | 0.02828 seconds | -./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:1:5:1] | passed | 0.03015 seconds | -./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:1:5:2] | passed | 0.02993 seconds | -./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:1:5:3] | passed | 0.02831 seconds | -./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:1:5:4] | passed | 0.02819 seconds | -./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:2:1] | passed | 0.03617 seconds | -./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:2:2] | passed | 0.03484 seconds | -./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:2:3] | passed | 0.03698 seconds | -./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:2:4] | passed | 0.03502 seconds | -./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:2:5:1] | passed | 0.02426 seconds | -./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:2:5:2] | passed | 0.02811 seconds | -./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:2:5:3] | passed | 0.02374 seconds | -./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:2:5:4] | passed | 0.0239 seconds | -./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:1] | passed | 0.00374 seconds | -./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:2] | passed | 0.00437 seconds | -./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:3:1] | passed | 0.01355 seconds | -./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:3:2] | passed | 0.00437 seconds | -./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:3:3:1] | passed | 0.0141 seconds | -./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:3:3:2] | passed | 0.01481 seconds | -./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:1] | passed | 0.01145 seconds | -./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:2] | passed | 0.01083 seconds | -./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:3:1] | passed | 0.00832 seconds | -./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:4:1] | passed | 0.0159 seconds | -./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:4:2] | passed | 0.01277 seconds | -./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:5] | passed | 0.01654 seconds | -./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:6:1] | passed | 0.01045 seconds | -./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:6:2] | passed | 0.01033 seconds | -./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:6:3:1] | passed | 0.0073 seconds | -./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:6:4:1] | passed | 0.00967 seconds | -./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:6:4:2] | passed | 0.00974 seconds | -./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:2:1] | passed | 0.01035 seconds | -./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:2:2] | passed | 0.00962 seconds | -./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:2:3:1] | passed | 0.00891 seconds | -./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:2:4:1] | passed | 0.01132 seconds | -./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:2:4:2] | passed | 0.0106 seconds | -./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:2:5] | passed | 0.01089 seconds | -./spec/services/command_tower/inbox_service/message/retrieve_spec.rb[1:1:1] | passed | 0.00538 seconds | -./spec/services/command_tower/inbox_service/message/retrieve_spec.rb[1:1:2] | passed | 0.00516 seconds | -./spec/services/command_tower/inbox_service/message/retrieve_spec.rb[1:1:3] | passed | 0.00699 seconds | -./spec/services/command_tower/inbox_service/message/retrieve_spec.rb[1:1:4:1] | passed | 0.00866 seconds | -./spec/services/command_tower/inbox_service/message/retrieve_spec.rb[1:1:4:2] | passed | 0.00531 seconds | -./spec/services/command_tower/inbox_service/message/send_spec.rb[1:1:1] | passed | 0.00418 seconds | -./spec/services/command_tower/inbox_service/message/send_spec.rb[1:1:2] | passed | 0.00505 seconds | -./spec/services/command_tower/inbox_service/message/send_spec.rb[1:1:3] | passed | 0.00756 seconds | -./spec/services/command_tower/inbox_service/message/send_spec.rb[1:1:4:1] | passed | 0.0065 seconds | -./spec/services/command_tower/inbox_service/message/send_spec.rb[1:1:4:2] | passed | 0.00762 seconds | -./spec/services/command_tower/inbox_service/message/send_spec.rb[1:1:4:3] | passed | 0.00928 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:1] | passed | 0.00552 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:2] | passed | 0.0063 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:3] | passed | 0.00477 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:4] | passed | 0.00528 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:5:1] | passed | 0.0058 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:5:2] | passed | 0.00579 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:5:3] | passed | 0.00587 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:5:4] | passed | 0.00547 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:6:1] | passed | 0.00525 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:6:2] | passed | 0.00599 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:7:1] | passed | 0.0015 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:7:2] | passed | 0.00122 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:8:1:1] | passed | 0.00481 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:8:1:2] | passed | 0.00545 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:8:2:1] | passed | 0.00461 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:8:2:2] | passed | 0.00468 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:8:3:1] | passed | 0.00489 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:8:3:2] | passed | 0.00458 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:9:1] | passed | 0.00459 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:9:2] | passed | 0.00407 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:10:1:2:1] | passed | 0.00588 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:10:1:2:2] | passed | 0.00778 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:10:1:2:3:1] | passed | 0.0062 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:10:1:2:3:2] | passed | 0.01335 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:10:2:1] | passed | 0.00596 seconds | -./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:10:2:2] | passed | 0.00486 seconds | -./spec/services/command_tower/jwt/decode_spec.rb[1:1:1] | passed | 0.006 seconds | -./spec/services/command_tower/jwt/decode_spec.rb[1:1:2] | passed | 0.01224 seconds | -./spec/services/command_tower/jwt/decode_spec.rb[1:1:3] | passed | 0.00307 seconds | -./spec/services/command_tower/jwt/decode_spec.rb[1:1:4:1] | passed | 0.00178 seconds | -./spec/services/command_tower/jwt/encode_spec.rb[1:1:1] | passed | 0.00154 seconds | -./spec/services/command_tower/jwt/encode_spec.rb[1:1:2] | passed | 0.00279 seconds | -./spec/services/command_tower/jwt/encode_spec.rb[1:1:3:1] | passed | 0.00084 seconds | -./spec/services/command_tower/jwt/encode_spec.rb[1:1:3:2] | passed | 0.00116 seconds | -./spec/services/command_tower/jwt/login_create_spec.rb[1:1:1] | passed | 0.00417 seconds | -./spec/services/command_tower/jwt/login_create_spec.rb[1:1:2] | passed | 0.00445 seconds | -./spec/services/command_tower/jwt/login_create_spec.rb[1:1:3] | passed | 0.00435 seconds | -./spec/services/command_tower/jwt/login_create_spec.rb[1:1:4:1] | passed | 0.00352 seconds | -./spec/services/command_tower/jwt/login_create_spec.rb[1:1:4:2] | passed | 0.00338 seconds | -./spec/services/command_tower/jwt/time_delay_token_spec.rb[1:1:1] | passed | 0.00132 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:1] | passed | 0.00515 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:2] | passed | 0.01178 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:3] | passed | 0.00519 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:4] | passed | 0.00608 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:5:1] | passed | 0.00969 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:6:1] | passed | 0.00631 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:6:2] | passed | 0.005 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:6:3] | passed | 0.00413 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:6:4] | passed | 0.00455 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:6:5] | passed | 0.0048 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:7:1] | passed | 0.0068 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:7:2] | passed | 0.01027 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:7:3] | passed | 0.00666 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:7:4] | passed | 0.00682 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:7:5] | passed | 0.00654 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:8:1] | passed | 0.00197 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:8:2] | passed | 0.00285 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:8:3] | passed | 0.00196 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:8:4] | passed | 0.00198 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:8:5] | passed | 0.00185 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:9:1] | passed | 0.00742 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:9:2] | passed | 0.006 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:9:3] | passed | 0.00565 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:9:4] | passed | 0.00524 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:9:5] | passed | 0.00537 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:10:1] | passed | 0.00135 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:10:2] | passed | 0.00226 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:10:3] | passed | 0.00144 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:10:4] | passed | 0.00132 seconds | -./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:10:5] | passed | 0.00147 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/required_spec.rb[1:1:1] | passed | 0.00419 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/required_spec.rb[1:1:2] | passed | 0.00496 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/required_spec.rb[1:1:3] | passed | 0.00468 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/required_spec.rb[1:1:4:1] | passed | 0.00445 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/required_spec.rb[1:1:4:2] | passed | 0.00457 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/required_spec.rb[1:1:4:3] | passed | 0.00426 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/send_spec.rb[1:1:1] | passed | 0.0108 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/send_spec.rb[1:1:2] | passed | 0.00813 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/send_spec.rb[1:1:3:1] | passed | 0.00696 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/send_spec.rb[1:1:3:2] | passed | 0.01055 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/send_spec.rb[1:1:3:3] | passed | 0.00802 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:1] | passed | 0.00743 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:2] | passed | 0.03441 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:3:1] | passed | 0.00536 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:3:2] | passed | 0.00639 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:3:3] | passed | 0.00528 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:3:4] | passed | 0.00579 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:3:5] | passed | 0.00549 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:4:1] | passed | 0.00885 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:4:2] | passed | 0.0088 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:4:3] | passed | 0.00794 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:4:4] | passed | 0.00848 seconds | -./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:4:5] | passed | 0.00743 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:1] | passed | 0.00717 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:2] | passed | 0.00627 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:3] | passed | 0.00652 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:4] | passed | 0.00631 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:5:1] | passed | 0.00347 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:5:2] | passed | 0.00583 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:5:3] | passed | 0.01118 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:5:4] | passed | 0.00332 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:5:5] | passed | 0.00354 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:6:1] | passed | 0.00802 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:6:2] | passed | 0.00537 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:6:3] | passed | 0.00549 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:6:4] | passed | 0.00569 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:6:5] | passed | 0.00633 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:1] | passed | 0.00622 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:2] | passed | 0.00669 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:3] | passed | 0.00728 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:4] | passed | 0.00733 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:5:1] | passed | 0.00353 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:5:2] | passed | 0.00448 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:5:3] | passed | 0.00345 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:5:4] | passed | 0.00339 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:5:5] | passed | 0.00369 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:6:1] | passed | 0.00527 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:6:2] | passed | 0.00548 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:6:3] | passed | 0.00584 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:6:4] | passed | 0.00528 seconds | -./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:6:5] | passed | 0.00611 seconds | -./spec/services/command_tower/secrets/cleanse_spec.rb[1:1:1] | passed | 0.00522 seconds | -./spec/services/command_tower/secrets/cleanse_spec.rb[1:1:2:1] | passed | 0.00468 seconds | -./spec/services/command_tower/secrets/cleanse_spec.rb[1:1:2:2:1] | passed | 0.00664 seconds | -./spec/services/command_tower/secrets/cleanse_spec.rb[1:1:3:1] | passed | 0.00563 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:1:1:1] | passed | 0.00721 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:1:2:1] | passed | 0.01427 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:1:2:2] | passed | 0.01651 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:1:2:3:1] | passed | 0.01487 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:1:2:3:2] | passed | 0.02179 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:1:3:1] | passed | 0.00819 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:2:1:1] | passed | 0.00684 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:2:2:1] | passed | 0.01584 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:2:2:2] | passed | 0.01644 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:2:2:3:1] | passed | 0.01635 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:2:2:3:2] | passed | 0.01659 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:2:3:1] | passed | 0.00793 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:3:1] | passed | 0.00699 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:3:2:1] | passed | 0.00703 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:3:3:1] | passed | 0.01791 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:3:3:2] | passed | 0.01652 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:3:3:3:1] | passed | 0.01519 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:3:3:3:2] | passed | 0.01689 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:3:4:1] | passed | 0.00851 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:1:1:1] | passed | 0.00707 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:1:2:1] | passed | 0.01849 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:1:2:2] | passed | 0.02363 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:1:2:3:1] | passed | 0.01614 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:1:2:3:2] | passed | 0.01806 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:1:3:1] | passed | 0.00759 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:2:1:1] | passed | 0.00649 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:2:2:1] | passed | 0.01481 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:2:2:2] | passed | 0.01611 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:2:2:3:1] | passed | 0.01733 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:2:2:3:2] | passed | 0.01799 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:2:3:1] | passed | 0.00789 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:3:1] | passed | 0.0078 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:3:2:1] | passed | 0.00701 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:3:3:1] | passed | 0.01551 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:3:3:2] | passed | 0.01612 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:3:3:3:1] | passed | 0.01493 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:3:3:3:2] | passed | 0.01793 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:3:4:1] | passed | 0.00784 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:1:1:1] | passed | 0.00693 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:1:2:1] | passed | 0.01567 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:1:2:2] | passed | 0.0156 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:1:2:3:1] | passed | 0.01625 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:1:2:3:2] | passed | 0.01857 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:1:3:1] | passed | 0.00819 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:2:1:1] | passed | 0.00643 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:2:2:1] | passed | 0.01424 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:2:2:2] | passed | 0.0151 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:2:2:3:1] | passed | 0.01469 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:2:2:3:2] | passed | 0.01627 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:2:3:1] | passed | 0.00806 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:3:1] | passed | 0.00748 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:3:2:1] | passed | 0.00702 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:3:3:1] | passed | 0.0157 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:3:3:2] | passed | 0.01835 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:3:3:3:1] | passed | 0.01603 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:3:3:3:2] | passed | 0.01846 seconds | -./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:3:4:1] | passed | 0.00821 seconds | -./spec/services/command_tower/secrets/verify_spec.rb[1:1:1] | passed | 0.00548 seconds | -./spec/services/command_tower/secrets/verify_spec.rb[1:1:2] | passed | 0.00463 seconds | -./spec/services/command_tower/secrets/verify_spec.rb[1:1:3:1] | passed | 0.00141 seconds | -./spec/services/command_tower/secrets/verify_spec.rb[1:1:3:2] | passed | 0.00168 seconds | -./spec/services/command_tower/secrets/verify_spec.rb[1:1:3:3] | passed | 0.00184 seconds | -./spec/services/command_tower/secrets/verify_spec.rb[1:1:4:1] | passed | 0.00611 seconds | -./spec/services/command_tower/secrets/verify_spec.rb[1:1:4:2] | passed | 0.00851 seconds | -./spec/services/command_tower/secrets/verify_spec.rb[1:1:4:3] | passed | 0.0068 seconds | -./spec/services/command_tower/secrets/verify_spec.rb[1:1:4:4] | passed | 0.00672 seconds | -./spec/services/command_tower/secrets/verify_spec.rb[1:1:4:5:1] | passed | 0.00647 seconds | -./spec/services/command_tower/service_base_spec.rb[1:1:1:1:1] | passed | 0.00168 seconds | -./spec/services/command_tower/service_base_spec.rb[1:1:1:2:1] | passed | 0.00247 seconds | -./spec/services/command_tower/service_base_spec.rb[1:1:1:2:2:1] | passed | 0.00181 seconds | -./spec/services/command_tower/service_base_spec.rb[1:1:2] | passed | 0.00199 seconds | -./spec/services/command_tower/service_base_spec.rb[1:2:1:1:1] | passed | 0.00218 seconds | -./spec/services/command_tower/service_base_spec.rb[1:2:1:2:1] | passed | 0.00239 seconds | -./spec/services/command_tower/service_base_spec.rb[1:2:1:2:2:1] | passed | 0.00253 seconds | -./spec/services/command_tower/service_base_spec.rb[1:2:2] | passed | 0.00265 seconds | -./spec/services/command_tower/service_base_spec.rb[1:3:1:1:1:1] | passed | 0.00274 seconds | -./spec/services/command_tower/service_base_spec.rb[1:3:1:1:2:1] | passed | 0.00246 seconds | -./spec/services/command_tower/service_base_spec.rb[1:3:1:2:1] | passed | 0.00263 seconds | -./spec/services/command_tower/service_base_spec.rb[1:3:1:3:1] | passed | 0.00309 seconds | -./spec/services/command_tower/service_base_spec.rb[1:3:1:3:2:1] | passed | 0.00253 seconds | -./spec/services/command_tower/service_base_spec.rb[1:3:2] | passed | 0.00412 seconds | -./spec/services/command_tower/service_base_spec.rb[1:4:1:1:1] | passed | 0.00169 seconds | -./spec/services/command_tower/service_base_spec.rb[1:4:1:2:1] | passed | 0.00206 seconds | -./spec/services/command_tower/service_base_spec.rb[1:4:1:3:1] | passed | 0.00322 seconds | -./spec/services/command_tower/service_base_spec.rb[1:4:1:3:2:1] | passed | 0.00222 seconds | -./spec/services/command_tower/service_base_spec.rb[1:4:2] | passed | 0.00614 seconds | -./spec/services/command_tower/service_base_spec.rb[1:5:1:1:1:1] | passed | 0.00211 seconds | -./spec/services/command_tower/service_base_spec.rb[1:5:1:1:2:1] | passed | 0.00238 seconds | -./spec/services/command_tower/service_base_spec.rb[1:5:1:2:1] | passed | 0.00231 seconds | -./spec/services/command_tower/service_base_spec.rb[1:5:1:3:1] | passed | 0.00257 seconds | -./spec/services/command_tower/service_base_spec.rb[1:5:1:3:2:1] | passed | 0.00226 seconds | -./spec/services/command_tower/service_base_spec.rb[1:5:2] | passed | 0.00222 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:1:1] | passed | 0.00411 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:1:2] | passed | 0.00235 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:1] | passed | 0.00835 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:2] | passed | 0.01533 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:1] | passed | 0.08763 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:2] | passed | 0.10539 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:3:1] | passed | 0.06621 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:3:2] | passed | 0.05818 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:3:3:1] | passed | 0.05631 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:3:3:2] | passed | 0.05772 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:3:4:1] | passed | 0.05746 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:3:4:2] | passed | 0.0579 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:4:1] | passed | 0.06058 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:4:2] | passed | 0.06837 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:4:3:1] | passed | 0.05896 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:4:3:2] | passed | 0.0668 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:4:4:1] | passed | 0.06424 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:4:4:2] | passed | 0.07449 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:5:1] | passed | 0.06001 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:5:2] | passed | 0.07832 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:5:3:1] | passed | 0.06395 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:6:1:1] | passed | 0.05653 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:6:1:2] | passed | 0.06018 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:6:2:1] | passed | 0.06769 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:6:2:2] | passed | 0.06474 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:6:3:1] | passed | 0.06024 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:1:6:3:2] | passed | 0.06296 seconds | +./spec/services/command_tower/admin_service/users_spec.rb[1:1:3:1:2:1] | passed | 0.00943 seconds | +./spec/services/command_tower/authorize/validate_spec.rb[1:1:1] | passed | 0.00485 seconds | +./spec/services/command_tower/authorize/validate_spec.rb[1:1:2] | passed | 0.00522 seconds | +./spec/services/command_tower/authorize/validate_spec.rb[1:1:3:1] | passed | 0.0054 seconds | +./spec/services/command_tower/authorize/validate_spec.rb[1:1:3:2] | passed | 0.00517 seconds | +./spec/services/command_tower/authorize/validate_spec.rb[1:1:4:1] | passed | 0.00537 seconds | +./spec/services/command_tower/authorize/validate_spec.rb[1:1:4:2] | passed | 0.00483 seconds | +./spec/services/command_tower/authorize/validate_spec.rb[1:1:5:1] | passed | 0.00449 seconds | +./spec/services/command_tower/authorize/validate_spec.rb[1:1:5:2] | passed | 0.0043 seconds | +./spec/services/command_tower/inbox_service/blast/metadata_spec.rb[1:1:1] | passed | 0.00105 seconds | +./spec/services/command_tower/inbox_service/blast/metadata_spec.rb[1:1:2] | passed | 0.00169 seconds | +./spec/services/command_tower/inbox_service/blast/metadata_spec.rb[1:1:3:1] | passed | 0.01938 seconds | +./spec/services/command_tower/inbox_service/blast/metadata_spec.rb[1:1:3:2] | passed | 0.02066 seconds | +./spec/services/command_tower/inbox_service/blast/new_user_blaster_spec.rb[1:1:1] | passed | 0.03426 seconds | +./spec/services/command_tower/inbox_service/blast/new_user_blaster_spec.rb[1:1:2] | passed | 0.04415 seconds | +./spec/services/command_tower/inbox_service/blast/new_user_blaster_spec.rb[1:1:3] | passed | 0.04459 seconds | +./spec/services/command_tower/inbox_service/blast/retrieve_spec.rb[1:1:1] | passed | 0.00525 seconds | +./spec/services/command_tower/inbox_service/blast/retrieve_spec.rb[1:1:2] | passed | 0.00467 seconds | +./spec/services/command_tower/inbox_service/blast/retrieve_spec.rb[1:1:3] | passed | 0.0093 seconds | +./spec/services/command_tower/inbox_service/blast/retrieve_spec.rb[1:1:4:1] | passed | 0.00127 seconds | +./spec/services/command_tower/inbox_service/blast/retrieve_spec.rb[1:1:4:2] | passed | 0.00093 seconds | +./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:1:1] | passed | 0.02837 seconds | +./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:1:2] | passed | 0.03553 seconds | +./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:1:3] | passed | 0.02999 seconds | +./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:1:4] | passed | 0.03296 seconds | +./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:1:5:1] | passed | 0.03481 seconds | +./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:1:5:2] | passed | 0.03373 seconds | +./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:1:5:3] | passed | 0.03232 seconds | +./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:1:5:4] | passed | 0.03171 seconds | +./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:2:1] | passed | 0.04573 seconds | +./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:2:2] | passed | 0.03778 seconds | +./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:2:3] | passed | 0.03431 seconds | +./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:2:4] | passed | 0.05213 seconds | +./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:2:5:1] | passed | 0.02778 seconds | +./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:2:5:2] | passed | 0.02852 seconds | +./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:2:5:3] | passed | 0.02699 seconds | +./spec/services/command_tower/inbox_service/blast/upsert_spec.rb[1:1:2:5:4] | passed | 0.02738 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:1] | passed | 0.00417 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:2] | passed | 0.00679 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:3:1] | passed | 0.00525 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:3:2] | passed | 0.00476 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:3:3:1] | passed | 0.01143 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:3:3:2] | passed | 0.01128 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:1] | passed | 0.02466 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:2] | passed | 0.03204 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:3:1] | passed | 0.0283 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:3:2] | passed | 0.02837 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:3:3:1] | passed | 0.03345 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:3:3:2] | passed | 0.02638 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:3:4:1] | passed | 0.03022 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:3:4:2] | passed | 0.03126 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:4:1] | passed | 0.03458 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:4:2] | passed | 0.02865 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:4:3:1] | passed | 0.02828 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:4:3:2] | passed | 0.03229 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:4:4:1] | passed | 0.03342 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:4:4:2] | passed | 0.02746 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:5:1] | passed | 0.03348 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:5:2] | passed | 0.02766 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:5:3:1] | passed | 0.02722 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:6:1:1] | passed | 0.03076 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:6:1:2] | passed | 0.0324 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:6:2:1] | passed | 0.03199 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:6:2:2] | passed | 0.03375 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:6:3:1] | passed | 0.02834 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:1:6:3:2] | passed | 0.03173 seconds | +./spec/services/command_tower/inbox_service/message/metadata_spec.rb[1:1:4:1:2:1] | passed | 0.00494 seconds | +./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:1] | passed | 0.01092 seconds | +./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:2] | passed | 0.01101 seconds | +./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:3:1] | passed | 0.00948 seconds | +./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:4:1] | passed | 0.01167 seconds | +./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:4:2] | passed | 0.01111 seconds | +./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:5] | passed | 0.02268 seconds | +./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:6:1] | passed | 0.01118 seconds | +./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:6:2] | passed | 0.01155 seconds | +./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:6:3:1] | passed | 0.00673 seconds | +./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:6:4:1] | passed | 0.00992 seconds | +./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:1:6:4:2] | passed | 0.00935 seconds | +./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:2:1] | passed | 0.01541 seconds | +./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:2:2] | passed | 0.04743 seconds | +./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:2:3:1] | passed | 0.00917 seconds | +./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:2:4:1] | passed | 0.01126 seconds | +./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:2:4:2] | passed | 0.01157 seconds | +./spec/services/command_tower/inbox_service/message/modify_spec.rb[1:1:2:5] | passed | 0.01572 seconds | +./spec/services/command_tower/inbox_service/message/retrieve_spec.rb[1:1:1] | passed | 0.00668 seconds | +./spec/services/command_tower/inbox_service/message/retrieve_spec.rb[1:1:2] | passed | 0.0059 seconds | +./spec/services/command_tower/inbox_service/message/retrieve_spec.rb[1:1:3] | passed | 0.00624 seconds | +./spec/services/command_tower/inbox_service/message/retrieve_spec.rb[1:1:4:1] | passed | 0.00507 seconds | +./spec/services/command_tower/inbox_service/message/retrieve_spec.rb[1:1:4:2] | passed | 0.0043 seconds | +./spec/services/command_tower/inbox_service/message/send_spec.rb[1:1:1] | passed | 0.00375 seconds | +./spec/services/command_tower/inbox_service/message/send_spec.rb[1:1:2] | passed | 0.00516 seconds | +./spec/services/command_tower/inbox_service/message/send_spec.rb[1:1:3] | passed | 0.00796 seconds | +./spec/services/command_tower/inbox_service/message/send_spec.rb[1:1:4:1] | passed | 0.00699 seconds | +./spec/services/command_tower/inbox_service/message/send_spec.rb[1:1:4:2] | passed | 0.0077 seconds | +./spec/services/command_tower/inbox_service/message/send_spec.rb[1:1:4:3] | passed | 0.00828 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:1] | passed | 0.00983 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:2] | passed | 0.00775 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:3] | passed | 0.00648 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:4] | passed | 0.00578 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:5:1] | passed | 0.0049 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:5:2] | passed | 0.00462 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:5:3] | passed | 0.00442 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:5:4] | passed | 0.00478 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:6:1] | passed | 0.00404 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:6:2] | passed | 0.00466 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:7:1] | passed | 0.00079 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:7:2] | passed | 0.00111 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:8:1:1] | passed | 0.00413 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:8:1:2] | passed | 0.00427 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:8:2:1] | passed | 0.00395 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:8:2:2] | passed | 0.00366 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:8:3:1] | passed | 0.0036 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:8:3:2] | passed | 0.00443 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:9:1] | passed | 0.00485 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:9:2] | passed | 0.0036 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:10:1:2:1] | passed | 0.01673 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:10:1:2:2] | passed | 0.00703 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:10:1:2:3:1] | passed | 0.00865 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:10:1:2:3:2] | passed | 0.00863 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:10:2:1] | passed | 0.00461 seconds | +./spec/services/command_tower/jwt/authenticate_user_spec.rb[1:1:10:2:2] | passed | 0.00423 seconds | +./spec/services/command_tower/jwt/decode_spec.rb[1:1:1] | passed | 0.00089 seconds | +./spec/services/command_tower/jwt/decode_spec.rb[1:1:2] | passed | 0.00113 seconds | +./spec/services/command_tower/jwt/decode_spec.rb[1:1:3] | passed | 0.00104 seconds | +./spec/services/command_tower/jwt/decode_spec.rb[1:1:4:1] | passed | 0.0007 seconds | +./spec/services/command_tower/jwt/encode_spec.rb[1:1:1] | passed | 0.00121 seconds | +./spec/services/command_tower/jwt/encode_spec.rb[1:1:2] | passed | 0.00894 seconds | +./spec/services/command_tower/jwt/encode_spec.rb[1:1:3:1] | passed | 0.00109 seconds | +./spec/services/command_tower/jwt/encode_spec.rb[1:1:3:2] | passed | 0.00406 seconds | +./spec/services/command_tower/jwt/login_create_spec.rb[1:1:1] | passed | 0.00483 seconds | +./spec/services/command_tower/jwt/login_create_spec.rb[1:1:2] | passed | 0.00489 seconds | +./spec/services/command_tower/jwt/login_create_spec.rb[1:1:3] | passed | 0.00528 seconds | +./spec/services/command_tower/jwt/login_create_spec.rb[1:1:4:1] | passed | 0.00356 seconds | +./spec/services/command_tower/jwt/login_create_spec.rb[1:1:4:2] | passed | 0.00424 seconds | +./spec/services/command_tower/jwt/time_delay_token_spec.rb[1:1:1] | passed | 0.00101 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:1] | passed | 0.00488 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:2] | passed | 0.00649 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:3] | passed | 0.00576 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:4] | passed | 0.00836 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:5:1] | passed | 0.01867 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:6:1] | passed | 0.00424 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:6:2] | passed | 0.00582 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:6:3] | passed | 0.00529 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:6:4] | passed | 0.00532 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:6:5] | passed | 0.00428 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:7:1] | passed | 0.0058 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:7:2] | passed | 0.00666 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:7:3] | passed | 0.00725 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:7:4] | passed | 0.0069 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:7:5] | passed | 0.00972 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:8:1] | passed | 0.00231 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:8:2] | passed | 0.00277 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:8:3] | passed | 0.00182 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:8:4] | passed | 0.00169 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:8:5] | passed | 0.00299 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:9:1] | passed | 0.00527 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:9:2] | passed | 0.00598 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:9:3] | passed | 0.00551 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:9:4] | passed | 0.00498 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:9:5] | passed | 0.00608 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:10:1] | passed | 0.00143 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:10:2] | passed | 0.00204 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:10:3] | passed | 0.00224 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:10:4] | passed | 0.00125 seconds | +./spec/services/command_tower/login_strategy/plain_text/create_spec.rb[1:1:10:5] | passed | 0.0012 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/required_spec.rb[1:1:1] | passed | 0.00462 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/required_spec.rb[1:1:2] | passed | 0.00354 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/required_spec.rb[1:1:3] | passed | 0.00397 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/required_spec.rb[1:1:4:1] | passed | 0.0038 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/required_spec.rb[1:1:4:2] | passed | 0.00355 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/required_spec.rb[1:1:4:3] | passed | 0.00398 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/send_spec.rb[1:1:1] | passed | 0.00726 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/send_spec.rb[1:1:2] | passed | 0.00776 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/send_spec.rb[1:1:3:1] | passed | 0.00916 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/send_spec.rb[1:1:3:2] | passed | 0.00771 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/send_spec.rb[1:1:3:3] | passed | 0.00726 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:1] | passed | 0.00601 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:2] | passed | 0.00611 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:3:1] | passed | 0.00487 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:3:2] | passed | 0.00494 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:3:3] | passed | 0.00547 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:3:4] | passed | 0.00542 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:3:5] | passed | 0.00866 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:4:1] | passed | 0.00899 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:4:2] | passed | 0.00849 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:4:3] | passed | 0.00714 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:4:4] | passed | 0.0081 seconds | +./spec/services/command_tower/login_strategy/plain_text/email_verification/verify_spec.rb[1:1:4:5] | passed | 0.00667 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:1] | passed | 0.00582 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:2] | passed | 0.00598 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:3] | passed | 0.00697 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:4] | passed | 0.00657 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:5:1] | passed | 0.00517 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:5:2] | passed | 0.00496 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:5:3] | passed | 0.00425 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:5:4] | passed | 0.00443 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:5:5] | passed | 0.0045 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:6:1] | passed | 0.00645 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:6:2] | passed | 0.00622 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:6:3] | passed | 0.00657 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:6:4] | passed | 0.00691 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:1:6:5] | passed | 0.00673 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:1] | passed | 0.00693 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:2] | passed | 0.00698 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:3] | passed | 0.00796 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:4] | passed | 0.00721 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:5:1] | passed | 0.00411 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:5:2] | passed | 0.00395 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:5:3] | passed | 0.00916 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:5:4] | passed | 0.00385 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:5:5] | passed | 0.00404 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:6:1] | passed | 0.00578 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:6:2] | passed | 0.00547 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:6:3] | passed | 0.0063 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:6:4] | passed | 0.00597 seconds | +./spec/services/command_tower/login_strategy/plain_text/login_spec.rb[1:1:2:6:5] | passed | 0.00706 seconds | +./spec/services/command_tower/secrets/cleanse_spec.rb[1:1:1] | passed | 0.00325 seconds | +./spec/services/command_tower/secrets/cleanse_spec.rb[1:1:2:1] | passed | 0.00487 seconds | +./spec/services/command_tower/secrets/cleanse_spec.rb[1:1:2:2:1] | passed | 0.00617 seconds | +./spec/services/command_tower/secrets/cleanse_spec.rb[1:1:3:1] | passed | 0.00452 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:1:1:1] | passed | 0.00895 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:1:2:1] | passed | 0.01546 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:1:2:2] | passed | 0.01557 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:1:2:3:1] | passed | 0.01669 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:1:2:3:2] | passed | 0.07362 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:1:3:1] | passed | 0.01031 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:2:1:1] | passed | 0.007 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:2:2:1] | passed | 0.01765 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:2:2:2] | passed | 0.01998 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:2:2:3:1] | passed | 0.0166 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:2:2:3:2] | passed | 0.01845 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:2:3:1] | passed | 0.01206 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:3:1] | passed | 0.00749 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:3:2:1] | passed | 0.0062 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:3:3:1] | passed | 0.01404 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:3:3:2] | passed | 0.01794 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:3:3:3:1] | passed | 0.01553 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:3:3:3:2] | passed | 0.01831 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:1:3:4:1] | passed | 0.00761 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:1:1:1] | passed | 0.00714 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:1:2:1] | passed | 0.01577 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:1:2:2] | passed | 0.0336 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:1:2:3:1] | passed | 0.01736 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:1:2:3:2] | passed | 0.01904 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:1:3:1] | passed | 0.00867 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:2:1:1] | passed | 0.00782 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:2:2:1] | passed | 0.01515 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:2:2:2] | passed | 0.01472 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:2:2:3:1] | passed | 0.01515 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:2:2:3:2] | passed | 0.01667 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:2:3:1] | passed | 0.00837 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:3:1] | passed | 0.00767 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:3:2:1] | passed | 0.00663 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:3:3:1] | passed | 0.01441 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:3:3:2] | passed | 0.02026 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:3:3:3:1] | passed | 0.016 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:3:3:3:2] | passed | 0.0168 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:2:3:4:1] | passed | 0.00793 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:1:1:1] | passed | 0.00665 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:1:2:1] | passed | 0.01501 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:1:2:2] | passed | 0.01516 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:1:2:3:1] | passed | 0.01619 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:1:2:3:2] | passed | 0.01684 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:1:3:1] | passed | 0.00828 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:2:1:1] | passed | 0.00729 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:2:2:1] | passed | 0.01463 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:2:2:2] | passed | 0.01368 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:2:2:3:1] | passed | 0.01726 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:2:2:3:2] | passed | 0.01492 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:2:3:1] | passed | 0.01714 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:3:1] | passed | 0.00666 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:3:2:1] | passed | 0.00767 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:3:3:1] | passed | 0.01372 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:3:3:2] | passed | 0.01221 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:3:3:3:1] | passed | 0.01517 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:3:3:3:2] | passed | 0.01667 seconds | +./spec/services/command_tower/secrets/generate_spec.rb[1:1:3:3:4:1] | passed | 0.00874 seconds | +./spec/services/command_tower/secrets/verify_spec.rb[1:1:1] | passed | 0.00465 seconds | +./spec/services/command_tower/secrets/verify_spec.rb[1:1:2] | passed | 0.00427 seconds | +./spec/services/command_tower/secrets/verify_spec.rb[1:1:3:1] | passed | 0.00104 seconds | +./spec/services/command_tower/secrets/verify_spec.rb[1:1:3:2] | passed | 0.00119 seconds | +./spec/services/command_tower/secrets/verify_spec.rb[1:1:3:3] | passed | 0.00116 seconds | +./spec/services/command_tower/secrets/verify_spec.rb[1:1:4:1] | passed | 0.01278 seconds | +./spec/services/command_tower/secrets/verify_spec.rb[1:1:4:2] | passed | 0.00708 seconds | +./spec/services/command_tower/secrets/verify_spec.rb[1:1:4:3] | passed | 0.00859 seconds | +./spec/services/command_tower/secrets/verify_spec.rb[1:1:4:4] | passed | 0.00735 seconds | +./spec/services/command_tower/secrets/verify_spec.rb[1:1:4:5:1] | passed | 0.00701 seconds | +./spec/services/command_tower/service_base_spec.rb[1:1:1:1:1] | passed | 0.00167 seconds | +./spec/services/command_tower/service_base_spec.rb[1:1:1:2:1] | passed | 0.00232 seconds | +./spec/services/command_tower/service_base_spec.rb[1:1:1:2:2:1] | passed | 0.00248 seconds | +./spec/services/command_tower/service_base_spec.rb[1:1:2] | passed | 0.0018 seconds | +./spec/services/command_tower/service_base_spec.rb[1:2:1:1:1] | passed | 0.0015 seconds | +./spec/services/command_tower/service_base_spec.rb[1:2:1:2:1] | passed | 0.00211 seconds | +./spec/services/command_tower/service_base_spec.rb[1:2:1:2:2:1] | passed | 0.00183 seconds | +./spec/services/command_tower/service_base_spec.rb[1:2:2] | passed | 0.00156 seconds | +./spec/services/command_tower/service_base_spec.rb[1:3:1:1:1:1] | passed | 0.00184 seconds | +./spec/services/command_tower/service_base_spec.rb[1:3:1:1:2:1] | passed | 0.00222 seconds | +./spec/services/command_tower/service_base_spec.rb[1:3:1:2:1] | passed | 0.00276 seconds | +./spec/services/command_tower/service_base_spec.rb[1:3:1:3:1] | passed | 0.00252 seconds | +./spec/services/command_tower/service_base_spec.rb[1:3:1:3:2:1] | passed | 0.0019 seconds | +./spec/services/command_tower/service_base_spec.rb[1:3:2] | passed | 0.00347 seconds | +./spec/services/command_tower/service_base_spec.rb[1:4:1:1:1] | passed | 0.00246 seconds | +./spec/services/command_tower/service_base_spec.rb[1:4:1:2:1] | passed | 0.0017 seconds | +./spec/services/command_tower/service_base_spec.rb[1:4:1:3:1] | passed | 0.00179 seconds | +./spec/services/command_tower/service_base_spec.rb[1:4:1:3:2:1] | passed | 0.00183 seconds | +./spec/services/command_tower/service_base_spec.rb[1:4:2] | passed | 0.00227 seconds | +./spec/services/command_tower/service_base_spec.rb[1:5:1:1:1:1] | passed | 0.00227 seconds | +./spec/services/command_tower/service_base_spec.rb[1:5:1:1:2:1] | passed | 0.00264 seconds | +./spec/services/command_tower/service_base_spec.rb[1:5:1:2:1] | passed | 0.00343 seconds | +./spec/services/command_tower/service_base_spec.rb[1:5:1:3:1] | passed | 0.00234 seconds | +./spec/services/command_tower/service_base_spec.rb[1:5:1:3:2:1] | passed | 0.00308 seconds | +./spec/services/command_tower/service_base_spec.rb[1:5:2] | passed | 0.00239 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:1:1] | passed | 0.00252 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:1:2] | passed | 0.00245 seconds | ./spec/services/command_tower/service_base_spec.rb[1:6:1:3:1] | passed | 0.00245 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:1:3:2] | passed | 0.00277 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:1:4:1:1] | passed | 0.0029 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:1:4:2:1] | passed | 0.00273 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:1:4:2:2] | passed | 0.0026 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:1:4:3:1] | passed | 0.00249 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:1:4:3:2] | passed | 0.00284 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:1:4:4:1] | passed | 0.00287 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:1:4:4:2] | passed | 0.00268 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:2:1] | passed | 0.00247 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:2:2] | passed | 0.00244 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:2:3:1] | passed | 0.00265 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:2:4:1:1] | passed | 0.00298 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:2:4:2:1] | passed | 0.00224 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:2:4:2:2] | passed | 0.00239 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:2:4:3:1] | passed | 0.00292 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:2:4:3:2] | passed | 0.00269 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:2:4:4:1] | passed | 0.00229 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:2:4:4:2] | passed | 0.00345 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:3:1] | passed | 0.00215 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:3:2] | passed | 0.00237 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:3:3:1] | passed | 0.00345 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:3:4:1:1] | passed | 0.00328 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:3:4:2:1] | passed | 0.00209 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:3:4:2:2] | passed | 0.0035 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:3:4:3:1] | passed | 0.0027 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:3:4:3:2] | passed | 0.00245 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:3:4:4:1] | passed | 0.00263 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:3:4:4:2] | passed | 0.00243 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:4:1] | passed | 0.00281 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:4:2] | passed | 0.00265 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:4:3] | passed | 0.00225 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:4:4:1] | passed | 0.00242 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:4:5:1:1] | passed | 0.00293 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:4:5:2:1] | passed | 0.00325 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:4:5:2:2] | passed | 0.0023 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:4:5:3:1] | passed | 0.00337 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:4:5:3:2] | passed | 0.00312 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:4:5:4:1] | passed | 0.00232 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:4:5:4:2] | passed | 0.00253 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:5:1] | passed | 0.00233 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:5:2] | passed | 0.00258 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:5:3:1] | passed | 0.00303 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:5:4:1:1] | passed | 0.00251 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:5:4:2:1] | passed | 0.00236 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:5:4:2:2] | passed | 0.00273 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:5:4:3:1] | passed | 0.00268 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:5:4:3:2] | passed | 0.00249 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:5:4:4:1] | passed | 0.00393 seconds | -./spec/services/command_tower/service_base_spec.rb[1:6:5:4:4:2] | passed | 0.00716 seconds | -./spec/services/command_tower/service_base_spec.rb[1:7:1:1] | passed | 0.00243 seconds | -./spec/services/command_tower/service_base_spec.rb[1:7:1:2:1] | passed | 0.00268 seconds | -./spec/services/command_tower/service_base_spec.rb[1:7:1:2:2:1] | passed | 0.00269 seconds | -./spec/services/command_tower/service_base_spec.rb[1:7:1:3:1] | passed | 0.0077 seconds | -./spec/services/command_tower/service_base_spec.rb[1:7:1:3:2:1] | passed | 0.00286 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:1:1] | passed | 0.00246 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:2:1] | passed | 0.00325 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:2:2] | passed | 0.00309 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:2:3] | passed | 0.00299 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:2:4] | passed | 0.00328 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:3:1] | passed | 0.00276 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:3:2] | passed | 0.00284 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:3:3:1] | passed | 0.00295 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:3:4:1:1] | passed | 0.00324 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:3:4:1:2:1] | passed | 0.00286 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:3:4:2:1] | passed | 0.00295 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:3:4:2:2] | passed | 0.0032 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:3:4:2:3:1] | passed | 0.00317 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:3:4:2:3:2] | passed | 0.00314 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:3:4:3:1] | passed | 0.00295 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:3:4:3:2] | passed | 0.00271 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:3:4:3:3:1] | passed | 0.00315 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:3:4:3:3:2] | passed | 0.00273 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:4:1] | passed | 0.00257 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:4:2] | passed | 0.00273 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:4:3:1] | passed | 0.00264 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:4:4:1:1] | passed | 0.00276 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:4:4:1:2:1] | passed | 0.00262 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:4:4:2:1] | passed | 0.00294 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:4:4:2:2] | passed | 0.0028 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:4:4:2:3:1] | passed | 0.00278 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:4:4:2:3:2] | passed | 0.0027 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:4:4:3:1] | passed | 0.00269 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:4:4:3:2] | passed | 0.00251 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:4:4:3:3:1] | passed | 0.00258 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:4:4:3:3:2] | passed | 0.00251 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:5:1] | passed | 0.00294 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:5:2] | passed | 0.00297 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:5:3:1] | passed | 0.00304 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:5:4:1:1] | passed | 0.00298 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:5:4:1:2:1] | passed | 0.00303 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:5:4:2:1] | passed | 0.00334 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:5:4:2:2] | passed | 0.0031 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:5:4:2:3:1] | passed | 0.00334 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:5:4:2:3:2] | passed | 0.00326 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:5:4:3:1] | passed | 0.00323 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:5:4:3:2] | passed | 0.00301 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:5:4:3:3:1] | passed | 0.00304 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:5:4:3:3:2] | passed | 0.00266 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:6:1] | passed | 0.00285 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:6:2] | passed | 0.00376 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:6:3:1] | passed | 0.00301 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:6:4:1:1] | passed | 0.00293 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:6:4:1:2:1] | passed | 0.00266 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:6:4:2:1] | passed | 0.00274 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:6:4:2:2] | passed | 0.00298 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:6:4:2:3:1] | passed | 0.00262 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:6:4:2:3:2] | passed | 0.00291 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:6:4:3:1] | passed | 0.00419 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:6:4:3:2] | passed | 0.0028 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:6:4:3:3:1] | passed | 0.00273 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:6:4:3:3:2] | passed | 0.00261 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:7:1] | passed | 0.00332 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:7:2] | passed | 0.00297 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:7:3:1] | passed | 0.00305 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:7:4:1:1] | passed | 0.00344 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:7:4:1:2:1] | passed | 0.0032 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:7:4:2:1] | passed | 0.00314 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:7:4:2:2] | passed | 0.00304 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:7:4:2:3:1] | passed | 0.00279 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:7:4:2:3:2] | passed | 0.00298 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:7:4:3:1] | passed | 0.00286 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:7:4:3:2] | passed | 0.00305 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:7:4:3:3:1] | passed | 0.00353 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:7:4:3:3:2] | passed | 0.00273 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:8:1:1] | passed | 0.00246 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:8:2:1] | passed | 0.00265 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:1:1] | passed | 0.00289 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:1:2] | passed | 0.0031 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:1:3:1] | passed | 0.0026 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:1:1] | passed | 0.00302 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:1:2:1] | passed | 0.00315 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:2:1] | passed | 0.00315 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:2:2] | passed | 0.00271 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:2:3:1] | passed | 0.00324 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:2:3:2] | passed | 0.00295 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:3:1] | passed | 0.00275 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:3:2] | passed | 0.00277 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:3:3:1] | passed | 0.00295 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:3:3:2] | passed | 0.00303 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:2] | passed | 0.00246 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:3] | passed | 0.00278 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:4:1] | passed | 0.00241 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:5:1:1] | passed | 0.00262 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:5:1:2:1] | passed | 0.00275 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:5:2:1] | passed | 0.00294 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:5:2:2] | passed | 0.00267 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:5:2:3:1] | passed | 0.00269 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:5:2:3:2] | passed | 0.00304 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:5:3:1] | passed | 0.00397 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:5:3:2] | passed | 0.00344 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:5:3:3:1] | passed | 0.00519 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:5:3:3:2] | passed | 0.00267 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:1] | passed | 0.00316 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:2] | passed | 0.00308 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:3:1] | passed | 0.00304 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:1:1] | passed | 0.0032 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:1:2:1] | passed | 0.00287 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:2:1] | passed | 0.00291 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:2:2] | passed | 0.00308 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:2:3:1] | passed | 0.00322 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:2:3:2] | passed | 0.00295 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:3:1] | passed | 0.00297 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:3:2] | passed | 0.00266 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:3:3:1] | passed | 0.00301 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:3:3:2] | passed | 0.00327 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:1] | passed | 0.0031 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:2] | passed | 0.00284 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:3:1] | passed | 0.00276 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:1:1] | passed | 0.00308 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:1:2:1] | passed | 0.00281 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:2:1] | passed | 0.00284 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:2:2] | passed | 0.0032 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:2:3:1] | passed | 0.00308 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:2:3:2] | passed | 0.00277 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:3:1] | passed | 0.00294 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:3:2] | passed | 0.00278 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:3:3:1] | passed | 0.00271 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:3:3:2] | passed | 0.00305 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:1] | passed | 0.00286 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:2] | passed | 0.00265 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:3:1] | passed | 0.00269 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:1:1] | passed | 0.00322 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:1:2:1] | passed | 0.00283 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:2:1] | passed | 0.0034 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:2:2] | passed | 0.00301 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:2:3:1] | passed | 0.00277 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:2:3:2] | passed | 0.003 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:3:1] | passed | 0.00341 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:3:2] | passed | 0.01273 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:3:3:1] | passed | 0.00278 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:3:3:2] | passed | 0.00308 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:1] | passed | 0.00301 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:2] | passed | 0.00276 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:3:1] | passed | 0.00323 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:1:3:2] | passed | 0.00362 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:1:4:1:1] | passed | 0.00326 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:1:4:2:1] | passed | 0.00214 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:1:4:2:2] | passed | 0.00232 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:1:4:3:1] | passed | 0.00229 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:1:4:3:2] | passed | 0.00247 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:1:4:4:1] | passed | 0.00276 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:1:4:4:2] | passed | 0.00241 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:2:1] | passed | 0.0026 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:2:2] | passed | 0.0037 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:2:3:1] | passed | 0.00251 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:2:4:1:1] | passed | 0.00276 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:2:4:2:1] | passed | 0.00294 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:2:4:2:2] | passed | 0.00381 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:2:4:3:1] | passed | 0.00459 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:2:4:3:2] | passed | 0.00244 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:2:4:4:1] | passed | 0.00237 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:2:4:4:2] | passed | 0.00276 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:3:1] | passed | 0.00366 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:3:2] | passed | 0.00239 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:3:3:1] | passed | 0.00285 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:3:4:1:1] | passed | 0.00255 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:3:4:2:1] | passed | 0.00211 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:3:4:2:2] | passed | 0.00336 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:3:4:3:1] | passed | 0.00389 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:3:4:3:2] | passed | 0.0039 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:3:4:4:1] | passed | 0.00285 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:3:4:4:2] | passed | 0.00238 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:4:1] | passed | 0.00204 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:4:2] | passed | 0.00272 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:4:3] | passed | 0.00272 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:4:4:1] | passed | 0.00254 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:4:5:1:1] | passed | 0.00259 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:4:5:2:1] | passed | 0.00598 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:4:5:2:2] | passed | 0.00347 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:4:5:3:1] | passed | 0.00311 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:4:5:3:2] | passed | 0.00259 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:4:5:4:1] | passed | 0.00255 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:4:5:4:2] | passed | 0.00226 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:5:1] | passed | 0.00411 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:5:2] | passed | 0.00242 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:5:3:1] | passed | 0.00323 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:5:4:1:1] | passed | 0.00274 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:5:4:2:1] | passed | 0.0024 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:5:4:2:2] | passed | 0.00408 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:5:4:3:1] | passed | 0.00281 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:5:4:3:2] | passed | 0.00392 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:5:4:4:1] | passed | 0.00223 seconds | +./spec/services/command_tower/service_base_spec.rb[1:6:5:4:4:2] | passed | 0.00344 seconds | +./spec/services/command_tower/service_base_spec.rb[1:7:1:1] | passed | 0.00216 seconds | +./spec/services/command_tower/service_base_spec.rb[1:7:1:2:1] | passed | 0.00237 seconds | +./spec/services/command_tower/service_base_spec.rb[1:7:1:2:2:1] | passed | 0.00247 seconds | +./spec/services/command_tower/service_base_spec.rb[1:7:1:3:1] | passed | 0.00201 seconds | +./spec/services/command_tower/service_base_spec.rb[1:7:1:3:2:1] | passed | 0.00322 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:1:1] | passed | 0.00223 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:2:1] | passed | 0.00216 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:2:2] | passed | 0.00266 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:2:3] | passed | 0.00215 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:2:4] | passed | 0.00205 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:3:1] | passed | 0.00233 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:3:2] | passed | 0.00222 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:3:3:1] | passed | 0.00223 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:3:4:1:1] | passed | 0.00246 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:3:4:1:2:1] | passed | 0.00281 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:3:4:2:1] | passed | 0.00248 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:3:4:2:2] | passed | 0.00254 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:3:4:2:3:1] | passed | 0.00237 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:3:4:2:3:2] | passed | 0.00266 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:3:4:3:1] | passed | 0.00315 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:3:4:3:2] | passed | 0.00215 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:3:4:3:3:1] | passed | 0.00296 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:3:4:3:3:2] | passed | 0.00254 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:4:1] | passed | 0.00243 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:4:2] | passed | 0.00284 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:4:3:1] | passed | 0.00217 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:4:4:1:1] | passed | 0.0027 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:4:4:1:2:1] | passed | 0.00284 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:4:4:2:1] | passed | 0.00304 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:4:4:2:2] | passed | 0.00258 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:4:4:2:3:1] | passed | 0.00219 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:4:4:2:3:2] | passed | 0.003 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:4:4:3:1] | passed | 0.00285 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:4:4:3:2] | passed | 0.00228 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:4:4:3:3:1] | passed | 0.00305 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:4:4:3:3:2] | passed | 0.00236 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:5:1] | passed | 0.00231 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:5:2] | passed | 0.00209 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:5:3:1] | passed | 0.00242 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:5:4:1:1] | passed | 0.00252 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:5:4:1:2:1] | passed | 0.00222 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:5:4:2:1] | passed | 0.00224 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:5:4:2:2] | passed | 0.00198 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:5:4:2:3:1] | passed | 0.00399 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:5:4:2:3:2] | passed | 0.00213 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:5:4:3:1] | passed | 0.00207 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:5:4:3:2] | passed | 0.00201 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:5:4:3:3:1] | passed | 0.00293 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:5:4:3:3:2] | passed | 0.00195 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:6:1] | passed | 0.00209 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:6:2] | passed | 0.00317 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:6:3:1] | passed | 0.00191 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:6:4:1:1] | passed | 0.00291 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:6:4:1:2:1] | passed | 0.00235 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:6:4:2:1] | passed | 0.00275 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:6:4:2:2] | passed | 0.00282 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:6:4:2:3:1] | passed | 0.00236 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:6:4:2:3:2] | passed | 0.00274 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:6:4:3:1] | passed | 0.00259 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:6:4:3:2] | passed | 0.00233 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:6:4:3:3:1] | passed | 0.00237 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:6:4:3:3:2] | passed | 0.00252 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:7:1] | passed | 0.0024 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:7:2] | passed | 0.00315 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:7:3:1] | passed | 0.00217 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:7:4:1:1] | passed | 0.00245 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:7:4:1:2:1] | passed | 0.00258 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:7:4:2:1] | passed | 0.00265 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:7:4:2:2] | passed | 0.00212 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:7:4:2:3:1] | passed | 0.00262 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:7:4:2:3:2] | passed | 0.00283 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:7:4:3:1] | passed | 0.00288 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:7:4:3:2] | passed | 0.00271 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:7:4:3:3:1] | passed | 0.00231 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:7:4:3:3:2] | passed | 0.00258 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:8:1:1] | passed | 0.00224 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:8:2:1] | passed | 0.00228 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:1:1] | passed | 0.00311 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:1:2] | passed | 0.00239 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:1:3:1] | passed | 0.00252 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:1:1] | passed | 0.00335 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:1:2:1] | passed | 0.00323 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:2:1] | passed | 0.00322 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:2:2] | passed | 0.00361 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:2:3:1] | passed | 0.00281 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:2:3:2] | passed | 0.00358 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:3:1] | passed | 0.00245 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:3:2] | passed | 0.00276 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:3:3:1] | passed | 0.00266 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:1:4:3:3:2] | passed | 0.0026 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:2] | passed | 0.00264 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:3] | passed | 0.00268 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:4:1] | passed | 0.0045 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:5:1:1] | passed | 0.00355 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:5:1:2:1] | passed | 0.00313 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:5:2:1] | passed | 0.00289 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:5:2:2] | passed | 0.00319 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:5:2:3:1] | passed | 0.00316 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:5:2:3:2] | passed | 0.00301 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:5:3:1] | passed | 0.00295 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:5:3:2] | passed | 0.0037 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:5:3:3:1] | passed | 0.00309 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:5:3:3:2] | passed | 0.00236 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:1] | passed | 0.0022 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:2] | passed | 0.00309 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:3:1] | passed | 0.00266 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:1:1] | passed | 0.0026 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:1:2:1] | passed | 0.0022 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:2:1] | passed | 0.00244 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:2:2] | passed | 0.00329 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:2:3:1] | passed | 0.00223 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:2:3:2] | passed | 0.00212 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:3:1] | passed | 0.0032 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:3:2] | passed | 0.0023 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:3:3:1] | passed | 0.00312 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:1:4:3:3:2] | passed | 0.00214 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:1] | passed | 0.00267 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:2] | passed | 0.00304 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:3:1] | passed | 0.00318 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:1:1] | passed | 0.00287 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:1:2:1] | passed | 0.00243 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:2:1] | passed | 0.00226 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:2:2] | passed | 0.00311 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:2:3:1] | passed | 0.00355 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:2:3:2] | passed | 0.00307 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:3:1] | passed | 0.00333 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:3:2] | passed | 0.00256 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:3:3:1] | passed | 0.00242 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:2:4:3:3:2] | passed | 0.00295 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:1] | passed | 0.00264 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:2] | passed | 0.00278 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:3:1] | passed | 0.00307 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:1:1] | passed | 0.00241 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:1:2:1] | passed | 0.00322 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:2:1] | passed | 0.00288 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:2:2] | passed | 0.00273 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:2:3:1] | passed | 0.00241 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:2:3:2] | passed | 0.00242 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:3:1] | passed | 0.00224 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:3:2] | passed | 0.00288 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:3:3:1] | passed | 0.00264 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:3:4:3:3:2] | passed | 0.00234 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:1] | passed | 0.00237 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:2] | passed | 0.00229 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:3:1] | passed | 0.00248 seconds | ./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:4:1:1] | passed | 0.00339 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:4:1:2:1] | passed | 0.00303 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:4:2:1] | passed | 0.00288 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:4:2:2] | passed | 0.00312 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:4:2:3:1] | passed | 0.00277 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:4:2:3:2] | passed | 0.00281 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:4:3:1] | passed | 0.00292 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:4:3:2] | passed | 0.00266 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:4:3:3:1] | passed | 0.00308 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:4:3:3:2] | passed | 0.00274 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:1] | passed | 0.00269 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:2] | passed | 0.00282 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:3:1] | passed | 0.00314 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:1:1] | passed | 0.00293 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:1:2:1] | passed | 0.00331 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:2:1] | passed | 0.00289 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:2:2] | passed | 0.00294 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:2:3:1] | passed | 0.00326 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:2:3:2] | passed | 0.00278 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:3:1] | passed | 0.00332 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:3:2] | passed | 0.0028 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:3:3:1] | passed | 0.00325 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:3:3:2] | passed | 0.00277 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:10:1] | passed | 0.00312 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:10:2] | passed | 0.00272 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:10:3:1] | passed | 0.00273 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:10:4:1:1] | passed | 0.00295 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:10:4:1:2:1] | passed | 0.00327 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:10:4:2:1] | passed | 0.00334 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:10:4:2:2] | passed | 0.00285 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:10:4:2:3:1] | passed | 0.00314 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:10:4:2:3:2] | passed | 0.00292 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:10:4:3:1] | passed | 0.00301 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:10:4:3:2] | passed | 0.00271 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:10:4:3:3:1] | passed | 0.00301 seconds | -./spec/services/command_tower/service_base_spec.rb[1:8:10:4:3:3:2] | passed | 0.00262 seconds | -./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:1:1] | passed | 0.00405 seconds | -./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:1:2] | passed | 0.00434 seconds | -./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:1:3:1] | passed | 0.00321 seconds | -./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:1:3:2] | passed | 0.00364 seconds | -./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:1:3:3] | passed | 0.004 seconds | -./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:2:1] | passed | 0.00438 seconds | -./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:2:2] | passed | 0.00491 seconds | -./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:2:3:1] | passed | 0.0061 seconds | -./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:2:3:2] | passed | 0.00348 seconds | -./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:2:3:3] | passed | 0.00463 seconds | -./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:3:1] | passed | 0.00417 seconds | -./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:3:2] | passed | 0.00472 seconds | -./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:3:3] | passed | 0.00439 seconds | -./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:3:4:1] | passed | 0.0033 seconds | -./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:3:4:2] | passed | 0.00335 seconds | -./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:3:4:3] | passed | 0.00385 seconds | -./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:2:1] | passed | 0.00429 seconds | -./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:2:2] | passed | 0.00456 seconds | -./spec/services/command_tower/user_attributes/roles_spec.rb[1:1:1] | passed | 0.00801 seconds | -./spec/services/command_tower/user_attributes/roles_spec.rb[1:1:2] | passed | 0.01665 seconds | -./spec/services/command_tower/user_attributes/roles_spec.rb[1:1:3:1] | passed | 0.00599 seconds | -./spec/services/command_tower/user_attributes/roles_spec.rb[1:1:3:2] | passed | 0.00642 seconds | -./spec/services/command_tower/user_attributes/roles_spec.rb[1:1:3:3] | passed | 0.00656 seconds | -./spec/services/command_tower/user_attributes/roles_spec.rb[1:1:4:1] | passed | 0.00747 seconds | -./spec/services/command_tower/user_attributes/roles_spec.rb[1:1:4:2] | passed | 0.00804 seconds | -./spec/services/command_tower/username/available_spec.rb[1:1:1:1] | passed | 0.00107 seconds | -./spec/services/command_tower/username/available_spec.rb[1:1:2:1] | passed | 0.00149 seconds | -./spec/services/command_tower/username/available_spec.rb[1:1:3:1] | passed | 0.0024 seconds | -./spec/services/command_tower/username/available_spec.rb[1:1:4:1] | passed | 0.00144 seconds | -./spec/services/command_tower/username/available_spec.rb[1:1:4:2] | passed | 0.00128 seconds | -./spec/services/command_tower/username/available_spec.rb[1:1:4:3:1] | passed | 0.00135 seconds | -./spec/services/command_tower/username/available_spec.rb[1:1:4:3:2] | passed | 0.00171 seconds | -./spec/services/command_tower/username/available_spec.rb[1:1:4:3:3] | passed | 0.00132 seconds | -./spec/services/command_tower/username/available_spec.rb[1:1:5:1] | passed | 0.00718 seconds | -./spec/services/command_tower/username/available_spec.rb[1:1:5:2] | passed | 0.00385 seconds | -./spec/services/command_tower/username/available_spec.rb[1:1:5:3:1] | passed | 0.00389 seconds | -./spec/services/command_tower/username/available_spec.rb[1:1:5:3:2] | passed | 0.00466 seconds | -./spec/services/command_tower/username/available_spec.rb[1:1:5:3:3] | passed | 0.00404 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:4:1:2:1] | passed | 0.00234 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:4:2:1] | passed | 0.00981 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:4:2:2] | passed | 0.00253 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:4:2:3:1] | passed | 0.00246 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:4:2:3:2] | passed | 0.00275 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:4:3:1] | passed | 0.00317 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:4:3:2] | passed | 0.00295 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:4:3:3:1] | passed | 0.00282 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:4:4:3:3:2] | passed | 0.00215 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:1] | passed | 0.00228 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:2] | passed | 0.00254 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:3:1] | passed | 0.00368 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:1:1] | passed | 0.00251 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:1:2:1] | passed | 0.00265 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:2:1] | passed | 0.00254 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:2:2] | passed | 0.00218 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:2:3:1] | passed | 0.003 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:2:3:2] | passed | 0.00284 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:3:1] | passed | 0.00258 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:3:2] | passed | 0.00209 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:3:3:1] | passed | 0.00211 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:9:6:5:4:3:3:2] | passed | 0.00255 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:10:1] | passed | 0.00215 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:10:2] | passed | 0.00342 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:10:3:1] | passed | 0.00198 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:10:4:1:1] | passed | 0.0035 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:10:4:1:2:1] | passed | 0.0024 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:10:4:2:1] | passed | 0.00254 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:10:4:2:2] | passed | 0.00223 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:10:4:2:3:1] | passed | 0.00215 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:10:4:2:3:2] | passed | 0.00231 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:10:4:3:1] | passed | 0.00372 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:10:4:3:2] | passed | 0.00225 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:10:4:3:3:1] | passed | 0.00275 seconds | +./spec/services/command_tower/service_base_spec.rb[1:8:10:4:3:3:2] | passed | 0.00269 seconds | +./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:1:1] | passed | 0.00331 seconds | +./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:1:2] | passed | 0.00415 seconds | +./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:1:3:1] | passed | 0.00371 seconds | +./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:1:3:2] | passed | 0.00286 seconds | +./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:1:3:3] | passed | 0.00315 seconds | +./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:2:1] | passed | 0.00413 seconds | +./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:2:2] | passed | 0.00401 seconds | +./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:2:3:1] | passed | 0.00354 seconds | +./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:2:3:2] | passed | 0.00316 seconds | +./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:2:3:3] | passed | 0.00388 seconds | +./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:3:1] | passed | 0.00551 seconds | +./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:3:2] | passed | 0.00339 seconds | +./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:3:3] | passed | 0.00418 seconds | +./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:3:4:1] | passed | 0.00267 seconds | +./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:3:4:2] | passed | 0.00328 seconds | +./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:1:3:4:3] | passed | 0.00317 seconds | +./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:2:1] | passed | 0.00448 seconds | +./spec/services/command_tower/user_attributes/modify_spec.rb[1:1:2:2] | passed | 0.00381 seconds | +./spec/services/command_tower/user_attributes/roles_spec.rb[1:1:1] | passed | 0.00559 seconds | +./spec/services/command_tower/user_attributes/roles_spec.rb[1:1:2] | passed | 0.00791 seconds | +./spec/services/command_tower/user_attributes/roles_spec.rb[1:1:3:1] | passed | 0.00502 seconds | +./spec/services/command_tower/user_attributes/roles_spec.rb[1:1:3:2] | passed | 0.00505 seconds | +./spec/services/command_tower/user_attributes/roles_spec.rb[1:1:3:3] | passed | 0.00567 seconds | +./spec/services/command_tower/user_attributes/roles_spec.rb[1:1:4:1] | passed | 0.00593 seconds | +./spec/services/command_tower/user_attributes/roles_spec.rb[1:1:4:2] | passed | 0.0064 seconds | +./spec/services/command_tower/username/available_spec.rb[1:1:1:1] | passed | 0.0011 seconds | +./spec/services/command_tower/username/available_spec.rb[1:1:2:1] | passed | 0.00241 seconds | +./spec/services/command_tower/username/available_spec.rb[1:1:3:1] | passed | 0.00201 seconds | +./spec/services/command_tower/username/available_spec.rb[1:1:4:1] | passed | 0.00175 seconds | +./spec/services/command_tower/username/available_spec.rb[1:1:4:2] | passed | 0.00112 seconds | +./spec/services/command_tower/username/available_spec.rb[1:1:4:3:1] | passed | 0.00126 seconds | +./spec/services/command_tower/username/available_spec.rb[1:1:4:3:2] | passed | 0.00209 seconds | +./spec/services/command_tower/username/available_spec.rb[1:1:4:3:3] | passed | 0.00394 seconds | +./spec/services/command_tower/username/available_spec.rb[1:1:5:1] | passed | 0.00476 seconds | +./spec/services/command_tower/username/available_spec.rb[1:1:5:2] | passed | 0.00519 seconds | +./spec/services/command_tower/username/available_spec.rb[1:1:5:3:1] | passed | 0.00362 seconds | +./spec/services/command_tower/username/available_spec.rb[1:1:5:3:2] | passed | 0.00283 seconds | +./spec/services/command_tower/username/available_spec.rb[1:1:5:3:3] | passed | 0.00366 seconds | diff --git a/spec/services/command_tower/admin_service/users_spec.rb b/spec/services/command_tower/admin_service/users_spec.rb index 3f074d2..e514e95 100644 --- a/spec/services/command_tower/admin_service/users_spec.rb +++ b/spec/services/command_tower/admin_service/users_spec.rb @@ -12,7 +12,7 @@ end it "sets metadata" do - expect(call.schema).to be_a(CommandTower::Schema::Admin::Users) + expect(call.schema).to be_a(CommandTower::Schema::Shared::Admin::Users) expect(call.schema.count).to eq(1) expect(call.schema.users.length).to eq(1) end diff --git a/spec/services/command_tower/inbox_service/blast/metadata_spec.rb b/spec/services/command_tower/inbox_service/blast/metadata_spec.rb index 1cc9eea..7c1f988 100644 --- a/spec/services/command_tower/inbox_service/blast/metadata_spec.rb +++ b/spec/services/command_tower/inbox_service/blast/metadata_spec.rb @@ -9,7 +9,7 @@ end it "sets metadata_blast" do - expect(call.metadata).to be_a(CommandTower::Schema::Inbox::MessageBlastMetadata) + expect(call.metadata).to be_a(CommandTower::Schema::Shared::Inbox::MessageBlastMetadata) expect(call.metadata.count).to eq(0) end @@ -21,8 +21,8 @@ end it "sets metadata_blast" do - expect(call.metadata).to be_a(CommandTower::Schema::Inbox::MessageBlastMetadata) - expect(call.metadata.entities).to all(be_a(CommandTower::Schema::Inbox::MessageBlastEntity)) + expect(call.metadata).to be_a(CommandTower::Schema::Shared::Inbox::MessageBlastMetadata) + expect(call.metadata.entities).to all(be_a(CommandTower::Schema::Entities::Inbox::MessageBlastEntity)) expect(call.metadata.count).to eq(5) end end diff --git a/spec/services/command_tower/inbox_service/blast/retrieve_spec.rb b/spec/services/command_tower/inbox_service/blast/retrieve_spec.rb index 13c4331..cd85ca2 100644 --- a/spec/services/command_tower/inbox_service/blast/retrieve_spec.rb +++ b/spec/services/command_tower/inbox_service/blast/retrieve_spec.rb @@ -13,7 +13,7 @@ end it "returns message_blast" do - expect(call.message_blast).to be_a(CommandTower::Schema::Inbox::MessageBlastEntity) + expect(call.message_blast).to be_a(CommandTower::Schema::Entities::Inbox::MessageBlastEntity) end it "returns correct content" do diff --git a/spec/services/command_tower/inbox_service/blast/upsert_spec.rb b/spec/services/command_tower/inbox_service/blast/upsert_spec.rb index fcfb45c..343b39f 100644 --- a/spec/services/command_tower/inbox_service/blast/upsert_spec.rb +++ b/spec/services/command_tower/inbox_service/blast/upsert_spec.rb @@ -40,7 +40,7 @@ end it "sets blast context" do - expect(call.blast).to be_a(CommandTower::Schema::Inbox::BlastResponse) + expect(call.blast).to be_a(CommandTower::Schema::Inbox::Blast::Create::Response) end context "without existing_users" do @@ -59,7 +59,7 @@ end it "sets blast context" do - expect(call.blast).to be_a(CommandTower::Schema::Inbox::BlastResponse) + expect(call.blast).to be_a(CommandTower::Schema::Inbox::Blast::Create::Response) end end end @@ -80,7 +80,7 @@ end it "sets blast context" do - expect(call.blast).to be_a(CommandTower::Schema::Inbox::BlastResponse) + expect(call.blast).to be_a(CommandTower::Schema::Inbox::Blast::Create::Response) end context "without existing_users" do @@ -99,7 +99,7 @@ end it "sets blast context" do - expect(call.blast).to be_a(CommandTower::Schema::Inbox::BlastResponse) + expect(call.blast).to be_a(CommandTower::Schema::Inbox::Blast::Create::Response) end end end diff --git a/spec/services/command_tower/inbox_service/message/metadata_spec.rb b/spec/services/command_tower/inbox_service/message/metadata_spec.rb index f2e33b1..8065c17 100644 --- a/spec/services/command_tower/inbox_service/message/metadata_spec.rb +++ b/spec/services/command_tower/inbox_service/message/metadata_spec.rb @@ -13,7 +13,7 @@ end it "sets empty metadata" do - expect(call.metadata).to be_a(CommandTower::Schema::Inbox::Metadata) + expect(call.metadata).to be_a(CommandTower::Schema::Shared::Inbox::Metadata) expect(call.metadata.count).to eq(0) expect(call.metadata.entities).to eq([]) end @@ -27,7 +27,7 @@ end it "sets metadata" do - expect(call.metadata).to be_a(CommandTower::Schema::Inbox::Metadata) + expect(call.metadata).to be_a(CommandTower::Schema::Shared::Inbox::Metadata) expect(call.metadata.count).to eq(count) end @@ -39,7 +39,7 @@ end it "sets metadata" do - expect(call.metadata).to be_a(CommandTower::Schema::Inbox::Metadata) + expect(call.metadata).to be_a(CommandTower::Schema::Shared::Inbox::Metadata) expect(call.metadata.count).to eq(count) end end diff --git a/spec/services/command_tower/inbox_service/message/modify_spec.rb b/spec/services/command_tower/inbox_service/message/modify_spec.rb index 99f1400..350d344 100644 --- a/spec/services/command_tower/inbox_service/message/modify_spec.rb +++ b/spec/services/command_tower/inbox_service/message/modify_spec.rb @@ -15,7 +15,7 @@ end it "returns modified" do - expect(call.modified).to be_a(CommandTower::Schema::Inbox::Modified) + expect(call.modified).to be_a(CommandTower::Schema::Shared::Inbox::Modified) expect(call.modified.type).to eq(type) expect(call.modified.ids).to include(*ids) expect(call.modified.count).to eq(count) @@ -38,7 +38,7 @@ end it "returns modified" do - expect(call.modified).to be_a(CommandTower::Schema::Inbox::Modified) + expect(call.modified).to be_a(CommandTower::Schema::Shared::Inbox::Modified) expect(call.modified.type).to eq(type) expect(call.modified.ids).to include(*ids.reject { _1 == additional_id }) expect(call.modified.count).to eq(count) diff --git a/spec/services/command_tower/inbox_service/message/retrieve_spec.rb b/spec/services/command_tower/inbox_service/message/retrieve_spec.rb index e2e66a8..968d346 100644 --- a/spec/services/command_tower/inbox_service/message/retrieve_spec.rb +++ b/spec/services/command_tower/inbox_service/message/retrieve_spec.rb @@ -13,7 +13,7 @@ end it "sets message" do - expect(call.message).to be_a(CommandTower::Schema::Inbox::MessageEntity) + expect(call.message).to be_a(CommandTower::Schema::Entities::Inbox::MessageEntity) expect(call.message.title).to eq(message.title) expect(call.message.id).to eq(message.id) From ec26f5bd7d450ef528866e06ddb010d4b5dc2164 Mon Sep 17 00:00:00 2001 From: Matt Taylor Date: Sat, 17 Jan 2026 16:13:30 -0800 Subject: [PATCH 03/10] updating controllers --- .../command_tower/admin_controller.rb | 8 ++-- .../command_tower/application_controller.rb | 10 ++--- .../auth/plain_text_controller.rb | 43 ++++++++++++++----- .../inbox/message_blast_controller.rb | 7 +-- .../command_tower/inbox/message_controller.rb | 6 +-- .../command_tower/user_controller.rb | 6 +-- 6 files changed, 52 insertions(+), 28 deletions(-) diff --git a/app/controllers/command_tower/admin_controller.rb b/app/controllers/command_tower/admin_controller.rb index 22efe99..5f1c26e 100644 --- a/app/controllers/command_tower/admin_controller.rb +++ b/app/controllers/command_tower/admin_controller.rb @@ -23,7 +23,7 @@ def show def modify result = CommandTower::UserAttributes::Modify.(user:, admin_user:, **modify_params) if result.success? - schema = CommandTower::Schema::User.convert_user_object(user: user.reload) + schema = CommandTower::Schema::Shared::User.convert_user_object(user: user.reload) status = 201 schema_succesful!(status:, schema:) else @@ -32,7 +32,7 @@ def modify status: 400, message: result.msg, argument_object: result.invalid_argument_hash, - schema: CommandTower::Schema::PlainText::LoginRequest + schema: CommandTower::Schema::Admin::Modify::Request ) else server_error!(result:) @@ -44,7 +44,7 @@ def modify def modify_role result = CommandTower::UserAttributes::Roles.(user:, admin_user:, roles: params[:roles] || []) if result.success? - schema = CommandTower::Schema::User.convert_user_object(user: user.reload) + schema = CommandTower::Schema::Shared::User.convert_user_object(user: user.reload) status = 201 schema_succesful!(status:, schema:) else @@ -53,7 +53,7 @@ def modify_role status: 400, message: result.msg, argument_object: result.invalid_argument_hash, - schema: CommandTower::Schema::PlainText::LoginRequest + schema: CommandTower::Schema::Admin::Modify::Request ) else server_error!(result:) diff --git a/app/controllers/command_tower/application_controller.rb b/app/controllers/command_tower/application_controller.rb index e9734b2..6654020 100644 --- a/app/controllers/command_tower/application_controller.rb +++ b/app/controllers/command_tower/application_controller.rb @@ -2,9 +2,9 @@ module CommandTower class ApplicationController < ActionController::API - AUTHENTICATION_HEADER = "Authentication" - AUTHENTICATION_EXPIRE_HEADER = "X-Authentication-Expire" - AUTHENTICATION_WITH_RESET = "X-Authentication-Reset" + AUTHENTICATION_HEADER = "Authorization" + AUTHENTICATION_EXPIRE_HEADER = "X-Authorization-Expire" + AUTHENTICATION_WITH_RESET = "X-Authorization-Reset" def safe_boolean(value:) return nil unless [true, false, "true", "false", "0", "1", 0, 1].include?(value) @@ -14,7 +14,7 @@ def safe_boolean(value:) ### # Authenticate user via the passed in header - # AUTHENTICATION_HEADER="Bearer: {token value}" + # AUTHENTICATION_HEADER="Bearer {token value}" def authenticate_user!(bypass_email_validation: false) raw_token = request.headers[AUTHENTICATION_HEADER] if raw_token.nil? @@ -24,7 +24,7 @@ def authenticate_user!(bypass_email_validation: false) return false end - token = raw_token.split("Bearer:")[1].strip + token = raw_token.split("Bearer ")[1].strip with_reset = safe_boolean(value: request.headers[AUTHENTICATION_WITH_RESET]) result = CommandTower::Jwt::AuthenticateUser.(token:, bypass_email_validation:, with_reset:) if result.success? diff --git a/app/controllers/command_tower/auth/plain_text_controller.rb b/app/controllers/command_tower/auth/plain_text_controller.rb index abc495b..7dba8e8 100644 --- a/app/controllers/command_tower/auth/plain_text_controller.rb +++ b/app/controllers/command_tower/auth/plain_text_controller.rb @@ -10,10 +10,10 @@ class PlainTextController < ::CommandTower::ApplicationController def login_post result = CommandTower::LoginStrategy::PlainText::Login.(**login_params) if result.success? - schema = CommandTower::Schema::PlainText::LoginResponse.new( + schema = CommandTower::Schema::Auth::PlainText::Login::Response.new( token: result.token, header_name: AUTHENTICATION_HEADER, - user: CommandTower::Schema::User.convert_user_object(user: result.user), + user: CommandTower::Schema::Shared::User.convert_user_object(user: result.user), message: "Successfully logged user in" ) status = 201 @@ -24,7 +24,7 @@ def login_post status: 401, message: result.msg, argument_object: result.invalid_argument_hash, - schema: CommandTower::Schema::PlainText::LoginRequest + schema: CommandTower::Schema::Auth::PlainText::Login::Request ) else json_result = { msg: result.msg } @@ -34,12 +34,35 @@ def login_post end end + # GET /auth/login/identifier/valid + # Checks if a login identifier is valid + def login_identifier_valid_get + result = CommandTower::LoginStrategy::PlainText::ValidIdentifier.(login_key: params[:identifier]) + if result.success? + schema = CommandTower::Schema::Auth::PlainText::LoginIdentifierValid::Response.new(valid: true) + status = 200 + schema_succesful!(status:, schema:) + else + if result.invalid_arguments + invalid_arguments!( + status: 400, + message: result.msg, + argument_object: result.invalid_argument_hash, + schema: CommandTower::Schema::Auth::PlainText::LoginIdentifierValid::Request + ) + else + schema = CommandTower::Schema::Error::Base.new(status: 400, message: result.msg) + render(json: schema.to_h, status:) + end + end + end + # POST /auth/create # New PlainText user creation def create_post result = CommandTower::LoginStrategy::PlainText::Create.(**create_params) if result.success? - schema = CommandTower::Schema::PlainText::CreateUserResponse.new( + schema = CommandTower::Schema::Auth::PlainText::CreateUser::Response.new( full_name: result.user.full_name, first_name: result.first_name, last_name: result.last_name, @@ -55,7 +78,7 @@ def create_post status: 400, message: result.msg, argument_object: result.invalid_argument_hash, - schema: CommandTower::Schema::PlainText::CreateUserRequest + schema: CommandTower::Schema::Auth::PlainText::CreateUser::Request ) end end @@ -65,13 +88,13 @@ def create_post # Verifies a logged in users email verification code when enabled def email_verify_post if current_user.email_validated - schema = CommandTower::Schema::PlainText::EmailVerifyResponse.new(message: "Email is already verified.") + schema = CommandTower::Schema::Auth::PlainText::EmailVerify::Response.new(message: "Email is already verified.") status = 200 schema_succesful!(status:, schema:) else result = CommandTower::LoginStrategy::PlainText::EmailVerification::Verify.(user: current_user, code: params[:code]) if result.success? - schema = CommandTower::Schema::PlainText::EmailVerifyResponse.new(message: "Successfully verified email") + schema = CommandTower::Schema::Auth::PlainText::EmailVerify::Response.new(message: "Successfully verified email") status = 201 schema_succesful!(status:, schema:) else @@ -80,7 +103,7 @@ def email_verify_post status: result.status || 403, message: result.msg, argument_object: result.invalid_argument_hash, - schema: CommandTower::Schema::PlainText::EmailVerifyRequest + schema: CommandTower::Schema::Auth::PlainText::EmailVerify::Request ) end end @@ -91,13 +114,13 @@ def email_verify_post # Sends a logged in users email verification code def email_verify_resend_post if current_user.email_validated - schema = CommandTower::Schema::PlainText::EmailVerifyResponse.new(message: "Email is already verified. No code required") + schema = CommandTower::Schema::Auth::PlainText::EmailVerify::SendResponse.new(message: "Email is already verified. No code required") status = 200 schema_succesful!(status:, schema:) else result = CommandTower::LoginStrategy::PlainText::EmailVerification::Send.(user: current_user) if result.success? - schema = CommandTower::Schema::PlainText::EmailVerifyResponse.new(message: "Successfully sent Email verification code") + schema = CommandTower::Schema::Auth::PlainText::EmailVerify::SendResponse.new(message: "Successfully sent Email verification code") status = 201 schema_succesful!(status:, schema:) else diff --git a/app/controllers/command_tower/inbox/message_blast_controller.rb b/app/controllers/command_tower/inbox/message_blast_controller.rb index d0feefd..69aea83 100644 --- a/app/controllers/command_tower/inbox/message_blast_controller.rb +++ b/app/controllers/command_tower/inbox/message_blast_controller.rb @@ -26,7 +26,7 @@ def blast status: 400, message: result.msg, argument_object: result.invalid_argument_hash, - schema: CommandTower::Schema::PlainText::LoginRequest, + schema: CommandTower::Schema::Inbox::Blast::Show::Request, ) end end @@ -53,7 +53,7 @@ def delete status: 400, message: result.msg, argument_object: result.invalid_argument_hash, - schema: CommandTower::Schema::PlainText::LoginRequest, + schema: CommandTower::Schema::Inbox::Blast::Delete::Request, ) end end @@ -76,11 +76,12 @@ def upsert(id: nil) status = 200 schema_succesful!(status:, schema:) else + request_schema = id ? CommandTower::Schema::Inbox::Blast::Modify::Request : CommandTower::Schema::Inbox::Blast::Create::Request invalid_arguments!( status: 400, message: result.msg, argument_object: result.invalid_argument_hash, - schema: CommandTower::Schema::Inbox::BlastRequest + schema: request_schema ) end end diff --git a/app/controllers/command_tower/inbox/message_controller.rb b/app/controllers/command_tower/inbox/message_controller.rb index 9af1d2f..dbe632e 100644 --- a/app/controllers/command_tower/inbox/message_controller.rb +++ b/app/controllers/command_tower/inbox/message_controller.rb @@ -21,7 +21,7 @@ def metadata status: 400, message: result.msg, argument_object: result.invalid_argument_hash, - schema: CommandTower::Schema::PlainText::LoginRequest + schema: CommandTower::Schema::Inbox::Messages::Metadata::Request ) end end @@ -38,7 +38,7 @@ def message status: 400, message: result.msg, argument_object: result.invalid_argument_hash, - schema: CommandTower::Schema::PlainText::LoginRequest + schema: CommandTower::Schema::Inbox::Messages::Message::Request ) end end @@ -72,7 +72,7 @@ def modify(type:) status: 400, message: result.msg, argument_object: result.invalid_argument_hash, - schema: CommandTower::Schema::PlainText::LoginRequest + schema: CommandTower::Schema::Inbox::Messages::Ack::Request ) end end diff --git a/app/controllers/command_tower/user_controller.rb b/app/controllers/command_tower/user_controller.rb index 070ca7c..937e633 100644 --- a/app/controllers/command_tower/user_controller.rb +++ b/app/controllers/command_tower/user_controller.rb @@ -7,14 +7,14 @@ class UserController < ::CommandTower::ApplicationController before_action :authenticate_user! def show - schema = CommandTower::Schema::User.convert_user_object(user: current_user) + schema = CommandTower::Schema::Shared::User.convert_user_object(user: current_user) schema_succesful!(status: 200, schema:) end def modify result = CommandTower::UserAttributes::Modify.(user: current_user, **modify_params) if result.success? - schema = CommandTower::Schema::User.convert_user_object(user: current_user.reload) + schema = CommandTower::Schema::Shared::User.convert_user_object(user: current_user.reload) status = 201 schema_succesful!(status:, schema:) else @@ -23,7 +23,7 @@ def modify status: 400, message: result.msg, argument_object: result.invalid_argument_hash, - schema: CommandTower::Schema::PlainText::LoginRequest + schema: CommandTower::Schema::User::Modify::Request ) else status = 500 From 8571a87e838fcfc5a02bda49c4b85b71470b11ef Mon Sep 17 00:00:00 2001 From: Matt Taylor Date: Sat, 17 Jan 2026 16:13:45 -0800 Subject: [PATCH 04/10] updating services --- .../command_tower/admin_service/users.rb | 4 +-- .../inbox_service/blast/metadata.rb | 4 +-- .../inbox_service/blast/retrieve.rb | 4 +-- .../inbox_service/blast/upsert.rb | 4 +-- .../inbox_service/message/metadata.rb | 9 ++---- .../inbox_service/message/modify.rb | 7 +---- .../inbox_service/message/retrieve.rb | 7 +---- .../login_strategy/plain_text/login.rb | 17 +++++++---- .../plain_text/valid_identifier.rb | 30 +++++++++++++++++++ .../pagination_service_helper.rb | 6 ++-- 10 files changed, 57 insertions(+), 35 deletions(-) create mode 100644 app/services/command_tower/login_strategy/plain_text/valid_identifier.rb diff --git a/app/services/command_tower/admin_service/users.rb b/app/services/command_tower/admin_service/users.rb index d7a93f8..fb2dfb1 100644 --- a/app/services/command_tower/admin_service/users.rb +++ b/app/services/command_tower/admin_service/users.rb @@ -11,8 +11,8 @@ class Users < CommandTower::ServiceBase validate :user, is_a: User, required: true def call - schemafied_users = query.map { CommandTower::Schema::User.convert_user_object(user: _1) } - context.schema = CommandTower::Schema::Admin::Users.new( + schemafied_users = query.map { CommandTower::Schema::Shared::User.convert_user_object(user: _1) } + context.schema = CommandTower::Schema::Shared::Admin::Users.new( users: schemafied_users, count: schemafied_users.count, pagination: pagination_schema, diff --git a/app/services/command_tower/inbox_service/blast/metadata.rb b/app/services/command_tower/inbox_service/blast/metadata.rb index 7802b13..ce71ca6 100644 --- a/app/services/command_tower/inbox_service/blast/metadata.rb +++ b/app/services/command_tower/inbox_service/blast/metadata.rb @@ -6,7 +6,7 @@ module Blast class Metadata < CommandTower::ServiceBase def call entities = ::MessageBlast.all.select(:id, :title, :existing_users, :new_users).map do |mb| - CommandTower::Schema::Inbox::MessageBlastEntity.new( + CommandTower::Schema::Entities::Inbox::MessageBlastEntity.new( title: mb.title, id: mb.id, existing_users: mb.existing_users, @@ -15,7 +15,7 @@ def call end - context.metadata = CommandTower::Schema::Inbox::MessageBlastMetadata.new( + context.metadata = CommandTower::Schema::Shared::Inbox::MessageBlastMetadata.new( entities: entities, count: entities.length, ) diff --git a/app/services/command_tower/inbox_service/blast/retrieve.rb b/app/services/command_tower/inbox_service/blast/retrieve.rb index 6da0f6e..d4745f9 100644 --- a/app/services/command_tower/inbox_service/blast/retrieve.rb +++ b/app/services/command_tower/inbox_service/blast/retrieve.rb @@ -15,8 +15,8 @@ def call inline_argument_failure!(errors: { id: "MessageBlast ID not found" }) end - context.message_blast = CommandTower::Schema::Inbox::MessageBlastEntity.new( - created_by: CommandTower::Schema::User.convert_user_object(user: message_blast.user), + context.message_blast = CommandTower::Schema::Entities::Inbox::MessageBlastEntity.new( + created_by: CommandTower::Schema::Shared::User.convert_user_object(user: message_blast.user), title: message_blast.title, text: message_blast.text, id: message_blast.id, diff --git a/app/services/command_tower/inbox_service/blast/upsert.rb b/app/services/command_tower/inbox_service/blast/upsert.rb index a75d69f..a126bd1 100644 --- a/app/services/command_tower/inbox_service/blast/upsert.rb +++ b/app/services/command_tower/inbox_service/blast/upsert.rb @@ -27,13 +27,13 @@ def call blast_messages!(message_blast: ar) context.message_blast = ar - context.blast = CommandTower::Schema::Inbox::BlastResponse.new( + context.blast = CommandTower::Schema::Inbox::Blast::Create::Response.new( existing_users:, new_users:, text:, title:, id: ar.id, - created_by: CommandTower::Schema::User.convert_user_object(user:) + created_by: CommandTower::Schema::Shared::User.convert_user_object(user:) ) end diff --git a/app/services/command_tower/inbox_service/message/metadata.rb b/app/services/command_tower/inbox_service/message/metadata.rb index 425b277..d69d824 100644 --- a/app/services/command_tower/inbox_service/message/metadata.rb +++ b/app/services/command_tower/inbox_service/message/metadata.rb @@ -12,7 +12,7 @@ class Metadata < CommandTower::ServiceBase def call entities = query.map do |message| - CommandTower::Schema::Inbox::MessageEntity.new( + CommandTower::Schema::Entities::Inbox::MessageEntity.new( id: message.id, title: message.title, viewed: message.viewed, @@ -24,7 +24,7 @@ def call entities: entities.nil? ? nil : entities, pagination: pagination_schema, }.compact - context.metadata = CommandTower::Schema::Inbox::Metadata.new(**params) + context.metadata = CommandTower::Schema::Shared::Inbox::Metadata.new(**params) end def default_query @@ -34,8 +34,3 @@ def default_query end end end - - - - - diff --git a/app/services/command_tower/inbox_service/message/modify.rb b/app/services/command_tower/inbox_service/message/modify.rb index 497e24a..1642b3e 100644 --- a/app/services/command_tower/inbox_service/message/modify.rb +++ b/app/services/command_tower/inbox_service/message/modify.rb @@ -27,7 +27,7 @@ def call modified_ids = messages.destroy_all.pluck(:id) end - context.modified = CommandTower::Schema::Inbox::Modified.new( + context.modified = CommandTower::Schema::Shared::Inbox::Modified.new( ids: modified_ids, type:, count: modified_ids.length, @@ -37,8 +37,3 @@ def call end end end - - - - - diff --git a/app/services/command_tower/inbox_service/message/retrieve.rb b/app/services/command_tower/inbox_service/message/retrieve.rb index 052198b..207faf9 100644 --- a/app/services/command_tower/inbox_service/message/retrieve.rb +++ b/app/services/command_tower/inbox_service/message/retrieve.rb @@ -18,7 +18,7 @@ def call message.update!(viewed: true) - context.message = CommandTower::Schema::Inbox::MessageEntity.new( + context.message = CommandTower::Schema::Entities::Inbox::MessageEntity.new( title: message.title, id: message.id, text: message.text, @@ -29,8 +29,3 @@ def call end end end - - - - - diff --git a/app/services/command_tower/login_strategy/plain_text/login.rb b/app/services/command_tower/login_strategy/plain_text/login.rb index 6308a1c..befe4ce 100644 --- a/app/services/command_tower/login_strategy/plain_text/login.rb +++ b/app/services/command_tower/login_strategy/plain_text/login.rb @@ -11,11 +11,18 @@ class Login < CommandTower::ServiceBase validate :password, is_a: String, required: true, sensitive: true def call - if user.nil? - log_warn("Login attempted with [#{login_key_key}] => [#{login_key}]. Resource not found") - credential_mismatch! - end - + identifier_validity = ValidIdentifier.(login_key_key:, login_key:) + if identifier_validity.failure? + msg = "Unauthorized Access. Incorrect Credentials" + invalid_argument_hash = identifier_validity.invalid_argument_hash.dup + invalid_argument_hash[login_key_key] = { msg: } + invalid_argument_hash[:password] = { msg: } + invalid_argument_keys = [login_key_key, :password] + context.fail!(msg:, invalid_argument_hash:, invalid_argument_keys:, invalid_arguments: true) + return + end + + user = identifier_validity.user if user.authenticate(password) user.successful_login += 1 user.password_consecutive_fail = 0 diff --git a/app/services/command_tower/login_strategy/plain_text/valid_identifier.rb b/app/services/command_tower/login_strategy/plain_text/valid_identifier.rb new file mode 100644 index 0000000..d6ac28d --- /dev/null +++ b/app/services/command_tower/login_strategy/plain_text/valid_identifier.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +module CommandTower::LoginStrategy::PlainText + class ValidIdentifier < CommandTower::ServiceBase + on_argument_validation :fail_early + + validate :login_key_key, is_a: Symbol, required: true, sensitive: true + validate :login_key, is_a: String, required: true, sensitive: true + + + def call() + if user.nil? + log_warn("Login identifier not found: [#{login_key_key}] => [#{login_key}]") + credential_mismatch! + return + end + + context.user = user + end + + def credential_mismatch! + msg = "Unauthorized Access. Incorrect Credentials" + inline_argument_failure!(errors: { login_key_key => msg }) + end + + def user + @user ||= ::User.where(login_key_key => login_key).first + end + end +end diff --git a/app/services/command_tower/pagination_service_helper.rb b/app/services/command_tower/pagination_service_helper.rb index 5cb0314..2168105 100644 --- a/app/services/command_tower/pagination_service_helper.rb +++ b/app/services/command_tower/pagination_service_helper.rb @@ -22,11 +22,11 @@ def pagination_schema cursor: pagination_params[:offset], } query = base_params.to_query - current = CommandTower::Schema::Page.new(query:, **base_params) + current = CommandTower::Schema::Shared::Page.new(query:, **base_params) base_params[:cursor] += pagination_params[:limit] query = base_params.to_query - next_page = CommandTower::Schema::Page.new(query:, **base_params) + next_page = CommandTower::Schema::Shared::Page.new(query:, **base_params) count_available = default_query.size total_pages = count_available / pagination_params[:limit] @@ -41,7 +41,7 @@ def pagination_schema # Ensure we cannot go negative when no elements are returned remaining_pages = [total_pages - current_page, 0].max - CommandTower::Schema::Pagination.new( + CommandTower::Schema::Shared::Pagination.new( count_available:, total_pages:, current_page:, From 5d44345c828a833eb770be63035d66e2c34dad81 Mon Sep 17 00:00:00 2001 From: Matt Taylor Date: Sat, 17 Jan 2026 16:14:26 -0800 Subject: [PATCH 05/10] Deleting files --- lib/command_tower/schema/page.rb | 11 -------- lib/command_tower/schema/pagination.rb | 16 ----------- .../schema/plain_text/create_user_request.rb | 18 ------------ .../schema/plain_text/create_user_response.rb | 17 ----------- .../schema/plain_text/email_verify_request.rb | 11 -------- .../plain_text/email_verify_response.rb | 11 -------- .../plain_text/email_verify_send_request.rb | 9 ------ .../plain_text/email_verify_send_response.rb | 11 -------- .../schema/plain_text/login_request.rb | 15 ---------- .../schema/plain_text/login_response.rb | 16 ----------- lib/command_tower/schema/user.rb | 28 ------------------- 11 files changed, 163 deletions(-) delete mode 100644 lib/command_tower/schema/page.rb delete mode 100644 lib/command_tower/schema/pagination.rb delete mode 100644 lib/command_tower/schema/plain_text/create_user_request.rb delete mode 100644 lib/command_tower/schema/plain_text/create_user_response.rb delete mode 100644 lib/command_tower/schema/plain_text/email_verify_request.rb delete mode 100644 lib/command_tower/schema/plain_text/email_verify_response.rb delete mode 100644 lib/command_tower/schema/plain_text/email_verify_send_request.rb delete mode 100644 lib/command_tower/schema/plain_text/email_verify_send_response.rb delete mode 100644 lib/command_tower/schema/plain_text/login_request.rb delete mode 100644 lib/command_tower/schema/plain_text/login_response.rb delete mode 100644 lib/command_tower/schema/user.rb diff --git a/lib/command_tower/schema/page.rb b/lib/command_tower/schema/page.rb deleted file mode 100644 index 960941a..0000000 --- a/lib/command_tower/schema/page.rb +++ /dev/null @@ -1,11 +0,0 @@ -# frozen_string_literal: true - -module CommandTower - module Schema - class Page < JsonSchematize::Generator - add_field name: :cursor, type: Integer - add_field name: :limit, type: Integer - add_field name: :query, type: String - end - end -end diff --git a/lib/command_tower/schema/pagination.rb b/lib/command_tower/schema/pagination.rb deleted file mode 100644 index b63940d..0000000 --- a/lib/command_tower/schema/pagination.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -require "command_tower/schema/page" - -module CommandTower - module Schema - class Pagination < JsonSchematize::Generator - add_field name: :current, type: Page - add_field name: :next, type: Page, required: false - add_field name: :count_available, type: Integer, required: false - add_field name: :current_page, type: Integer, required: false - add_field name: :remaining_pages, type: Integer, required: false - add_field name: :total_pages, type: Integer, required: false - end - end -end diff --git a/lib/command_tower/schema/plain_text/create_user_request.rb b/lib/command_tower/schema/plain_text/create_user_request.rb deleted file mode 100644 index 4a3be75..0000000 --- a/lib/command_tower/schema/plain_text/create_user_request.rb +++ /dev/null @@ -1,18 +0,0 @@ -# frozen_string_literal: true - -module CommandTower - module Schema - module PlainText - class CreateUserRequest < JsonSchematize::Generator - schema_default option: :dig_type, value: :string - - add_field name: :first_name, type: String, required: false - add_field name: :last_name, type: String, required: false - add_field name: :username, type: String, required: false - add_field name: :email, type: String, required: false - add_field name: :password, type: String, required: false - add_field name: :password_confirmation, type: String, required: false - end - end - end -end diff --git a/lib/command_tower/schema/plain_text/create_user_response.rb b/lib/command_tower/schema/plain_text/create_user_response.rb deleted file mode 100644 index 3bb199a..0000000 --- a/lib/command_tower/schema/plain_text/create_user_response.rb +++ /dev/null @@ -1,17 +0,0 @@ -# frozen_string_literal: true - -module CommandTower - module Schema - module PlainText - class CreateUserResponse < JsonSchematize::Generator - add_field name: :full_name, type: String - add_field name: :first_name, type: String - add_field name: :last_name, type: String - add_field name: :username, type: String - add_field name: :email, type: String - add_field name: :msg, type: String - end - end - end -end - diff --git a/lib/command_tower/schema/plain_text/email_verify_request.rb b/lib/command_tower/schema/plain_text/email_verify_request.rb deleted file mode 100644 index bec1281..0000000 --- a/lib/command_tower/schema/plain_text/email_verify_request.rb +++ /dev/null @@ -1,11 +0,0 @@ -# frozen_string_literal: true - -module CommandTower - module Schema - module PlainText - class EmailVerifyRequest < JsonSchematize::Generator - add_field name: :code, type: String - end - end - end -end diff --git a/lib/command_tower/schema/plain_text/email_verify_response.rb b/lib/command_tower/schema/plain_text/email_verify_response.rb deleted file mode 100644 index 4c35402..0000000 --- a/lib/command_tower/schema/plain_text/email_verify_response.rb +++ /dev/null @@ -1,11 +0,0 @@ -# frozen_string_literal: true - -module CommandTower - module Schema - module PlainText - class EmailVerifyResponse< JsonSchematize::Generator - add_field name: :message, type: String - end - end - end -end diff --git a/lib/command_tower/schema/plain_text/email_verify_send_request.rb b/lib/command_tower/schema/plain_text/email_verify_send_request.rb deleted file mode 100644 index 6139f05..0000000 --- a/lib/command_tower/schema/plain_text/email_verify_send_request.rb +++ /dev/null @@ -1,9 +0,0 @@ -# frozen_string_literal: true - -module CommandTower - module Schema - module PlainText - class EmailVerifySendRequest < JsonSchematize::Generator; end - end - end -end diff --git a/lib/command_tower/schema/plain_text/email_verify_send_response.rb b/lib/command_tower/schema/plain_text/email_verify_send_response.rb deleted file mode 100644 index ba720c8..0000000 --- a/lib/command_tower/schema/plain_text/email_verify_send_response.rb +++ /dev/null @@ -1,11 +0,0 @@ -# frozen_string_literal: true - -module CommandTower - module Schema - module PlainText - class EmailVerifySendResponse< JsonSchematize::Generator - add_field name: :message, type: String - end - end - end -end diff --git a/lib/command_tower/schema/plain_text/login_request.rb b/lib/command_tower/schema/plain_text/login_request.rb deleted file mode 100644 index 805afcb..0000000 --- a/lib/command_tower/schema/plain_text/login_request.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -module CommandTower - module Schema - module PlainText - class LoginRequest < JsonSchematize::Generator - schema_default option: :dig_type, value: :string - - add_field name: :username, type: String, required: false - add_field name: :email, type: String, required: false - add_field name: :password, type: String, required: false - end - end - end -end diff --git a/lib/command_tower/schema/plain_text/login_response.rb b/lib/command_tower/schema/plain_text/login_response.rb deleted file mode 100644 index 4c0e093..0000000 --- a/lib/command_tower/schema/plain_text/login_response.rb +++ /dev/null @@ -1,16 +0,0 @@ -# frozen_string_literal: true - -require "command_tower/schema/user" - -module CommandTower - module Schema - module PlainText - class LoginResponse < JsonSchematize::Generator - add_field name: :token, type: String - add_field name: :header_name, type: String - add_field name: :message, type: String - add_field name: :user, type: CommandTower::Schema::User - end - end - end -end diff --git a/lib/command_tower/schema/user.rb b/lib/command_tower/schema/user.rb deleted file mode 100644 index fb657e3..0000000 --- a/lib/command_tower/schema/user.rb +++ /dev/null @@ -1,28 +0,0 @@ -# frozen_string_literal: true - -module CommandTower - module Schema - class User < JsonSchematize::Generator - schema_default option: :dig_type, value: :string - - def self.convert_user_object(user:) - attributes = CommandTower.config.user.default_attributes.map(&:to_s) - object = user.attributes.slice(*attributes) - - new(object) - end - - # Gets assigned during configuration phase via - # lib/command_tower/configuration/user/config.rb - def self.assign! - attributes = CommandTower.config.user.default_attributes - attributes.each do |attribute| - if metadata = ::User.attribute_to_type_mapping[attribute] - type = metadata[:serialized_type] ? metadata[:serialized_type] : metadata[:base] - add_field(name: attribute, type:) - end - end - end - end - end -end From b3eac520da3bd5f8b05d4103c3f60d11452746f9 Mon Sep 17 00:00:00 2001 From: Matt Taylor Date: Sat, 17 Jan 2026 16:14:43 -0800 Subject: [PATCH 06/10] other nits --- .../configuration/user/config.rb | 7 +- lib/command_tower/schema.rb | 68 +++++++++++++------ lib/command_tower/spec_helper.rb | 2 +- lib/command_tower/version.rb | 2 +- .../config/initializers/command_tower.rb | 10 +-- 5 files changed, 60 insertions(+), 29 deletions(-) diff --git a/lib/command_tower/configuration/user/config.rb b/lib/command_tower/configuration/user/config.rb index 9a87df1..6022721 100644 --- a/lib/command_tower/configuration/user/config.rb +++ b/lib/command_tower/configuration/user/config.rb @@ -12,16 +12,17 @@ class Config :email, :first_name, :last_name, - :last_known_timezone, :username, :verifier_token, ] ATTRIBUTES_TO_SHOW = [ *ATTRIBUTES_TO_CHANGE, + :created_at, + :email_validated, :id, + :last_known_timezone, :roles, - :created_at, ] ATTRIBUTES_CHANGE_EXECUTE = Proc.new do |key, value| @@ -29,7 +30,7 @@ class Config end ATTRIBUTES_SHOWN_EXECUTE = Proc.new do |key, value| - CommandTower::Schema::User.assign! + CommandTower::Schema::Shared::User.assign! end add_composer :additional_attributes_for_change, diff --git a/lib/command_tower/schema.rb b/lib/command_tower/schema.rb index 786d6ea..e0d5d24 100644 --- a/lib/command_tower/schema.rb +++ b/lib/command_tower/schema.rb @@ -9,30 +9,60 @@ module Schema require "command_tower/schema/error/base" require "command_tower/schema/error/invalid_argument_response" - ## Plain Text Controller - require "command_tower/schema/plain_text/create_user_response" - require "command_tower/schema/plain_text/create_user_request" + ## Auth Controller + require "command_tower/schema/auth/plain_text/login/request" + require "command_tower/schema/auth/plain_text/login/response" + require "command_tower/schema/auth/plain_text/login_identifier_valid/request" + require "command_tower/schema/auth/plain_text/login_identifier_valid/response" + require "command_tower/schema/auth/plain_text/create_user/request" + require "command_tower/schema/auth/plain_text/create_user/response" + require "command_tower/schema/auth/plain_text/email_verify/request" + require "command_tower/schema/auth/plain_text/email_verify/response" + require "command_tower/schema/auth/plain_text/email_verify/send_request" + require "command_tower/schema/auth/plain_text/email_verify/send_response" - require "command_tower/schema/plain_text/email_verify_request" - require "command_tower/schema/plain_text/email_verify_response" + require "command_tower/schema/shared/admin/users" - require "command_tower/schema/plain_text/email_verify_send_response" - require "command_tower/schema/plain_text/email_verify_send_request" + require "command_tower/schema/shared/user" - require "command_tower/schema/plain_text/login_request" - require "command_tower/schema/plain_text/login_response" + require "command_tower/schema/user/show/request" + require "command_tower/schema/user/show/response" + require "command_tower/schema/user/modify/request" + require "command_tower/schema/user/modify/response" - require "command_tower/schema/admin/users" + require "command_tower/schema/shared/page" + require "command_tower/schema/shared/pagination" - require "command_tower/schema/user" - require "command_tower/schema/page" + require "command_tower/schema/shared/inbox/metadata" + require "command_tower/schema/shared/inbox/message_blast_metadata" + require "command_tower/schema/shared/inbox/modified" - require "command_tower/schema/inbox/metadata" - require "command_tower/schema/inbox/message_entity" - require "command_tower/schema/inbox/modified" - require "command_tower/schema/inbox/blast_response" - require "command_tower/schema/inbox/blast_request" - require "command_tower/schema/inbox/message_blast_entity" - require "command_tower/schema/inbox/message_blast_metadata" + require "command_tower/schema/admin/show/request" + require "command_tower/schema/admin/show/response" + require "command_tower/schema/admin/modify/request" + require "command_tower/schema/admin/modify/response" + require "command_tower/schema/admin/modify_role/request" + require "command_tower/schema/admin/modify_role/response" + + require "command_tower/schema/inbox/messages/metadata/request" + require "command_tower/schema/inbox/messages/metadata/response" + require "command_tower/schema/inbox/messages/message/request" + require "command_tower/schema/inbox/messages/message/response" + require "command_tower/schema/inbox/messages/ack/request" + require "command_tower/schema/inbox/messages/ack/response" + require "command_tower/schema/inbox/messages/delete/request" + require "command_tower/schema/inbox/messages/delete/response" + require "command_tower/schema/inbox/messages/delete_by_id/request" + require "command_tower/schema/inbox/messages/delete_by_id/response" + require "command_tower/schema/inbox/blast/metadata/request" + require "command_tower/schema/inbox/blast/metadata/response" + require "command_tower/schema/inbox/blast/create/request" + require "command_tower/schema/inbox/blast/create/response" + require "command_tower/schema/inbox/blast/show/request" + require "command_tower/schema/inbox/blast/show/response" + require "command_tower/schema/inbox/blast/modify/request" + require "command_tower/schema/inbox/blast/modify/response" + require "command_tower/schema/inbox/blast/delete/request" + require "command_tower/schema/inbox/blast/delete/response" end end diff --git a/lib/command_tower/spec_helper.rb b/lib/command_tower/spec_helper.rb index fbbf6d8..7a1997a 100644 --- a/lib/command_tower/spec_helper.rb +++ b/lib/command_tower/spec_helper.rb @@ -8,7 +8,7 @@ def set_jwt_token!(user:, with_reset: false, token: nil) token = result.token end - @request.headers[CommandTower::ApplicationController::AUTHENTICATION_HEADER] = "Bearer: #{token}" + @request.headers[CommandTower::ApplicationController::AUTHENTICATION_HEADER] = "Bearer #{token}" @request.headers[CommandTower::ApplicationController::AUTHENTICATION_WITH_RESET] = "true" if with_reset end diff --git a/lib/command_tower/version.rb b/lib/command_tower/version.rb index 9e1b95f..464e8fc 100644 --- a/lib/command_tower/version.rb +++ b/lib/command_tower/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module CommandTower - VERSION = "0.4.0" + VERSION = "0.5.0" end diff --git a/rails_app/config/initializers/command_tower.rb b/rails_app/config/initializers/command_tower.rb index 9422552..3a56152 100644 --- a/rails_app/config/initializers/command_tower.rb +++ b/rails_app/config/initializers/command_tower.rb @@ -41,11 +41,11 @@ # Enable and change Lockable for User/Password Login strategy. # When using the block, the enable flag will automatically get set to true # plain_text_config.with_lockable do |lockable_config| - # Disabled by default. When enabled, this adds an additional level of support for brute force attacks on User/Password Logins: [FalseClass, TrueClass] - # lockable_config.enable = false + # Disabled by default. When enabled, this adds an additional level of support for brute force attacks on User/Password Logins: [FalseClass, TrueClass] + # lockable_config.enable = false - # Max failed password attempts before additional verification on account is required.: [Integer] - # lockable_config.password_attempts = 10 + # Max failed password attempts before additional verification on account is required.: [Integer] + # lockable_config.password_attempts = 10 # end # ### Block to configure Email Verify ### @@ -238,4 +238,4 @@ # Sometimes a user is just a tad slow. This allows a small drift behind to allow codes within drift to be accepted: [ActiveSupport::Duration] # config.otp.allowed_drift_behind = 15.seconds -end \ No newline at end of file +end From db1aa477bd86d4306216f0f633ba878a358fe2a3 Mon Sep 17 00:00:00 2001 From: Matt Taylor Date: Sat, 17 Jan 2026 16:18:44 -0800 Subject: [PATCH 07/10] add a cursor rule for how to create new ones --- .cursorrules | 183 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 .cursorrules diff --git a/.cursorrules b/.cursorrules new file mode 100644 index 0000000..53aa163 --- /dev/null +++ b/.cursorrules @@ -0,0 +1,183 @@ +# CommandTower Schema Structure Rules + +## Schema Organization Requirements + +### Every Endpoint Must Have Request and Response Schemas + +**MANDATORY**: Every API endpoint MUST have both a Request schema and a Response schema. No exceptions. + +### Directory Structure + +All schemas are organized in `lib/command_tower/schema/` with the following structure: + +``` +lib/command_tower/schema/ +├── shared/ # Reusable schemas (cross-domain + domain-specific) +│ ├── user.rb # Cross-domain: User entity +│ ├── page.rb # Cross-domain: Page for pagination +│ ├── pagination.rb # Cross-domain: Pagination structure +│ ├── inbox/ # Domain-specific shared: Inbox reusable structures +│ │ ├── metadata.rb +│ │ ├── message_blast_metadata.rb +│ │ └── modified.rb +│ └── admin/ # Domain-specific shared: Admin reusable structures +│ └── users.rb +│ +├── entities/ # Domain-specific entity schemas (referenced by responses) +│ └── inbox/ +│ ├── message_entity.rb +│ └── message_blast_entity.rb +│ +├── error/ # Error schemas (can be referenced) +│ ├── base.rb +│ ├── invalid_argument.rb +│ └── invalid_argument_response.rb +│ +└── [endpoint folders]/ # Request/Response schemas organized by controller/action + ├── auth/ + │ └── plain_text/ + │ ├── login/ + │ │ ├── request.rb + │ │ └── response.rb + │ └── ... + ├── user/ + │ ├── show/ + │ │ ├── request.rb + │ │ └── response.rb + │ └── modify/ + │ ├── request.rb + │ └── response.rb + ├── admin/ + │ ├── show/ + │ ├── modify/ + │ └── modify_role/ + └── inbox/ + ├── messages/ + │ ├── metadata/ + │ ├── message/ + │ ├── ack/ + │ └── ... + └── blast/ + ├── metadata/ + ├── create/ + ├── show/ + ├── modify/ + └── delete/ +``` + +### Schema Organization Rules + +1. **Request/Response Schemas**: + - MUST be placed in endpoint-specific folders: `{controller}/{action}/request.rb` and `{controller}/{action}/response.rb` + - Example: `auth/plain_text/login/request.rb` and `auth/plain_text/login/response.rb` + - CAN reference schemas from `shared/`, `entities/`, and `error/` + - CANNOT reference other Request/Response schemas + +2. **Shared Schemas** (`shared/`): + - Cross-domain reusable schemas go at root of `shared/` (e.g., `shared/user.rb`, `shared/page.rb`) + - Domain-specific reusable structures go in domain subfolders (e.g., `shared/inbox/metadata.rb`) + - Can be referenced by any Request/Response schema + +3. **Entity Schemas** (`entities/`): + - Domain-specific entity schemas that represent data models + - Organized by domain (e.g., `entities/inbox/message_entity.rb`) + - Can be referenced by Request/Response schemas + +4. **Error Schemas** (`error/`): + - Standard error response structures + - Can be referenced by Request/Response schemas + +### Naming Conventions + +- **Request schemas**: `{Controller}::{Action}::Request` + - Example: `CommandTower::Schema::Auth::PlainText::Login::Request` + +- **Response schemas**: `{Controller}::{Action}::Response` + - Example: `CommandTower::Schema::Auth::PlainText::Login::Response` + +- **Shared schemas**: `CommandTower::Schema::Shared::{Name}` + - Example: `CommandTower::Schema::Shared::User` + - Domain-specific: `CommandTower::Schema::Shared::Inbox::Metadata` + +- **Entity schemas**: `CommandTower::Schema::Entities::{Domain}::{Name}` + - Example: `CommandTower::Schema::Entities::Inbox::MessageEntity` + +### Implementation Requirements + +1. **When creating a new endpoint**: + - Create both `request.rb` and `response.rb` files in the appropriate endpoint folder + - Update `lib/command_tower/schema.rb` to require both files + - Use the Request schema for error validation in controllers + - Use the Response schema for successful responses + +2. **Request Schema Guidelines**: + - Define all fields that the endpoint accepts + - Mark optional fields with `required: false` + - Use appropriate types (`String`, `Integer`, `JsonSchematize::Boolean`, etc.) + - For GET endpoints, Request schemas can be empty but must still exist + +3. **Response Schema Guidelines**: + - Reference shared schemas or entity schemas when possible + - If the response is just a shared schema, document that in comments + - Define endpoint-specific fields if needed + +4. **Controller Usage**: + - Use Request schemas in `invalid_arguments!` calls for error validation + - Use Response schemas (or shared schemas directly) for successful responses via `schema_succesful!` + +### Examples + +**Creating a new endpoint schema:** +```ruby +# lib/command_tower/schema/user/profile/request.rb +module CommandTower + module Schema + module User + module Profile + class Request < JsonSchematize::Generator + add_field name: :bio, type: String, required: false + end + end + end + end +end + +# lib/command_tower/schema/user/profile/response.rb +require "command_tower/schema/shared/user" + +module CommandTower + module Schema + module User + module Profile + class Response < JsonSchematize::Generator + # Response uses Shared::User directly in controller + end + end + end + end +end +``` + +**Using in controller:** +```ruby +def profile + result = SomeService.(**params) + if result.success? + schema = CommandTower::Schema::Shared::User.convert_user_object(user: current_user) + schema_succesful!(status: 200, schema:) + else + invalid_arguments!( + status: 400, + message: result.msg, + argument_object: result.invalid_argument_hash, + schema: CommandTower::Schema::User::Profile::Request + ) + end +end +``` + +### Migration Notes + +- All existing endpoints have been migrated to this structure +- Old schema files in `plain_text/`, `inbox/`, etc. have been moved or removed +- All references have been updated to use the new namespace structure From 9156cb7399795d0f0e3dabf07125c1fea988bbcf Mon Sep 17 00:00:00 2001 From: Matt Taylor Date: Sat, 17 Jan 2026 16:25:51 -0800 Subject: [PATCH 08/10] update matrix --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 6d10a68..63169a2 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -18,7 +18,7 @@ workflows: code-climate-report: false matrix: parameters: - ruby-version: ["3.2.5", "3.3.6", "3.4.2"] + ruby-version: ["3.2.5", "3.3.6", "3.4.8", "4.0.0", "4.0.1"] rails-version: ["~> 7", "~> 8"] alias: required-matrix-tests name: test-ruby<< matrix.ruby-version >>-rails<< matrix.rails-version >> From 6a050932d438562d735a70224c5b791fc972ad2b Mon Sep 17 00:00:00 2001 From: Matt Taylor Date: Sat, 17 Jan 2026 16:48:34 -0800 Subject: [PATCH 09/10] update gems...fix issue when pagination is not present --- Gemfile.lock | 244 +++++++++++---------- app/helpers/command_tower/schema_helper.rb | 22 +- 2 files changed, 152 insertions(+), 114 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index c648801..caeb6fb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - command_tower (0.4.0) + command_tower (0.5.0) bcrypt (>= 3) class_composer (>= 2) interactor @@ -13,66 +13,68 @@ PATH GEM remote: https://rubygems.org/ specs: - actioncable (7.2.2.1) - actionpack (= 7.2.2.1) - activesupport (= 7.2.2.1) + actioncable (7.2.3) + actionpack (= 7.2.3) + activesupport (= 7.2.3) nio4r (~> 2.0) websocket-driver (>= 0.6.1) zeitwerk (~> 2.6) - actionmailbox (7.2.2.1) - actionpack (= 7.2.2.1) - activejob (= 7.2.2.1) - activerecord (= 7.2.2.1) - activestorage (= 7.2.2.1) - activesupport (= 7.2.2.1) + actionmailbox (7.2.3) + actionpack (= 7.2.3) + activejob (= 7.2.3) + activerecord (= 7.2.3) + activestorage (= 7.2.3) + activesupport (= 7.2.3) mail (>= 2.8.0) - actionmailer (7.2.2.1) - actionpack (= 7.2.2.1) - actionview (= 7.2.2.1) - activejob (= 7.2.2.1) - activesupport (= 7.2.2.1) + actionmailer (7.2.3) + actionpack (= 7.2.3) + actionview (= 7.2.3) + activejob (= 7.2.3) + activesupport (= 7.2.3) mail (>= 2.8.0) rails-dom-testing (~> 2.2) - actionpack (7.2.2.1) - actionview (= 7.2.2.1) - activesupport (= 7.2.2.1) + actionpack (7.2.3) + actionview (= 7.2.3) + activesupport (= 7.2.3) + cgi nokogiri (>= 1.8.5) racc - rack (>= 2.2.4, < 3.2) + rack (>= 2.2.4, < 3.3) rack-session (>= 1.0.1) rack-test (>= 0.6.3) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) useragent (~> 0.16) - actiontext (7.2.2.1) - actionpack (= 7.2.2.1) - activerecord (= 7.2.2.1) - activestorage (= 7.2.2.1) - activesupport (= 7.2.2.1) + actiontext (7.2.3) + actionpack (= 7.2.3) + activerecord (= 7.2.3) + activestorage (= 7.2.3) + activesupport (= 7.2.3) globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (7.2.2.1) - activesupport (= 7.2.2.1) + actionview (7.2.3) + activesupport (= 7.2.3) builder (~> 3.1) + cgi erubi (~> 1.11) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - activejob (7.2.2.1) - activesupport (= 7.2.2.1) + activejob (7.2.3) + activesupport (= 7.2.3) globalid (>= 0.3.6) - activemodel (7.2.2.1) - activesupport (= 7.2.2.1) - activerecord (7.2.2.1) - activemodel (= 7.2.2.1) - activesupport (= 7.2.2.1) + activemodel (7.2.3) + activesupport (= 7.2.3) + activerecord (7.2.3) + activemodel (= 7.2.3) + activesupport (= 7.2.3) timeout (>= 0.4.0) - activestorage (7.2.2.1) - actionpack (= 7.2.2.1) - activejob (= 7.2.2.1) - activerecord (= 7.2.2.1) - activesupport (= 7.2.2.1) + activestorage (7.2.3) + actionpack (= 7.2.3) + activejob (= 7.2.3) + activerecord (= 7.2.3) + activesupport (= 7.2.3) marcel (~> 1.0) - activesupport (7.2.2.1) + activesupport (7.2.3) base64 benchmark (>= 0.3) bigdecimal @@ -87,59 +89,65 @@ GEM annotate (3.2.0) activerecord (>= 3.2, < 8.0) rake (>= 10.4, < 14.0) - base64 (0.2.0) - bcrypt (3.1.20) - benchmark (0.4.0) - bigdecimal (3.1.9) + base64 (0.3.0) + bcrypt (3.1.21) + benchmark (0.5.0) + bigdecimal (4.0.1) builder (3.3.0) + cgi (0.5.1) class_composer (2.1.0) coderay (1.1.3) - concurrent-ruby (1.3.5) - connection_pool (2.5.0) + concurrent-ruby (1.3.6) + connection_pool (3.0.2) crass (1.0.6) - database_cleaner-active_record (2.2.0) + database_cleaner-active_record (2.2.2) activerecord (>= 5.a) - database_cleaner-core (~> 2.0.0) + database_cleaner-core (~> 2.0) database_cleaner-core (2.0.1) - date (3.4.1) - diff-lcs (1.6.0) + date (3.5.1) + diff-lcs (1.6.2) docile (1.4.1) - drb (2.2.1) + drb (2.2.3) + erb (6.0.1) erubi (1.13.1) - factory_bot (6.5.1) + factory_bot (6.5.6) activesupport (>= 6.1.0) - faker (3.5.1) + faker (3.5.3) i18n (>= 1.8.11, < 2) - globalid (1.2.1) + globalid (1.3.0) activesupport (>= 6.1) - i18n (1.14.7) + i18n (1.14.8) concurrent-ruby (~> 1.0) - interactor (3.1.2) - io-console (0.8.0) - irb (1.15.1) + interactor (3.2.0) + ostruct + io-console (0.8.2) + irb (1.16.0) pp (>= 0.6.0) rdoc (>= 4.0.0) reline (>= 0.4.2) - json_schematize (0.12.0) + json_schematize (0.13.1) class_composer (>= 1.0) - jwt (2.10.1) + jwt (3.1.2) base64 - logger (1.6.6) - loofah (2.24.0) + logger (1.7.0) + loofah (2.25.0) crass (~> 1.0.2) nokogiri (>= 1.12.0) - mail (2.8.1) + mail (2.9.0) + logger mini_mime (>= 0.1.1) net-imap net-pop net-smtp - marcel (1.0.4) + marcel (1.1.0) method_source (1.1.0) mini_mime (1.1.5) - mini_portile2 (2.8.8) - minitest (5.25.4) - mysql2 (0.5.6) - net-imap (0.5.6) + mini_portile2 (2.8.9) + minitest (6.0.1) + prism (~> 1.5) + mysql2 (0.5.7) + bigdecimal + net-imap (0.6.2) date net-protocol net-pop (0.1.2) @@ -148,89 +156,97 @@ GEM timeout net-smtp (0.5.1) net-protocol - nio4r (2.7.4) - nokogiri (1.18.3) + nio4r (2.7.5) + nokogiri (1.19.0) mini_portile2 (~> 2.8.2) racc (~> 1.4) null-logger (0.1.7) - pp (0.6.2) + ostruct (0.6.3) + pp (0.6.3) prettyprint prettyprint (0.2.0) - pry (0.15.2) + prism (1.8.0) + pry (0.16.0) coderay (~> 1.1) method_source (~> 1.0) - psych (5.2.3) + reline (>= 0.6.0) + psych (5.3.1) date stringio - puma (6.6.0) + puma (7.1.0) nio4r (~> 2.0) racc (1.8.1) - rack (3.1.10) - rack-cors (2.0.2) - rack (>= 2.0.0) - rack-session (2.1.0) + rack (3.2.4) + rack-cors (3.0.0) + logger + rack (>= 3.0.14) + rack-session (2.1.1) base64 (>= 0.1.0) rack (>= 3.0.0) rack-test (2.2.0) rack (>= 1.3) - rackup (2.2.1) + rackup (2.3.1) rack (>= 3) - rails (7.2.2.1) - actioncable (= 7.2.2.1) - actionmailbox (= 7.2.2.1) - actionmailer (= 7.2.2.1) - actionpack (= 7.2.2.1) - actiontext (= 7.2.2.1) - actionview (= 7.2.2.1) - activejob (= 7.2.2.1) - activemodel (= 7.2.2.1) - activerecord (= 7.2.2.1) - activestorage (= 7.2.2.1) - activesupport (= 7.2.2.1) + rails (7.2.3) + actioncable (= 7.2.3) + actionmailbox (= 7.2.3) + actionmailer (= 7.2.3) + actionpack (= 7.2.3) + actiontext (= 7.2.3) + actionview (= 7.2.3) + activejob (= 7.2.3) + activemodel (= 7.2.3) + activerecord (= 7.2.3) + activestorage (= 7.2.3) + activesupport (= 7.2.3) bundler (>= 1.15.0) - railties (= 7.2.2.1) + railties (= 7.2.3) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) actionview (>= 5.0.1.rc1) activesupport (>= 5.0.1.rc1) - rails-dom-testing (2.2.0) + rails-dom-testing (2.3.0) activesupport (>= 5.0.0) minitest nokogiri (>= 1.6) rails-html-sanitizer (1.6.2) loofah (~> 2.21) nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) - railties (7.2.2.1) - actionpack (= 7.2.2.1) - activesupport (= 7.2.2.1) + railties (7.2.3) + actionpack (= 7.2.3) + activesupport (= 7.2.3) + cgi irb (~> 1.13) rackup (>= 1.0.0) rake (>= 12.2) thor (~> 1.0, >= 1.2.2) + tsort (>= 0.2) zeitwerk (~> 2.6) - rake (13.2.1) - rdoc (6.12.0) + rake (13.3.1) + rdoc (7.1.0) + erb psych (>= 4.0.0) - reline (0.6.0) + tsort + reline (0.6.3) io-console (~> 0.5) rotp (6.3.0) - rspec-core (3.13.3) + rspec-core (3.13.6) rspec-support (~> 3.13.0) - rspec-expectations (3.13.3) + rspec-expectations (3.13.5) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-mocks (3.13.2) + rspec-mocks (3.13.7) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-rails (7.1.1) - actionpack (>= 7.0) - activesupport (>= 7.0) - railties (>= 7.0) + rspec-rails (8.0.2) + actionpack (>= 7.2) + activesupport (>= 7.2) + railties (>= 7.2) rspec-core (~> 3.13) rspec-expectations (~> 3.13) rspec-mocks (~> 3.13) rspec-support (~> 3.13) - rspec-support (3.13.2) + rspec-support (3.13.6) rspec_junit_formatter (0.6.0) rspec-core (>= 2, < 4, != 2.12.0) securerandom (0.4.1) @@ -238,27 +254,29 @@ GEM docile (~> 1.1) simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) - simplecov-html (0.13.1) + simplecov-html (0.13.2) simplecov_json_formatter (0.1.4) - sprockets (4.2.1) + sprockets (4.2.2) concurrent-ruby (~> 1.0) + logger rack (>= 2.2.4, < 4) sprockets-rails (3.5.2) actionpack (>= 6.1) activesupport (>= 6.1) sprockets (>= 3.0.0) - stringio (3.1.5) - thor (1.3.2) + stringio (3.2.0) + thor (1.5.0) timecop (0.9.10) - timeout (0.4.3) + timeout (0.6.0) + tsort (0.2.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) useragent (0.16.11) - websocket-driver (0.7.7) + websocket-driver (0.8.0) base64 websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - zeitwerk (2.7.2) + zeitwerk (2.7.4) PLATFORMS ruby diff --git a/app/helpers/command_tower/schema_helper.rb b/app/helpers/command_tower/schema_helper.rb index 9d234eb..c2c0bca 100644 --- a/app/helpers/command_tower/schema_helper.rb +++ b/app/helpers/command_tower/schema_helper.rb @@ -3,7 +3,27 @@ module CommandTower module SchemaHelper def schema_succesful!(schema:, status:) - render(json: schema.to_h, status:) + schema_hash = schema.to_h + # Fix: Ensure pagination is an empty hash when nil or missing, so it responds to empty? + # Only apply this fix to schemas that have a pagination field defined + has_pagination_field = false + if schema.class.respond_to?(:introspect) + introspect_result = schema.class.introspect + has_pagination_field = introspect_result.is_a?(Hash) && (introspect_result.key?(:pagination) || introspect_result.key?("pagination")) + end + + # Also check if pagination key exists in the hash itself (fallback) + has_pagination_in_hash = schema_hash.key?("pagination") || schema_hash.key?(:pagination) + + if has_pagination_field || has_pagination_in_hash + # Check if pagination key exists (as string or symbol) and if value is nil + pagination_val = schema_hash["pagination"] || schema_hash[:pagination] + if pagination_val.nil? + # Value is nil, set it to empty hash (use string key for consistency with JSON) + schema_hash["pagination"] = {} + end + end + render(json: schema_hash, status:) end def invalid_arguments!(message:, argument_object:, schema:, status:) From 8922225c062360d20afdc97727bc598c222797b3 Mon Sep 17 00:00:00 2001 From: Matt Taylor Date: Sat, 17 Jan 2026 17:07:55 -0800 Subject: [PATCH 10/10] cursor suggestions -- update all gems use better rails and ruby as base --- Dockerfile | 5 +- Gemfile | 2 +- Gemfile.lock | 132 +++++++++--------- .../command_tower/admin_controller.rb | 2 +- .../command_tower/application_controller.rb | 10 +- .../auth/plain_text_controller.rb | 16 ++- .../command_tower/inbox/message_controller.rb | 10 +- docker-compose.yaml | 2 +- lib/command_tower/schema/shared/user.rb | 6 - .../application_controller_spec.rb | 126 +++++++++++++++++ 10 files changed, 228 insertions(+), 83 deletions(-) create mode 100644 spec/controllers/command_tower/application_controller_spec.rb diff --git a/Dockerfile b/Dockerfile index 29c2696..9747e16 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # ./Dockerfile -FROM ruby:3.3.6 as base +FROM ruby:4.0.1 as base # set some default ENV values for the image ENV RAILS_LOG_TO_STDOUT 1 @@ -22,10 +22,9 @@ RUN apt-get install -y --no-install-recommends \ redis-tools # install bundler -ARG BUNDLER_VERSION=2.5.3 +ARG BUNDLER_VERSION=4.0.4 RUN gem install bundler -v "${BUNDLER_VERSION}" RUN gem install annotate RUN bundle config set force_ruby_platform true COPY . $APP_HOME - diff --git a/Gemfile b/Gemfile index 5df34f9..2313cd9 100644 --- a/Gemfile +++ b/Gemfile @@ -14,7 +14,7 @@ gem "pry" # gem "json_schematize", path: "/local/json_schematize" -gem "rails", ENV.fetch("BUNDLER_RAILS_VERSION", "~> 7") +gem "rails", ENV.fetch("BUNDLER_RAILS_VERSION", "~> 8") gem "rspec-rails" gem "rspec_junit_formatter" diff --git a/Gemfile.lock b/Gemfile.lock index caeb6fb..84be844 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -13,88 +13,87 @@ PATH GEM remote: https://rubygems.org/ specs: - actioncable (7.2.3) - actionpack (= 7.2.3) - activesupport (= 7.2.3) + action_text-trix (2.1.16) + railties + actioncable (8.1.2) + actionpack (= 8.1.2) + activesupport (= 8.1.2) nio4r (~> 2.0) websocket-driver (>= 0.6.1) zeitwerk (~> 2.6) - actionmailbox (7.2.3) - actionpack (= 7.2.3) - activejob (= 7.2.3) - activerecord (= 7.2.3) - activestorage (= 7.2.3) - activesupport (= 7.2.3) + actionmailbox (8.1.2) + actionpack (= 8.1.2) + activejob (= 8.1.2) + activerecord (= 8.1.2) + activestorage (= 8.1.2) + activesupport (= 8.1.2) mail (>= 2.8.0) - actionmailer (7.2.3) - actionpack (= 7.2.3) - actionview (= 7.2.3) - activejob (= 7.2.3) - activesupport (= 7.2.3) + actionmailer (8.1.2) + actionpack (= 8.1.2) + actionview (= 8.1.2) + activejob (= 8.1.2) + activesupport (= 8.1.2) mail (>= 2.8.0) rails-dom-testing (~> 2.2) - actionpack (7.2.3) - actionview (= 7.2.3) - activesupport (= 7.2.3) - cgi + actionpack (8.1.2) + actionview (= 8.1.2) + activesupport (= 8.1.2) nokogiri (>= 1.8.5) - racc - rack (>= 2.2.4, < 3.3) + rack (>= 2.2.4) rack-session (>= 1.0.1) rack-test (>= 0.6.3) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) useragent (~> 0.16) - actiontext (7.2.3) - actionpack (= 7.2.3) - activerecord (= 7.2.3) - activestorage (= 7.2.3) - activesupport (= 7.2.3) + actiontext (8.1.2) + action_text-trix (~> 2.1.15) + actionpack (= 8.1.2) + activerecord (= 8.1.2) + activestorage (= 8.1.2) + activesupport (= 8.1.2) globalid (>= 0.6.0) nokogiri (>= 1.8.5) - actionview (7.2.3) - activesupport (= 7.2.3) + actionview (8.1.2) + activesupport (= 8.1.2) builder (~> 3.1) - cgi erubi (~> 1.11) rails-dom-testing (~> 2.2) rails-html-sanitizer (~> 1.6) - activejob (7.2.3) - activesupport (= 7.2.3) + activejob (8.1.2) + activesupport (= 8.1.2) globalid (>= 0.3.6) - activemodel (7.2.3) - activesupport (= 7.2.3) - activerecord (7.2.3) - activemodel (= 7.2.3) - activesupport (= 7.2.3) + activemodel (8.1.2) + activesupport (= 8.1.2) + activerecord (8.1.2) + activemodel (= 8.1.2) + activesupport (= 8.1.2) timeout (>= 0.4.0) - activestorage (7.2.3) - actionpack (= 7.2.3) - activejob (= 7.2.3) - activerecord (= 7.2.3) - activesupport (= 7.2.3) + activestorage (8.1.2) + actionpack (= 8.1.2) + activejob (= 8.1.2) + activerecord (= 8.1.2) + activesupport (= 8.1.2) marcel (~> 1.0) - activesupport (7.2.3) + activesupport (8.1.2) base64 - benchmark (>= 0.3) bigdecimal concurrent-ruby (~> 1.0, >= 1.3.1) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) + json logger (>= 1.4.2) minitest (>= 5.1) securerandom (>= 0.3) tzinfo (~> 2.0, >= 2.0.5) - annotate (3.2.0) - activerecord (>= 3.2, < 8.0) - rake (>= 10.4, < 14.0) + uri (>= 0.13.1) + annotate (2.6.5) + activerecord (>= 2.3.0) + rake (>= 0.8.7) base64 (0.3.0) bcrypt (3.1.21) - benchmark (0.5.0) bigdecimal (4.0.1) builder (3.3.0) - cgi (0.5.1) class_composer (2.1.0) coderay (1.1.3) concurrent-ruby (1.3.6) @@ -125,6 +124,7 @@ GEM pp (>= 0.6.0) rdoc (>= 4.0.0) reline (>= 0.4.2) + json (2.18.0) json_schematize (0.13.1) class_composer (>= 1.0) jwt (3.1.2) @@ -187,20 +187,20 @@ GEM rack (>= 1.3) rackup (2.3.1) rack (>= 3) - rails (7.2.3) - actioncable (= 7.2.3) - actionmailbox (= 7.2.3) - actionmailer (= 7.2.3) - actionpack (= 7.2.3) - actiontext (= 7.2.3) - actionview (= 7.2.3) - activejob (= 7.2.3) - activemodel (= 7.2.3) - activerecord (= 7.2.3) - activestorage (= 7.2.3) - activesupport (= 7.2.3) + rails (8.1.2) + actioncable (= 8.1.2) + actionmailbox (= 8.1.2) + actionmailer (= 8.1.2) + actionpack (= 8.1.2) + actiontext (= 8.1.2) + actionview (= 8.1.2) + activejob (= 8.1.2) + activemodel (= 8.1.2) + activerecord (= 8.1.2) + activestorage (= 8.1.2) + activesupport (= 8.1.2) bundler (>= 1.15.0) - railties (= 7.2.3) + railties (= 8.1.2) rails-controller-testing (1.0.5) actionpack (>= 5.0.1.rc1) actionview (>= 5.0.1.rc1) @@ -212,10 +212,9 @@ GEM rails-html-sanitizer (1.6.2) loofah (~> 2.21) nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) - railties (7.2.3) - actionpack (= 7.2.3) - activesupport (= 7.2.3) - cgi + railties (8.1.2) + actionpack (= 8.1.2) + activesupport (= 8.1.2) irb (~> 1.13) rackup (>= 1.0.0) rake (>= 12.2) @@ -271,6 +270,7 @@ GEM tsort (0.2.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) + uri (1.1.1) useragent (0.16.11) websocket-driver (0.8.0) base64 @@ -292,7 +292,7 @@ DEPENDENCIES pry puma rack-cors - rails (~> 7) + rails (~> 8) rails-controller-testing rspec-rails rspec_junit_formatter @@ -301,4 +301,4 @@ DEPENDENCIES timecop BUNDLED WITH - 2.5.22 + 4.0.4 diff --git a/app/controllers/command_tower/admin_controller.rb b/app/controllers/command_tower/admin_controller.rb index 5f1c26e..43d0447 100644 --- a/app/controllers/command_tower/admin_controller.rb +++ b/app/controllers/command_tower/admin_controller.rb @@ -53,7 +53,7 @@ def modify_role status: 400, message: result.msg, argument_object: result.invalid_argument_hash, - schema: CommandTower::Schema::Admin::Modify::Request + schema: CommandTower::Schema::Admin::ModifyRole::Request ) else server_error!(result:) diff --git a/app/controllers/command_tower/application_controller.rb b/app/controllers/command_tower/application_controller.rb index 6654020..2c97bf0 100644 --- a/app/controllers/command_tower/application_controller.rb +++ b/app/controllers/command_tower/application_controller.rb @@ -24,7 +24,15 @@ def authenticate_user!(bypass_email_validation: false) return false end - token = raw_token.split("Bearer ")[1].strip + token_parts = raw_token.split("Bearer ") + if token_parts.length < 2 || token_parts[1].nil? || token_parts[1].strip.empty? + status = 401 + schema = CommandTower::Schema::Error::Base.new(status:, message: "Invalid Bearer token format") + render(json: schema.to_h, status:) + return false + end + + token = token_parts[1].strip with_reset = safe_boolean(value: request.headers[AUTHENTICATION_WITH_RESET]) result = CommandTower::Jwt::AuthenticateUser.(token:, bypass_email_validation:, with_reset:) if result.success? diff --git a/app/controllers/command_tower/auth/plain_text_controller.rb b/app/controllers/command_tower/auth/plain_text_controller.rb index 7dba8e8..0f38ee9 100644 --- a/app/controllers/command_tower/auth/plain_text_controller.rb +++ b/app/controllers/command_tower/auth/plain_text_controller.rb @@ -37,9 +37,18 @@ def login_post # GET /auth/login/identifier/valid # Checks if a login identifier is valid def login_identifier_valid_get - result = CommandTower::LoginStrategy::PlainText::ValidIdentifier.(login_key: params[:identifier]) + identifier = params[:identifier] + login_key_key = identifier&.include?("@") ? :email : :username + result = CommandTower::LoginStrategy::PlainText::ValidIdentifier.( + login_key_key: login_key_key, + login_key: identifier + ) if result.success? - schema = CommandTower::Schema::Auth::PlainText::LoginIdentifierValid::Response.new(valid: true) + schema = CommandTower::Schema::Auth::PlainText::LoginIdentifierValid::Response.new( + valid: true, + message: "Login identifier is valid", + user: CommandTower::Schema::Shared::User.convert_user_object(user: result.user) + ) status = 200 schema_succesful!(status:, schema:) else @@ -51,7 +60,8 @@ def login_identifier_valid_get schema: CommandTower::Schema::Auth::PlainText::LoginIdentifierValid::Request ) else - schema = CommandTower::Schema::Error::Base.new(status: 400, message: result.msg) + status = 400 + schema = CommandTower::Schema::Error::Base.new(status:, message: result.msg) render(json: schema.to_h, status:) end end diff --git a/app/controllers/command_tower/inbox/message_controller.rb b/app/controllers/command_tower/inbox/message_controller.rb index dbe632e..97af53a 100644 --- a/app/controllers/command_tower/inbox/message_controller.rb +++ b/app/controllers/command_tower/inbox/message_controller.rb @@ -68,11 +68,19 @@ def modify(type:) status = 200 schema_succesful!(status:, schema:) else + error_schema = case type + when CommandTower::InboxService::Message::Modify::VIEWED + CommandTower::Schema::Inbox::Messages::Ack::Request + when CommandTower::InboxService::Message::Modify::DELETE + CommandTower::Schema::Inbox::Messages::Delete::Request + else + CommandTower::Schema::Inbox::Messages::Ack::Request + end invalid_arguments!( status: 400, message: result.msg, argument_object: result.invalid_argument_hash, - schema: CommandTower::Schema::Inbox::Messages::Ack::Request + schema: error_schema ) end end diff --git a/docker-compose.yaml b/docker-compose.yaml index f3b8588..7054857 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -19,7 +19,7 @@ x-common-environment: &common-environment SESSION_TIMEOUT_WARNING: "true" RAILS_MAX_THREADS: "1" REDIS_URL: "redis://redis" - BUNDLER_RAILS_VERSION: "~> 7" + BUNDLER_RAILS_VERSION: "~> 8" services: mysql: diff --git a/lib/command_tower/schema/shared/user.rb b/lib/command_tower/schema/shared/user.rb index 724974c..0dd67ef 100644 --- a/lib/command_tower/schema/shared/user.rb +++ b/lib/command_tower/schema/shared/user.rb @@ -22,13 +22,7 @@ def self.assign! if metadata = ::User.attribute_to_type_mapping[attribute] type = metadata[:serialized_type] ? metadata[:serialized_type] : metadata[:base] type = JsonSchematize::Boolean if type == "Boolean" - begin add_field(name: attribute, type:) - - rescue StandardError => e - binding.pry - raise - end end end end diff --git a/spec/controllers/command_tower/application_controller_spec.rb b/spec/controllers/command_tower/application_controller_spec.rb new file mode 100644 index 0000000..bf8f887 --- /dev/null +++ b/spec/controllers/command_tower/application_controller_spec.rb @@ -0,0 +1,126 @@ +# frozen_string_literal: true + +# Test ApplicationController's authenticate_user! method through UserController +# UserController inherits from ApplicationController and uses authenticate_user! as a before_action +# This allows us to test the authentication header parsing edge cases +RSpec.describe CommandTower::UserController, type: :controller do + let(:response_body) { JSON.parse(response.body) } + let(:user) { create(:user) } + + describe "ApplicationController#authenticate_user! with malformed Authorization headers" do + subject(:authenticate) { get(:show) } + + context "when Authorization header is missing" do + before { unset_jwt_token! } + + it "returns 401 status" do + authenticate + + expect(response.status).to eq(401) + end + + it "returns 'Bearer token missing' message" do + authenticate + + expect(response_body["message"]).to eq("Bearer token missing") + end + end + + context "when Authorization header uses old format 'Bearer:token'" do + before do + @request.headers[CommandTower::ApplicationController::AUTHENTICATION_HEADER] = "Bearer:some_token_value" + end + + it "returns 401 status instead of crashing" do + expect { authenticate }.not_to raise_error + expect(response.status).to eq(401) + end + + it "returns 'Invalid Bearer token format' message" do + authenticate + + expect(response_body["message"]).to eq("Invalid Bearer token format") + end + end + + context "when Authorization header is missing 'Bearer ' prefix" do + before do + @request.headers[CommandTower::ApplicationController::AUTHENTICATION_HEADER] = "some_token_value" + end + + it "returns 401 status instead of crashing" do + expect { authenticate }.not_to raise_error + expect(response.status).to eq(401) + end + + it "returns 'Invalid Bearer token format' message" do + authenticate + + expect(response_body["message"]).to eq("Invalid Bearer token format") + end + end + + context "when Authorization header has 'Bearer ' but empty token" do + before do + @request.headers[CommandTower::ApplicationController::AUTHENTICATION_HEADER] = "Bearer " + end + + it "returns 401 status instead of crashing" do + expect { authenticate }.not_to raise_error + expect(response.status).to eq(401) + end + + it "returns 'Invalid Bearer token format' message" do + authenticate + + expect(response_body["message"]).to eq("Invalid Bearer token format") + end + end + + context "when Authorization header has 'Bearer ' but only whitespace token" do + before do + @request.headers[CommandTower::ApplicationController::AUTHENTICATION_HEADER] = "Bearer " + end + + it "returns 401 status instead of crashing" do + expect { authenticate }.not_to raise_error + expect(response.status).to eq(401) + end + + it "returns 'Invalid Bearer token format' message" do + authenticate + + expect(response_body["message"]).to eq("Invalid Bearer token format") + end + end + + context "when Authorization header has malformed format without space" do + before do + @request.headers[CommandTower::ApplicationController::AUTHENTICATION_HEADER] = "Bearertoken" + end + + it "returns 401 status instead of crashing" do + expect { authenticate }.not_to raise_error + expect(response.status).to eq(401) + end + + it "returns 'Invalid Bearer token format' message" do + authenticate + + expect(response_body["message"]).to eq("Invalid Bearer token format") + end + end + + context "when Authorization header has valid format 'Bearer token'" do + before do + set_jwt_token!(user: user) + end + + it "does not crash and processes authentication" do + expect { authenticate }.not_to raise_error + # Should either succeed (200) or fail with proper JWT validation error (401), but not crash + expect([200, 401]).to include(response.status) + end + end + end +end