Merge branch 'coding-sales' into staging
This commit is contained in:
@@ -115,6 +115,31 @@
|
|||||||
[]))]
|
[]))]
|
||||||
[existing-accounts]))
|
[existing-accounts]))
|
||||||
|
|
||||||
|
|
||||||
|
(defn apply-idents-to-well-known [conn]
|
||||||
|
(let [[ccp-square] (d/q '[:find [?v]
|
||||||
|
:where [?v :vendor/name "CCP Square"]]
|
||||||
|
(d/db conn))
|
||||||
|
[receipts-split] (d/q '[:find [?a]
|
||||||
|
:where [?a :account/numeric-code 12990]]
|
||||||
|
(d/db conn))
|
||||||
|
[ccp] (d/q '[:find [?a]
|
||||||
|
:where [?a :account/numeric-code 12100]]
|
||||||
|
(d/db conn))
|
||||||
|
[accounts-payable] (d/q '[:find [?a]
|
||||||
|
:where [?a :account/numeric-code 21000]]
|
||||||
|
(d/db conn))]
|
||||||
|
[[{:db/id ccp :db/ident :account/ccp}]
|
||||||
|
[{:db/id ccp-square
|
||||||
|
:db/ident :vendor/ccp-square
|
||||||
|
:vendor/name "CCP Square"
|
||||||
|
:vendor/default-account :account/ccp}
|
||||||
|
{:db/id receipts-split
|
||||||
|
:db/ident :account/receipts-split}
|
||||||
|
|
||||||
|
{:db/id accounts-payable
|
||||||
|
:db/ident :account/accounts-payable}]]))
|
||||||
|
|
||||||
(defn migrate [conn]
|
(defn migrate [conn]
|
||||||
(let [
|
(let [
|
||||||
norms-map (merge {:auto-ap/base-schema {:txes auto-ap.datomic/base-schema}
|
norms-map (merge {:auto-ap/base-schema {:txes auto-ap.datomic/base-schema}
|
||||||
@@ -443,7 +468,10 @@
|
|||||||
:db/doc "error message for a failed job"
|
:db/doc "error message for a failed job"
|
||||||
:db/valueType :db.type/string
|
:db/valueType :db.type/string
|
||||||
:db/cardinality :db.cardinality/one}]]
|
:db/cardinality :db.cardinality/one}]]
|
||||||
:requires [:auto-ap/add-transaction-import2]}}
|
:requires [:auto-ap/add-transaction-import2]}
|
||||||
|
:auto-ap/apply-idents-to-well-known {:txes-fn `apply-idents-to-well-known
|
||||||
|
:requires [:auto-ap/add-general-ledger6
|
||||||
|
:auto-ap/add-account-to-vendor]}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,12 @@
|
|||||||
|
|
||||||
(def integreat-schema
|
(def integreat-schema
|
||||||
{
|
{
|
||||||
:scalars {:id {:parse #(when % (Long/parseLong %))
|
:scalars {:id {:parse #(cond (number? %)
|
||||||
|
%
|
||||||
|
|
||||||
|
%
|
||||||
|
(Long/parseLong %))
|
||||||
|
|
||||||
:serialize #(.toString %)}
|
:serialize #(.toString %)}
|
||||||
:ident {:parse (fn [x] {:db/ident x})
|
:ident {:parse (fn [x] {:db/ident x})
|
||||||
:serialize #(or (:ident %) (:db/ident %) %)}
|
:serialize #(or (:ident %) (:db/ident %) %)}
|
||||||
|
|||||||
@@ -196,49 +196,64 @@
|
|||||||
:else
|
:else
|
||||||
:import)))
|
:import)))
|
||||||
|
|
||||||
|
(defn maybe-assoc-check-number [transaction]
|
||||||
|
(if-let [check-number (or (:transaction/check-number transaction)
|
||||||
|
(extract-check-number transaction))]
|
||||||
|
(assoc transaction :transaction/check-number transaction)
|
||||||
|
transaction))
|
||||||
|
|
||||||
|
|
||||||
|
(defn maybe-clear-payment [{:transaction/keys [check-number client bank-account amount id] :as transaction}]
|
||||||
|
(when-let [existing-payment (transaction->existing-payment transaction check-number client bank-account amount id)]
|
||||||
|
(assoc transaction
|
||||||
|
:transaction/approval-status :transaction-approval-status/approved
|
||||||
|
:transaction/payment {:db/id (:db/id existing-payment)
|
||||||
|
:payment/status :payment-status/cleared}
|
||||||
|
:transaction/vendor (:db/id (:payment/vendor existing-payment))
|
||||||
|
:transaction/location "A"
|
||||||
|
:transaction/accounts [#:transaction-account
|
||||||
|
{:account (:db/id (a/get-account-by-numeric-code-and-sets 21000 ["default"]))
|
||||||
|
:location "A"
|
||||||
|
:amount (Math/abs (double amount))}])))
|
||||||
|
|
||||||
|
(defn maybe-autopay-invoices [{:transaction/keys [amount client bank-account] :as transaction}]
|
||||||
|
(when-let [autopay-invoices-matches (seq (match-transaction-to-unfulfilled-autopayments amount client))]
|
||||||
|
(add-new-payment autopay-invoices-matches bank-account client)))
|
||||||
|
|
||||||
|
(defn maybe-clear-expected-deposit [{:transaction/keys [amount client date] :as transaction}]
|
||||||
|
(when (>= amount 0.0)
|
||||||
|
(when-let [expected-deposit (find-expected-deposit client amount (coerce/to-date-time date))]
|
||||||
|
(assoc transaction
|
||||||
|
:transaction/expected-deposit {:db/id expected-deposit
|
||||||
|
:expected-deposit/status :expected-deposit-status/cleared}
|
||||||
|
:transaction/accounts [{:transaction-account/account :account/ccp
|
||||||
|
:transaction-account/amount amount
|
||||||
|
:transaction-account/location "A"}]
|
||||||
|
:transaction/approval-status :transaction-approval-status/approved
|
||||||
|
:transaction/vendor :vendor/ccp-square
|
||||||
|
))))
|
||||||
|
|
||||||
|
(defn maybe-code [{:transaction/keys [client amount] :as transaction} apply-rules valid-locations]
|
||||||
|
(if-let [unpaid-invoices (seq (match-transaction-to-unpaid-invoices amount client))]
|
||||||
|
nil
|
||||||
|
(apply-rules transaction valid-locations)))
|
||||||
|
|
||||||
(defn transaction->txs [transaction bank-account apply-rules]
|
(defn transaction->txs [transaction bank-account apply-rules]
|
||||||
(let [bank-account-id (:db/id bank-account)
|
(let [bank-account-id (:db/id bank-account)
|
||||||
client (:client/_bank-accounts bank-account)
|
client (:client/_bank-accounts bank-account)
|
||||||
client-id (:db/id client)
|
client-id (:db/id client)
|
||||||
valid-locations (or (:bank-account/locations bank-account) (:client/locations client))]
|
valid-locations (or (:bank-account/locations bank-account) (:client/locations client))
|
||||||
(into []
|
code-fn (some-fn maybe-clear-payment
|
||||||
(let [{:transaction/keys [amount id date]} transaction
|
maybe-clear-expected-deposit
|
||||||
check-number (extract-check-number transaction)
|
#_maybe-autopay-invoices
|
||||||
existing-check (transaction->existing-payment transaction check-number client-id bank-account-id amount id)
|
#(maybe-code % apply-rules valid-locations)
|
||||||
autopay-invoices-matches (when-not existing-check
|
identity)]
|
||||||
(match-transaction-to-unfulfilled-autopayments amount client-id))
|
[(-> transaction
|
||||||
unpaid-invoices-matches (when-not existing-check
|
(assoc :transaction/client client-id)
|
||||||
(match-transaction-to-unpaid-invoices amount client-id ))
|
(assoc :transaction/bank-account bank-account-id)
|
||||||
expected-deposit (when (and (> amount 0.0)
|
(assoc :transaction/approval-status :transaction-approval-status/unapproved)
|
||||||
(not existing-check))
|
maybe-assoc-check-number
|
||||||
(find-expected-deposit (:db/id client) amount (coerce/to-date-time date)))]
|
code-fn)]))
|
||||||
(cond->
|
|
||||||
[(assoc transaction :transaction/approval-status :transaction-approval-status/unapproved)]
|
|
||||||
check-number (update 0 #(assoc % :transaction/check-number check-number))
|
|
||||||
existing-check (update 0 #(assoc % :transaction/approval-status :transaction-approval-status/approved
|
|
||||||
:transaction/payment {:db/id (:db/id existing-check)
|
|
||||||
:payment/status :payment-status/cleared}
|
|
||||||
:transaction/vendor (:db/id (:payment/vendor existing-check))
|
|
||||||
:transaction/location "A"
|
|
||||||
:transaction/accounts [#:transaction-account
|
|
||||||
{:account (:db/id (a/get-account-by-numeric-code-and-sets 21000 ["default"]))
|
|
||||||
:location "A"
|
|
||||||
:amount (Math/abs (double amount))}]))
|
|
||||||
|
|
||||||
;; temporarily removed to automatically match autopaid invoices
|
|
||||||
#_(and (not existing-check)
|
|
||||||
(seq autopay-invoices-matches)) #_(add-new-payment autopay-invoices-matches bank-account-id client-id)
|
|
||||||
expected-deposit (update 0 #(assoc % :transaction/expected-deposit {:db/id expected-deposit
|
|
||||||
:expected-deposit/status :expected-deposit-status/cleared}))
|
|
||||||
|
|
||||||
|
|
||||||
(and (not (seq autopay-invoices-matches))
|
|
||||||
(not (seq unpaid-invoices-matches))
|
|
||||||
(not expected-deposit)) (update 0 #(apply-rules % valid-locations))
|
|
||||||
true (update 0 remove-nils))))))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(defn get-existing [bank-account]
|
(defn get-existing [bank-account]
|
||||||
|
|||||||
@@ -17,10 +17,12 @@
|
|||||||
(map :a)
|
(map :a)
|
||||||
(map namespace)
|
(map namespace)
|
||||||
set)]
|
set)]
|
||||||
|
(println namespaces changes)
|
||||||
(cond (namespaces "invoice" ) [[:invoice e]]
|
(cond (namespaces "invoice" ) [[:invoice e]]
|
||||||
(namespaces "invoice-expense-account" ) [[:invoice (:db/id (:invoice/_expense-accounts entity))]]
|
(namespaces "invoice-expense-account" ) [[:invoice (:db/id (:invoice/_expense-accounts entity))]]
|
||||||
(namespaces "transaction-account" ) [[:transaction (:db/id (:transaction/_accounts entity))]]
|
(namespaces "transaction-account" ) [[:transaction (:db/id (:transaction/_accounts entity))]]
|
||||||
(namespaces "transaction" ) [[:transaction e]]
|
(namespaces "transaction" ) [[:transaction e]]
|
||||||
|
(namespaces "expected-deposit" ) [[:expected-deposit e]]
|
||||||
:else nil)))
|
:else nil)))
|
||||||
|
|
||||||
|
|
||||||
@@ -33,6 +35,7 @@
|
|||||||
(cond (namespaces "invoice" ) :invoice
|
(cond (namespaces "invoice" ) :invoice
|
||||||
(namespaces "invoice-expense-account" ) :invoice-expense-account
|
(namespaces "invoice-expense-account" ) :invoice-expense-account
|
||||||
(namespaces "transaction-account" ) :transaction-account
|
(namespaces "transaction-account" ) :transaction-account
|
||||||
|
(namespaces "expected-deposit" ) :expected-deposit
|
||||||
:else nil)))
|
:else nil)))
|
||||||
|
|
||||||
(defmulti entity-change->ledger (fn [_ [type]]
|
(defmulti entity-change->ledger (fn [_ [type]]
|
||||||
@@ -57,7 +60,7 @@
|
|||||||
:journal-entry/vendor (:db/id (:invoice/vendor entity))
|
:journal-entry/vendor (:db/id (:invoice/vendor entity))
|
||||||
:journal-entry/amount (Math/abs (:invoice/total entity))
|
:journal-entry/amount (Math/abs (:invoice/total entity))
|
||||||
|
|
||||||
:journal-entry/line-items (into [(cond-> {:journal-entry-line/account (:db/id (a/get-account-by-numeric-code-and-sets 21000 ["default"]))
|
:journal-entry/line-items (into [(cond-> {:journal-entry-line/account :account/accounts-payable
|
||||||
:journal-entry-line/location "A"
|
:journal-entry-line/location "A"
|
||||||
}
|
}
|
||||||
credit-invoice? (assoc :journal-entry-line/debit (Math/abs (:invoice/total entity)))
|
credit-invoice? (assoc :journal-entry-line/debit (Math/abs (:invoice/total entity)))
|
||||||
@@ -120,6 +123,26 @@
|
|||||||
|
|
||||||
:journal-entry/cleared true}))))
|
:journal-entry/cleared true}))))
|
||||||
|
|
||||||
|
(defmethod entity-change->ledger :expected-deposit
|
||||||
|
[db [type id]]
|
||||||
|
(let [{:expected-deposit/keys [total client date]} (d/pull db '[:expected-deposit/total :expected-deposit/client :expected-deposit/date] id)]
|
||||||
|
#:journal-entry
|
||||||
|
{:source "expected-deposit"
|
||||||
|
:original-entity id
|
||||||
|
|
||||||
|
:client client
|
||||||
|
:date date
|
||||||
|
:amount total
|
||||||
|
:vendor :vendor/ccp-square
|
||||||
|
:line-items [#:journal-entry-line
|
||||||
|
{:credit total
|
||||||
|
:location "A"
|
||||||
|
:account :account/receipts-split}
|
||||||
|
#:journal-entry-line
|
||||||
|
{:debit total
|
||||||
|
:location "A"
|
||||||
|
:account :account/ccp}]}))
|
||||||
|
|
||||||
(defmethod entity-change->ledger :invoice-expense-account
|
(defmethod entity-change->ledger :invoice-expense-account
|
||||||
[db [entity changes]]
|
[db [entity changes]]
|
||||||
nil
|
nil
|
||||||
|
|||||||
@@ -452,7 +452,8 @@
|
|||||||
(map (fn [x] [:db/retractEntity x]))))
|
(map (fn [x] [:db/retractEntity x]))))
|
||||||
|
|
||||||
(defn upsert-all []
|
(defn upsert-all []
|
||||||
(doseq [[client-code] (get-in env [:square-config])]
|
(doseq [[client-code] (get-in env [:square-config])
|
||||||
|
:when (d/entid (d/db conn) [:client/code client-code])]
|
||||||
(lc/with-context {:source (str "Square loading for " client-code)
|
(lc/with-context {:source (str "Square loading for " client-code)
|
||||||
:client client-code}
|
:client client-code}
|
||||||
(log/info "Loading Orders")
|
(log/info "Loading Orders")
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
{
|
{
|
||||||
"version": 4,
|
"version": 4,
|
||||||
"terraform_version": "0.13.3",
|
"terraform_version": "0.14.4",
|
||||||
"serial": 70,
|
"serial": 84,
|
||||||
"lineage": "91d10fe0-8033-8778-c202-78d5a81632e8",
|
"lineage": "91d10fe0-8033-8778-c202-78d5a81632e8",
|
||||||
"outputs": {
|
"outputs": {
|
||||||
"aws_access_key_id": {
|
"aws_access_key_id": {
|
||||||
"value": "AKIAJIS67OSJARD2E6VQ",
|
"value": "AKIAJIS67OSJARD2E6VQ",
|
||||||
"type": "string"
|
"type": "string",
|
||||||
|
"sensitive": true
|
||||||
},
|
},
|
||||||
"aws_default_region": {
|
"aws_default_region": {
|
||||||
"value": "us-east-1",
|
"value": "us-east-1",
|
||||||
@@ -14,7 +15,8 @@
|
|||||||
},
|
},
|
||||||
"aws_secret_access_key": {
|
"aws_secret_access_key": {
|
||||||
"value": "Z+AOjQU9M4SwKVU2meYtyNxXtz1Axu/9xohvteXf",
|
"value": "Z+AOjQU9M4SwKVU2meYtyNxXtz1Axu/9xohvteXf",
|
||||||
"type": "string"
|
"type": "string",
|
||||||
|
"sensitive": true
|
||||||
},
|
},
|
||||||
"queue_url": {
|
"queue_url": {
|
||||||
"value": "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-mail-staging",
|
"value": "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-mail-staging",
|
||||||
@@ -33,9 +35,10 @@
|
|||||||
"attributes": {
|
"attributes": {
|
||||||
"account_id": "679918342773",
|
"account_id": "679918342773",
|
||||||
"arn": "arn:aws:iam::679918342773:user/bryce",
|
"arn": "arn:aws:iam::679918342773:user/bryce",
|
||||||
"id": "2020-09-25 00:21:01.39516 +0000 UTC",
|
"id": "679918342773",
|
||||||
"user_id": "AIDAJPUJFTOKO4IRADMV4"
|
"user_id": "AIDAJPUJFTOKO4IRADMV4"
|
||||||
}
|
},
|
||||||
|
"sensitive_attributes": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -71,9 +74,11 @@
|
|||||||
"status": "ISSUED",
|
"status": "ISSUED",
|
||||||
"subject_alternative_names": [],
|
"subject_alternative_names": [],
|
||||||
"tags": {},
|
"tags": {},
|
||||||
|
"tags_all": {},
|
||||||
"validation_emails": [],
|
"validation_emails": [],
|
||||||
"validation_method": "DNS"
|
"validation_method": "DNS"
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjAifQ=="
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjAifQ=="
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -89,6 +94,12 @@
|
|||||||
"attributes": {
|
"attributes": {
|
||||||
"capacity_provider_strategy": [],
|
"capacity_provider_strategy": [],
|
||||||
"cluster": "arn:aws:ecs:us-east-1:679918342773:cluster/default",
|
"cluster": "arn:aws:ecs:us-east-1:679918342773:cluster/default",
|
||||||
|
"deployment_circuit_breaker": [
|
||||||
|
{
|
||||||
|
"enable": false,
|
||||||
|
"rollback": false
|
||||||
|
}
|
||||||
|
],
|
||||||
"deployment_controller": [
|
"deployment_controller": [
|
||||||
{
|
{
|
||||||
"type": "ECS"
|
"type": "ECS"
|
||||||
@@ -98,10 +109,11 @@
|
|||||||
"deployment_minimum_healthy_percent": 100,
|
"deployment_minimum_healthy_percent": 100,
|
||||||
"desired_count": 1,
|
"desired_count": 1,
|
||||||
"enable_ecs_managed_tags": false,
|
"enable_ecs_managed_tags": false,
|
||||||
|
"enable_execute_command": false,
|
||||||
"force_new_deployment": null,
|
"force_new_deployment": null,
|
||||||
"health_check_grace_period_seconds": 600,
|
"health_check_grace_period_seconds": 600,
|
||||||
"iam_role": "aws-service-role",
|
"iam_role": "aws-service-role",
|
||||||
"id": "arn:aws:ecs:us-east-1:679918342773:service/integreat_app_staging",
|
"id": "arn:aws:ecs:us-east-1:679918342773:service/default/integreat_app_staging",
|
||||||
"launch_type": "FARGATE",
|
"launch_type": "FARGATE",
|
||||||
"load_balancer": [
|
"load_balancer": [
|
||||||
{
|
{
|
||||||
@@ -136,19 +148,101 @@
|
|||||||
"container_name": "",
|
"container_name": "",
|
||||||
"container_port": 0,
|
"container_port": 0,
|
||||||
"port": 0,
|
"port": 0,
|
||||||
"registry_arn": "arn:aws:servicediscovery:us-east-1:679918342773:service/srv-6auj2wqsh55k2nuj"
|
"registry_arn": "arn:aws:servicediscovery:us-east-1:679918342773:service/srv-nsn252bfk4r6bzpj"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"tags": {},
|
"tags": null,
|
||||||
"task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_app_staging:3",
|
"tags_all": {},
|
||||||
|
"task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_app_staging:81",
|
||||||
"timeouts": {
|
"timeouts": {
|
||||||
"delete": null
|
"delete": null
|
||||||
}
|
},
|
||||||
|
"wait_for_steady_state": false
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjoxMjAwMDAwMDAwMDAwfX0=",
|
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjoxMjAwMDAwMDAwMDAwfX0=",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"aws_ecs_task_definition.integreat_app",
|
"aws_ecs_task_definition.integreat_app",
|
||||||
"aws_lb_target_group.integreat_app"
|
"aws_lb_target_group.integreat_app",
|
||||||
|
"aws_service_discovery_service.service"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mode": "managed",
|
||||||
|
"type": "aws_ecs_service",
|
||||||
|
"name": "integreat_background_worker",
|
||||||
|
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"schema_version": 0,
|
||||||
|
"attributes": {
|
||||||
|
"capacity_provider_strategy": [],
|
||||||
|
"cluster": "arn:aws:ecs:us-east-1:679918342773:cluster/default",
|
||||||
|
"deployment_circuit_breaker": [
|
||||||
|
{
|
||||||
|
"enable": false,
|
||||||
|
"rollback": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"deployment_controller": [
|
||||||
|
{
|
||||||
|
"type": "ECS"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"deployment_maximum_percent": 200,
|
||||||
|
"deployment_minimum_healthy_percent": 100,
|
||||||
|
"desired_count": 1,
|
||||||
|
"enable_ecs_managed_tags": false,
|
||||||
|
"enable_execute_command": false,
|
||||||
|
"force_new_deployment": null,
|
||||||
|
"health_check_grace_period_seconds": 0,
|
||||||
|
"iam_role": "aws-service-role",
|
||||||
|
"id": "arn:aws:ecs:us-east-1:679918342773:service/default/integreat_background_worker_staging",
|
||||||
|
"launch_type": "FARGATE",
|
||||||
|
"load_balancer": [],
|
||||||
|
"name": "integreat_background_worker_staging",
|
||||||
|
"network_configuration": [
|
||||||
|
{
|
||||||
|
"assign_public_ip": true,
|
||||||
|
"security_groups": [
|
||||||
|
"sg-004e5855310c453a3",
|
||||||
|
"sg-02d167406b1082698"
|
||||||
|
],
|
||||||
|
"subnets": [
|
||||||
|
"subnet-5e675761",
|
||||||
|
"subnet-8519fde2",
|
||||||
|
"subnet-89bab8d4"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"ordered_placement_strategy": [],
|
||||||
|
"placement_constraints": [],
|
||||||
|
"platform_version": "LATEST",
|
||||||
|
"propagate_tags": "NONE",
|
||||||
|
"scheduling_strategy": "REPLICA",
|
||||||
|
"service_registries": [
|
||||||
|
{
|
||||||
|
"container_name": "",
|
||||||
|
"container_port": 0,
|
||||||
|
"port": 0,
|
||||||
|
"registry_arn": "arn:aws:servicediscovery:us-east-1:679918342773:service/srv-4cuqgdwqo5acwqtq"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tags": null,
|
||||||
|
"tags_all": {},
|
||||||
|
"task_definition": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_background-worker_staging:1",
|
||||||
|
"timeouts": {
|
||||||
|
"delete": null
|
||||||
|
},
|
||||||
|
"wait_for_steady_state": false
|
||||||
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
|
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjoxMjAwMDAwMDAwMDAwfX0=",
|
||||||
|
"dependencies": [
|
||||||
|
"aws_ecs_task_definition.integreat_background_worker",
|
||||||
|
"aws_service_discovery_service.background_worker_service"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -162,14 +256,53 @@
|
|||||||
{
|
{
|
||||||
"schema_version": 1,
|
"schema_version": 1,
|
||||||
"attributes": {
|
"attributes": {
|
||||||
"arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_app_staging:3",
|
"arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_app_staging:81",
|
||||||
"container_definitions": "[{\"cpu\":0,\"environment\":[{\"name\":\"config\",\"value\":\"/usr/local/config/staging.edn\"}],\"essential\":true,\"image\":\"679918342773.dkr.ecr.us-east-1.amazonaws.com/integreat\",\"logConfiguration\":{\"logDriver\":\"awslogs\",\"options\":{\"awslogs-group\":\"/ecs/integreat-app\",\"awslogs-region\":\"us-east-1\",\"awslogs-stream-prefix\":\"ecs\"}},\"mountPoints\":[],\"name\":\"integreat-app\",\"portMappings\":[{\"containerPort\":3000,\"hostPort\":3000,\"protocol\":\"tcp\"},{\"containerPort\":9000,\"hostPort\":9000,\"protocol\":\"tcp\"}],\"volumesFrom\":[]}]",
|
"container_definitions": "[{\"cpu\":0,\"environment\":[{\"name\":\"config\",\"value\":\"/usr/local/config/staging.edn\"}],\"essential\":true,\"image\":\"679918342773.dkr.ecr.us-east-1.amazonaws.com/integreat\",\"logConfiguration\":{\"logDriver\":\"awslogs\",\"options\":{\"awslogs-group\":\"/ecs/integreat-app-staging\",\"awslogs-region\":\"us-east-1\",\"awslogs-stream-prefix\":\"ecs\"}},\"mountPoints\":[],\"name\":\"integreat-app\",\"portMappings\":[{\"containerPort\":3000,\"hostPort\":3000,\"protocol\":\"tcp\"},{\"containerPort\":9000,\"hostPort\":9000,\"protocol\":\"tcp\"}],\"volumesFrom\":[]}]",
|
||||||
"cpu": "2048",
|
"cpu": "2048",
|
||||||
|
"ephemeral_storage": [],
|
||||||
"execution_role_arn": "arn:aws:iam::679918342773:role/ecsTaskExecutionRole",
|
"execution_role_arn": "arn:aws:iam::679918342773:role/ecsTaskExecutionRole",
|
||||||
"family": "integreat_app_staging",
|
"family": "integreat_app_staging",
|
||||||
"id": "integreat_app_staging",
|
"id": "integreat_app_staging",
|
||||||
"inference_accelerator": [],
|
"inference_accelerator": [],
|
||||||
"ipc_mode": "",
|
"ipc_mode": "",
|
||||||
|
"memory": "8192",
|
||||||
|
"network_mode": "awsvpc",
|
||||||
|
"pid_mode": "",
|
||||||
|
"placement_constraints": [],
|
||||||
|
"proxy_configuration": [],
|
||||||
|
"requires_compatibilities": [
|
||||||
|
"FARGATE"
|
||||||
|
],
|
||||||
|
"revision": 81,
|
||||||
|
"runtime_platform": [],
|
||||||
|
"tags": null,
|
||||||
|
"tags_all": {},
|
||||||
|
"task_role_arn": "arn:aws:iam::679918342773:role/datomic-ddb",
|
||||||
|
"volume": []
|
||||||
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ=="
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mode": "managed",
|
||||||
|
"type": "aws_ecs_task_definition",
|
||||||
|
"name": "integreat_background_worker",
|
||||||
|
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"schema_version": 1,
|
||||||
|
"attributes": {
|
||||||
|
"arn": "arn:aws:ecs:us-east-1:679918342773:task-definition/integreat_background-worker_staging:1",
|
||||||
|
"container_definitions": "[{\"cpu\":0,\"environment\":[{\"name\":\"config\",\"value\":\"/usr/local/config/staging-background-worker.edn\"}],\"essential\":true,\"image\":\"679918342773.dkr.ecr.us-east-1.amazonaws.com/integreat\",\"logConfiguration\":{\"logDriver\":\"awslogs\",\"options\":{\"awslogs-group\":\"/ecs/integreat-background-worker-staging\",\"awslogs-region\":\"us-east-1\",\"awslogs-stream-prefix\":\"ecs\"}},\"mountPoints\":[],\"name\":\"integreat-app\",\"portMappings\":[{\"containerPort\":9000,\"hostPort\":9000,\"protocol\":\"tcp\"},{\"containerPort\":9090,\"hostPort\":9090,\"protocol\":\"tcp\"}],\"volumesFrom\":[]}]",
|
||||||
|
"cpu": "1024",
|
||||||
|
"ephemeral_storage": [],
|
||||||
|
"execution_role_arn": "arn:aws:iam::679918342773:role/ecsTaskExecutionRole",
|
||||||
|
"family": "integreat_background-worker_staging",
|
||||||
|
"id": "integreat_background-worker_staging",
|
||||||
|
"inference_accelerator": [],
|
||||||
|
"ipc_mode": "",
|
||||||
"memory": "4096",
|
"memory": "4096",
|
||||||
"network_mode": "awsvpc",
|
"network_mode": "awsvpc",
|
||||||
"pid_mode": "",
|
"pid_mode": "",
|
||||||
@@ -178,11 +311,14 @@
|
|||||||
"requires_compatibilities": [
|
"requires_compatibilities": [
|
||||||
"FARGATE"
|
"FARGATE"
|
||||||
],
|
],
|
||||||
"revision": 3,
|
"revision": 1,
|
||||||
"tags": {},
|
"runtime_platform": [],
|
||||||
|
"tags": null,
|
||||||
|
"tags_all": {},
|
||||||
"task_role_arn": "arn:aws:iam::679918342773:role/datomic-ddb",
|
"task_role_arn": "arn:aws:iam::679918342773:role/datomic-ddb",
|
||||||
"volume": []
|
"volume": []
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ=="
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ=="
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -196,7 +332,9 @@
|
|||||||
{
|
{
|
||||||
"schema_version": 0,
|
"schema_version": 0,
|
||||||
"attributes": {
|
"attributes": {
|
||||||
|
"create_date": "2018-04-08T22:09:45Z",
|
||||||
"encrypted_secret": null,
|
"encrypted_secret": null,
|
||||||
|
"encrypted_ses_smtp_password_v4": null,
|
||||||
"id": "AKIAJIS67OSJARD2E6VQ",
|
"id": "AKIAJIS67OSJARD2E6VQ",
|
||||||
"key_fingerprint": null,
|
"key_fingerprint": null,
|
||||||
"pgp_key": null,
|
"pgp_key": null,
|
||||||
@@ -205,6 +343,7 @@
|
|||||||
"status": "Active",
|
"status": "Active",
|
||||||
"user": "integreat-staging"
|
"user": "integreat-staging"
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"aws_iam_user.app_user"
|
"aws_iam_user.app_user"
|
||||||
]
|
]
|
||||||
@@ -227,8 +366,10 @@
|
|||||||
"path": "/",
|
"path": "/",
|
||||||
"permissions_boundary": null,
|
"permissions_boundary": null,
|
||||||
"tags": {},
|
"tags": {},
|
||||||
|
"tags_all": {},
|
||||||
"unique_id": "AIDAJ4KJ7STJZNLIN3M6S"
|
"unique_id": "AIDAJ4KJ7STJZNLIN3M6S"
|
||||||
}
|
},
|
||||||
|
"sensitive_attributes": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -245,6 +386,7 @@
|
|||||||
"policy_arn": "arn:aws:iam::aws:policy/AdministratorAccess",
|
"policy_arn": "arn:aws:iam::aws:policy/AdministratorAccess",
|
||||||
"user": "integreat-staging"
|
"user": "integreat-staging"
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"aws_iam_user.app_user"
|
"aws_iam_user.app_user"
|
||||||
]
|
]
|
||||||
@@ -269,13 +411,16 @@
|
|||||||
],
|
],
|
||||||
"arn": "arn:aws:elasticloadbalancing:us-east-1:679918342773:loadbalancer/app/integreat-app-staging/dc040205e561419e",
|
"arn": "arn:aws:elasticloadbalancing:us-east-1:679918342773:loadbalancer/app/integreat-app-staging/dc040205e561419e",
|
||||||
"arn_suffix": "app/integreat-app-staging/dc040205e561419e",
|
"arn_suffix": "app/integreat-app-staging/dc040205e561419e",
|
||||||
|
"customer_owned_ipv4_pool": "",
|
||||||
|
"desync_mitigation_mode": "defensive",
|
||||||
"dns_name": "integreat-app-staging-229185591.us-east-1.elb.amazonaws.com",
|
"dns_name": "integreat-app-staging-229185591.us-east-1.elb.amazonaws.com",
|
||||||
"drop_invalid_header_fields": false,
|
"drop_invalid_header_fields": false,
|
||||||
"enable_cross_zone_load_balancing": null,
|
"enable_cross_zone_load_balancing": null,
|
||||||
"enable_deletion_protection": true,
|
"enable_deletion_protection": true,
|
||||||
"enable_http2": true,
|
"enable_http2": true,
|
||||||
|
"enable_waf_fail_open": false,
|
||||||
"id": "arn:aws:elasticloadbalancing:us-east-1:679918342773:loadbalancer/app/integreat-app-staging/dc040205e561419e",
|
"id": "arn:aws:elasticloadbalancing:us-east-1:679918342773:loadbalancer/app/integreat-app-staging/dc040205e561419e",
|
||||||
"idle_timeout": 60,
|
"idle_timeout": 120,
|
||||||
"internal": false,
|
"internal": false,
|
||||||
"ip_address_type": "ipv4",
|
"ip_address_type": "ipv4",
|
||||||
"load_balancer_type": "application",
|
"load_balancer_type": "application",
|
||||||
@@ -287,31 +432,43 @@
|
|||||||
"subnet_mapping": [
|
"subnet_mapping": [
|
||||||
{
|
{
|
||||||
"allocation_id": "",
|
"allocation_id": "",
|
||||||
|
"ipv6_address": "",
|
||||||
|
"outpost_id": "",
|
||||||
"private_ipv4_address": "",
|
"private_ipv4_address": "",
|
||||||
"subnet_id": "subnet-16161a39"
|
"subnet_id": "subnet-16161a39"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"allocation_id": "",
|
"allocation_id": "",
|
||||||
|
"ipv6_address": "",
|
||||||
|
"outpost_id": "",
|
||||||
"private_ipv4_address": "",
|
"private_ipv4_address": "",
|
||||||
"subnet_id": "subnet-323deb78"
|
"subnet_id": "subnet-323deb78"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"allocation_id": "",
|
"allocation_id": "",
|
||||||
|
"ipv6_address": "",
|
||||||
|
"outpost_id": "",
|
||||||
"private_ipv4_address": "",
|
"private_ipv4_address": "",
|
||||||
"subnet_id": "subnet-44c2774b"
|
"subnet_id": "subnet-44c2774b"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"allocation_id": "",
|
"allocation_id": "",
|
||||||
|
"ipv6_address": "",
|
||||||
|
"outpost_id": "",
|
||||||
"private_ipv4_address": "",
|
"private_ipv4_address": "",
|
||||||
"subnet_id": "subnet-5e675761"
|
"subnet_id": "subnet-5e675761"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"allocation_id": "",
|
"allocation_id": "",
|
||||||
|
"ipv6_address": "",
|
||||||
|
"outpost_id": "",
|
||||||
"private_ipv4_address": "",
|
"private_ipv4_address": "",
|
||||||
"subnet_id": "subnet-8519fde2"
|
"subnet_id": "subnet-8519fde2"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"allocation_id": "",
|
"allocation_id": "",
|
||||||
|
"ipv6_address": "",
|
||||||
|
"outpost_id": "",
|
||||||
"private_ipv4_address": "",
|
"private_ipv4_address": "",
|
||||||
"subnet_id": "subnet-89bab8d4"
|
"subnet_id": "subnet-89bab8d4"
|
||||||
}
|
}
|
||||||
@@ -325,10 +482,12 @@
|
|||||||
"subnet-89bab8d4"
|
"subnet-89bab8d4"
|
||||||
],
|
],
|
||||||
"tags": {},
|
"tags": {},
|
||||||
|
"tags_all": {},
|
||||||
"timeouts": null,
|
"timeouts": null,
|
||||||
"vpc_id": "vpc-b5b7d6ce",
|
"vpc_id": "vpc-b5b7d6ce",
|
||||||
"zone_id": "Z35SXDOTRQ7X7K"
|
"zone_id": "Z35SXDOTRQ7X7K"
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19"
|
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -342,6 +501,7 @@
|
|||||||
{
|
{
|
||||||
"schema_version": 0,
|
"schema_version": 0,
|
||||||
"attributes": {
|
"attributes": {
|
||||||
|
"alpn_policy": null,
|
||||||
"arn": "arn:aws:elasticloadbalancing:us-east-1:679918342773:listener/app/integreat-app-staging/dc040205e561419e/8e5542063f461bb4",
|
"arn": "arn:aws:elasticloadbalancing:us-east-1:679918342773:listener/app/integreat-app-staging/dc040205e561419e/8e5542063f461bb4",
|
||||||
"certificate_arn": null,
|
"certificate_arn": null,
|
||||||
"default_action": [
|
"default_action": [
|
||||||
@@ -370,10 +530,13 @@
|
|||||||
"port": 80,
|
"port": 80,
|
||||||
"protocol": "HTTP",
|
"protocol": "HTTP",
|
||||||
"ssl_policy": "",
|
"ssl_policy": "",
|
||||||
|
"tags": {},
|
||||||
|
"tags_all": {},
|
||||||
"timeouts": {
|
"timeouts": {
|
||||||
"read": null
|
"read": null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsicmVhZCI6NjAwMDAwMDAwMDAwfX0=",
|
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsicmVhZCI6NjAwMDAwMDAwMDAwfX0=",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"aws_lb.integreat_app"
|
"aws_lb.integreat_app"
|
||||||
@@ -390,6 +553,7 @@
|
|||||||
{
|
{
|
||||||
"schema_version": 0,
|
"schema_version": 0,
|
||||||
"attributes": {
|
"attributes": {
|
||||||
|
"alpn_policy": null,
|
||||||
"arn": "arn:aws:elasticloadbalancing:us-east-1:679918342773:listener/app/integreat-app-staging/dc040205e561419e/b89075bc6a559a4f",
|
"arn": "arn:aws:elasticloadbalancing:us-east-1:679918342773:listener/app/integreat-app-staging/dc040205e561419e/b89075bc6a559a4f",
|
||||||
"certificate_arn": "arn:aws:acm:us-east-1:679918342773:certificate/eec88d2f-93c4-4e7e-a167-e75d853f0759",
|
"certificate_arn": "arn:aws:acm:us-east-1:679918342773:certificate/eec88d2f-93c4-4e7e-a167-e75d853f0759",
|
||||||
"default_action": [
|
"default_action": [
|
||||||
@@ -409,10 +573,13 @@
|
|||||||
"port": 443,
|
"port": 443,
|
||||||
"protocol": "HTTPS",
|
"protocol": "HTTPS",
|
||||||
"ssl_policy": "ELBSecurityPolicy-2016-08",
|
"ssl_policy": "ELBSecurityPolicy-2016-08",
|
||||||
|
"tags": {},
|
||||||
|
"tags_all": {},
|
||||||
"timeouts": {
|
"timeouts": {
|
||||||
"read": null
|
"read": null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsicmVhZCI6NjAwMDAwMDAwMDAwfX0=",
|
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsicmVhZCI6NjAwMDAwMDAwMDAwfX0=",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"aws_acm_certificate.cert",
|
"aws_acm_certificate.cert",
|
||||||
@@ -464,7 +631,7 @@
|
|||||||
"/css/*",
|
"/css/*",
|
||||||
"/finance-font/*",
|
"/finance-font/*",
|
||||||
"/img/*",
|
"/img/*",
|
||||||
"/js/compiled/app.js",
|
"/js/compiled/*",
|
||||||
"index.html"
|
"index.html"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -475,14 +642,14 @@
|
|||||||
],
|
],
|
||||||
"id": "arn:aws:elasticloadbalancing:us-east-1:679918342773:listener-rule/app/integreat-app-staging/dc040205e561419e/b89075bc6a559a4f/8bc88fa379868c55",
|
"id": "arn:aws:elasticloadbalancing:us-east-1:679918342773:listener-rule/app/integreat-app-staging/dc040205e561419e/b89075bc6a559a4f/8bc88fa379868c55",
|
||||||
"listener_arn": "arn:aws:elasticloadbalancing:us-east-1:679918342773:listener/app/integreat-app-staging/dc040205e561419e/b89075bc6a559a4f",
|
"listener_arn": "arn:aws:elasticloadbalancing:us-east-1:679918342773:listener/app/integreat-app-staging/dc040205e561419e/b89075bc6a559a4f",
|
||||||
"priority": 1
|
"priority": 1,
|
||||||
|
"tags": {},
|
||||||
|
"tags_all": {}
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "bnVsbA==",
|
"private": "bnVsbA==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"aws_acm_certificate.cert",
|
"aws_lb_listener.https"
|
||||||
"aws_lb.integreat_app",
|
|
||||||
"aws_lb_listener.https",
|
|
||||||
"aws_lb_target_group.integreat_app"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -498,7 +665,8 @@
|
|||||||
"attributes": {
|
"attributes": {
|
||||||
"arn": "arn:aws:elasticloadbalancing:us-east-1:679918342773:targetgroup/integreat-app-staging/34af39c4c46e7ce1",
|
"arn": "arn:aws:elasticloadbalancing:us-east-1:679918342773:targetgroup/integreat-app-staging/34af39c4c46e7ce1",
|
||||||
"arn_suffix": "targetgroup/integreat-app-staging/34af39c4c46e7ce1",
|
"arn_suffix": "targetgroup/integreat-app-staging/34af39c4c46e7ce1",
|
||||||
"deregistration_delay": 120,
|
"connection_termination": false,
|
||||||
|
"deregistration_delay": "120",
|
||||||
"health_check": [
|
"health_check": [
|
||||||
{
|
{
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
@@ -508,8 +676,8 @@
|
|||||||
"path": "/api/health-check",
|
"path": "/api/health-check",
|
||||||
"port": "traffic-port",
|
"port": "traffic-port",
|
||||||
"protocol": "HTTP",
|
"protocol": "HTTP",
|
||||||
"timeout": 5,
|
"timeout": 14,
|
||||||
"unhealthy_threshold": 2
|
"unhealthy_threshold": 5
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": "arn:aws:elasticloadbalancing:us-east-1:679918342773:targetgroup/integreat-app-staging/34af39c4c46e7ce1",
|
"id": "arn:aws:elasticloadbalancing:us-east-1:679918342773:targetgroup/integreat-app-staging/34af39c4c46e7ce1",
|
||||||
@@ -518,20 +686,25 @@
|
|||||||
"name": "integreat-app-staging",
|
"name": "integreat-app-staging",
|
||||||
"name_prefix": null,
|
"name_prefix": null,
|
||||||
"port": 80,
|
"port": 80,
|
||||||
|
"preserve_client_ip": null,
|
||||||
"protocol": "HTTP",
|
"protocol": "HTTP",
|
||||||
|
"protocol_version": "HTTP1",
|
||||||
"proxy_protocol_v2": false,
|
"proxy_protocol_v2": false,
|
||||||
"slow_start": 0,
|
"slow_start": 0,
|
||||||
"stickiness": [
|
"stickiness": [
|
||||||
{
|
{
|
||||||
"cookie_duration": 86400,
|
"cookie_duration": 86400,
|
||||||
|
"cookie_name": "",
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
"type": "lb_cookie"
|
"type": "lb_cookie"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"tags": {},
|
"tags": {},
|
||||||
|
"tags_all": {},
|
||||||
"target_type": "ip",
|
"target_type": "ip",
|
||||||
"vpc_id": "vpc-b5b7d6ce"
|
"vpc_id": "vpc-b5b7d6ce"
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "bnVsbA=="
|
"private": "bnVsbA=="
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -560,12 +733,13 @@
|
|||||||
"lifecycle_rule": [],
|
"lifecycle_rule": [],
|
||||||
"logging": [],
|
"logging": [],
|
||||||
"object_lock_configuration": [],
|
"object_lock_configuration": [],
|
||||||
"policy": "{\"Id\":\"Policy1526084187222\",\"Statement\":[{\"Action\":\"s3:GetObject\",\"Effect\":\"Allow\",\"Principal\":\"*\",\"Resource\":\"arn:aws:s3:::data.staging.app.integreatconsult.com/*\",\"Sid\":\"Stmt1526084185514\"}],\"Version\":\"2012-10-17\"}",
|
"policy": "{\"Id\":\"Policy1526084187222\",\"Statement\":[{\"Action\":[\"s3:GetObject\"],\"Effect\":\"Allow\",\"Principal\":\"*\",\"Resource\":\"arn:aws:s3:::data.staging.app.integreatconsult.com/*\",\"Sid\":\"Stmt1526084185514\"},{\"Action\":\"s3:*\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::679918342773:role/datomic-ddb\"},\"Resource\":\"arn:aws:s3:::data.staging.app.integreatconsult.com\",\"Sid\":\"AllowReadForProd\"}],\"Version\":\"2012-10-17\"}",
|
||||||
"region": "us-east-1",
|
"region": "us-east-1",
|
||||||
"replication_configuration": [],
|
"replication_configuration": [],
|
||||||
"request_payer": "BucketOwner",
|
"request_payer": "BucketOwner",
|
||||||
"server_side_encryption_configuration": [],
|
"server_side_encryption_configuration": [],
|
||||||
"tags": {},
|
"tags": {},
|
||||||
|
"tags_all": {},
|
||||||
"versioning": [
|
"versioning": [
|
||||||
{
|
{
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
@@ -583,6 +757,7 @@
|
|||||||
"website_domain": "s3-website-us-east-1.amazonaws.com",
|
"website_domain": "s3-website-us-east-1.amazonaws.com",
|
||||||
"website_endpoint": "data.staging.app.integreatconsult.com.s3-website-us-east-1.amazonaws.com"
|
"website_endpoint": "data.staging.app.integreatconsult.com.s3-website-us-east-1.amazonaws.com"
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "bnVsbA=="
|
"private": "bnVsbA=="
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -617,6 +792,7 @@
|
|||||||
"request_payer": "BucketOwner",
|
"request_payer": "BucketOwner",
|
||||||
"server_side_encryption_configuration": [],
|
"server_side_encryption_configuration": [],
|
||||||
"tags": {},
|
"tags": {},
|
||||||
|
"tags_all": {},
|
||||||
"versioning": [
|
"versioning": [
|
||||||
{
|
{
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
@@ -627,6 +803,7 @@
|
|||||||
"website_domain": null,
|
"website_domain": null,
|
||||||
"website_endpoint": null
|
"website_endpoint": null
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"data.aws_caller_identity.current"
|
"data.aws_caller_identity.current"
|
||||||
]
|
]
|
||||||
@@ -680,6 +857,7 @@
|
|||||||
"request_payer": "BucketOwner",
|
"request_payer": "BucketOwner",
|
||||||
"server_side_encryption_configuration": [],
|
"server_side_encryption_configuration": [],
|
||||||
"tags": {},
|
"tags": {},
|
||||||
|
"tags_all": {},
|
||||||
"versioning": [
|
"versioning": [
|
||||||
{
|
{
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
@@ -697,6 +875,7 @@
|
|||||||
"website_domain": "s3-website-us-east-1.amazonaws.com",
|
"website_domain": "s3-website-us-east-1.amazonaws.com",
|
||||||
"website_endpoint": "staging3.app.integreatconsult.com.s3-website-us-east-1.amazonaws.com"
|
"website_endpoint": "staging3.app.integreatconsult.com.s3-website-us-east-1.amazonaws.com"
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "bnVsbA=="
|
"private": "bnVsbA=="
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -726,6 +905,7 @@
|
|||||||
],
|
],
|
||||||
"topic": []
|
"topic": []
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"aws_s3_bucket.invoices",
|
"aws_s3_bucket.invoices",
|
||||||
"aws_sqs_queue.integreat-mail",
|
"aws_sqs_queue.integreat-mail",
|
||||||
@@ -734,6 +914,88 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"mode": "managed",
|
||||||
|
"type": "aws_service_discovery_service",
|
||||||
|
"name": "background_worker_service",
|
||||||
|
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"schema_version": 0,
|
||||||
|
"attributes": {
|
||||||
|
"arn": "arn:aws:servicediscovery:us-east-1:679918342773:service/srv-4cuqgdwqo5acwqtq",
|
||||||
|
"description": "",
|
||||||
|
"dns_config": [
|
||||||
|
{
|
||||||
|
"dns_records": [
|
||||||
|
{
|
||||||
|
"ttl": 10,
|
||||||
|
"type": "A"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"namespace_id": "ns-gv2z744em7myo2jp",
|
||||||
|
"routing_policy": "MULTIVALUE"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"force_destroy": false,
|
||||||
|
"health_check_config": [],
|
||||||
|
"health_check_custom_config": [
|
||||||
|
{
|
||||||
|
"failure_threshold": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"id": "srv-4cuqgdwqo5acwqtq",
|
||||||
|
"name": "integreat-background-worker-staging",
|
||||||
|
"namespace_id": "ns-gv2z744em7myo2jp",
|
||||||
|
"tags": null,
|
||||||
|
"tags_all": {}
|
||||||
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
|
"private": "bnVsbA=="
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mode": "managed",
|
||||||
|
"type": "aws_service_discovery_service",
|
||||||
|
"name": "service",
|
||||||
|
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"schema_version": 0,
|
||||||
|
"attributes": {
|
||||||
|
"arn": "arn:aws:servicediscovery:us-east-1:679918342773:service/srv-nsn252bfk4r6bzpj",
|
||||||
|
"description": "",
|
||||||
|
"dns_config": [
|
||||||
|
{
|
||||||
|
"dns_records": [
|
||||||
|
{
|
||||||
|
"ttl": 10,
|
||||||
|
"type": "A"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"namespace_id": "ns-gv2z744em7myo2jp",
|
||||||
|
"routing_policy": "MULTIVALUE"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"force_destroy": false,
|
||||||
|
"health_check_config": [],
|
||||||
|
"health_check_custom_config": [
|
||||||
|
{
|
||||||
|
"failure_threshold": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"id": "srv-nsn252bfk4r6bzpj",
|
||||||
|
"name": "integreat-app-staging",
|
||||||
|
"namespace_id": "ns-gv2z744em7myo2jp",
|
||||||
|
"tags": null,
|
||||||
|
"tags_all": {}
|
||||||
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
|
"private": "bnVsbA=="
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"mode": "managed",
|
"mode": "managed",
|
||||||
"type": "aws_ses_receipt_rule",
|
"type": "aws_ses_receipt_rule",
|
||||||
@@ -745,6 +1007,7 @@
|
|||||||
"attributes": {
|
"attributes": {
|
||||||
"add_header_action": [],
|
"add_header_action": [],
|
||||||
"after": null,
|
"after": null,
|
||||||
|
"arn": "arn:aws:ses:us-east-1:679918342773:receipt-rule-set/default-rule-set:receipt-rule/store-staging",
|
||||||
"bounce_action": [],
|
"bounce_action": [],
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"id": "store-staging",
|
"id": "store-staging",
|
||||||
@@ -769,6 +1032,7 @@
|
|||||||
"tls_policy": "Optional",
|
"tls_policy": "Optional",
|
||||||
"workmail_action": []
|
"workmail_action": []
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"aws_s3_bucket.invoices",
|
"aws_s3_bucket.invoices",
|
||||||
"aws_ses_receipt_rule_set.main",
|
"aws_ses_receipt_rule_set.main",
|
||||||
@@ -786,9 +1050,47 @@
|
|||||||
{
|
{
|
||||||
"schema_version": 0,
|
"schema_version": 0,
|
||||||
"attributes": {
|
"attributes": {
|
||||||
|
"arn": "arn:aws:ses:us-east-1:679918342773:receipt-rule-set/default-rule-set",
|
||||||
"id": "default-rule-set",
|
"id": "default-rule-set",
|
||||||
"rule_set_name": "default-rule-set"
|
"rule_set_name": "default-rule-set"
|
||||||
}
|
},
|
||||||
|
"sensitive_attributes": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mode": "managed",
|
||||||
|
"type": "aws_sqs_queue",
|
||||||
|
"name": "background-request",
|
||||||
|
"provider": "provider[\"registry.terraform.io/hashicorp/aws\"]",
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"schema_version": 0,
|
||||||
|
"attributes": {
|
||||||
|
"arn": "arn:aws:sqs:us-east-1:679918342773:integreat-background-request-staging",
|
||||||
|
"content_based_deduplication": false,
|
||||||
|
"deduplication_scope": "",
|
||||||
|
"delay_seconds": 0,
|
||||||
|
"fifo_queue": false,
|
||||||
|
"fifo_throughput_limit": "",
|
||||||
|
"id": "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-background-request-staging",
|
||||||
|
"kms_data_key_reuse_period_seconds": 300,
|
||||||
|
"kms_master_key_id": "",
|
||||||
|
"max_message_size": 262144,
|
||||||
|
"message_retention_seconds": 345600,
|
||||||
|
"name": "integreat-background-request-staging",
|
||||||
|
"name_prefix": "",
|
||||||
|
"policy": "{\"Statement\":[{\"Action\":\"sqs:*\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::679918342773:role/datomic-ddb\"},\"Resource\":\"arn:aws:sqs:*:*:integreat-background-request-staging\"}],\"Version\":\"2012-10-17\"}",
|
||||||
|
"receive_wait_time_seconds": 0,
|
||||||
|
"redrive_policy": "",
|
||||||
|
"sqs_managed_sse_enabled": false,
|
||||||
|
"tags": null,
|
||||||
|
"tags_all": {},
|
||||||
|
"url": "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-background-request-staging",
|
||||||
|
"visibility_timeout_seconds": 30
|
||||||
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
|
"private": "bnVsbA=="
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -803,21 +1105,27 @@
|
|||||||
"attributes": {
|
"attributes": {
|
||||||
"arn": "arn:aws:sqs:us-east-1:679918342773:integreat-mail-staging",
|
"arn": "arn:aws:sqs:us-east-1:679918342773:integreat-mail-staging",
|
||||||
"content_based_deduplication": false,
|
"content_based_deduplication": false,
|
||||||
|
"deduplication_scope": "",
|
||||||
"delay_seconds": 0,
|
"delay_seconds": 0,
|
||||||
"fifo_queue": false,
|
"fifo_queue": false,
|
||||||
|
"fifo_throughput_limit": "",
|
||||||
"id": "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-mail-staging",
|
"id": "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-mail-staging",
|
||||||
"kms_data_key_reuse_period_seconds": 300,
|
"kms_data_key_reuse_period_seconds": 300,
|
||||||
"kms_master_key_id": "",
|
"kms_master_key_id": "",
|
||||||
"max_message_size": 262144,
|
"max_message_size": 262144,
|
||||||
"message_retention_seconds": 345600,
|
"message_retention_seconds": 345600,
|
||||||
"name": "integreat-mail-staging",
|
"name": "integreat-mail-staging",
|
||||||
"name_prefix": null,
|
"name_prefix": "",
|
||||||
"policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"sqs:SendMessage\",\"Resource\":\"arn:aws:sqs:*:*:integreat-mail-staging\",\"Condition\":{\"ArnEquals\":{\"aws:SourceArn\":\"arn:aws:s3:::integreat-mail-staging\"}}}]}",
|
"policy": "{\"Statement\":[{\"Action\":\"sqs:SendMessage\",\"Condition\":{\"ArnEquals\":{\"aws:SourceArn\":\"arn:aws:s3:::integreat-mail-staging\"}},\"Effect\":\"Allow\",\"Principal\":\"*\",\"Resource\":\"arn:aws:sqs:*:*:integreat-mail-staging\"}],\"Version\":\"2012-10-17\"}",
|
||||||
"receive_wait_time_seconds": 0,
|
"receive_wait_time_seconds": 0,
|
||||||
"redrive_policy": "",
|
"redrive_policy": "",
|
||||||
|
"sqs_managed_sse_enabled": false,
|
||||||
"tags": {},
|
"tags": {},
|
||||||
|
"tags_all": {},
|
||||||
|
"url": "https://sqs.us-east-1.amazonaws.com/679918342773/integreat-mail-staging",
|
||||||
"visibility_timeout_seconds": 30
|
"visibility_timeout_seconds": 30
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"aws_s3_bucket.invoices",
|
"aws_s3_bucket.invoices",
|
||||||
"data.aws_caller_identity.current"
|
"data.aws_caller_identity.current"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"version": 4,
|
"version": 4,
|
||||||
"terraform_version": "0.13.3",
|
"terraform_version": "0.14.4",
|
||||||
"serial": 68,
|
"serial": 70,
|
||||||
"lineage": "91d10fe0-8033-8778-c202-78d5a81632e8",
|
"lineage": "91d10fe0-8033-8778-c202-78d5a81632e8",
|
||||||
"outputs": {
|
"outputs": {
|
||||||
"aws_access_key_id": {
|
"aws_access_key_id": {
|
||||||
@@ -33,9 +33,10 @@
|
|||||||
"attributes": {
|
"attributes": {
|
||||||
"account_id": "679918342773",
|
"account_id": "679918342773",
|
||||||
"arn": "arn:aws:iam::679918342773:user/bryce",
|
"arn": "arn:aws:iam::679918342773:user/bryce",
|
||||||
"id": "2020-09-25 00:18:59.261808 +0000 UTC",
|
"id": "2020-09-25 00:21:01.39516 +0000 UTC",
|
||||||
"user_id": "AIDAJPUJFTOKO4IRADMV4"
|
"user_id": "AIDAJPUJFTOKO4IRADMV4"
|
||||||
}
|
},
|
||||||
|
"sensitive_attributes": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -74,6 +75,7 @@
|
|||||||
"validation_emails": [],
|
"validation_emails": [],
|
||||||
"validation_method": "DNS"
|
"validation_method": "DNS"
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjAifQ=="
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjAifQ=="
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -145,6 +147,7 @@
|
|||||||
"delete": null
|
"delete": null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjoxMjAwMDAwMDAwMDAwfX0=",
|
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiZGVsZXRlIjoxMjAwMDAwMDAwMDAwfX0=",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"aws_ecs_task_definition.integreat_app",
|
"aws_ecs_task_definition.integreat_app",
|
||||||
@@ -183,6 +186,7 @@
|
|||||||
"task_role_arn": "arn:aws:iam::679918342773:role/datomic-ddb",
|
"task_role_arn": "arn:aws:iam::679918342773:role/datomic-ddb",
|
||||||
"volume": []
|
"volume": []
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ=="
|
"private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ=="
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -205,6 +209,7 @@
|
|||||||
"status": "Active",
|
"status": "Active",
|
||||||
"user": "integreat-staging"
|
"user": "integreat-staging"
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"aws_iam_user.app_user"
|
"aws_iam_user.app_user"
|
||||||
]
|
]
|
||||||
@@ -228,7 +233,8 @@
|
|||||||
"permissions_boundary": null,
|
"permissions_boundary": null,
|
||||||
"tags": {},
|
"tags": {},
|
||||||
"unique_id": "AIDAJ4KJ7STJZNLIN3M6S"
|
"unique_id": "AIDAJ4KJ7STJZNLIN3M6S"
|
||||||
}
|
},
|
||||||
|
"sensitive_attributes": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -245,6 +251,7 @@
|
|||||||
"policy_arn": "arn:aws:iam::aws:policy/AdministratorAccess",
|
"policy_arn": "arn:aws:iam::aws:policy/AdministratorAccess",
|
||||||
"user": "integreat-staging"
|
"user": "integreat-staging"
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"aws_iam_user.app_user"
|
"aws_iam_user.app_user"
|
||||||
]
|
]
|
||||||
@@ -329,6 +336,7 @@
|
|||||||
"vpc_id": "vpc-b5b7d6ce",
|
"vpc_id": "vpc-b5b7d6ce",
|
||||||
"zone_id": "Z35SXDOTRQ7X7K"
|
"zone_id": "Z35SXDOTRQ7X7K"
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19"
|
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6NjAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH19"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -374,6 +382,7 @@
|
|||||||
"read": null
|
"read": null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsicmVhZCI6NjAwMDAwMDAwMDAwfX0=",
|
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsicmVhZCI6NjAwMDAwMDAwMDAwfX0=",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"aws_lb.integreat_app"
|
"aws_lb.integreat_app"
|
||||||
@@ -413,6 +422,7 @@
|
|||||||
"read": null
|
"read": null
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsicmVhZCI6NjAwMDAwMDAwMDAwfX0=",
|
"private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsicmVhZCI6NjAwMDAwMDAwMDAwfX0=",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"aws_acm_certificate.cert",
|
"aws_acm_certificate.cert",
|
||||||
@@ -477,6 +487,7 @@
|
|||||||
"listener_arn": "arn:aws:elasticloadbalancing:us-east-1:679918342773:listener/app/integreat-app-staging/dc040205e561419e/b89075bc6a559a4f",
|
"listener_arn": "arn:aws:elasticloadbalancing:us-east-1:679918342773:listener/app/integreat-app-staging/dc040205e561419e/b89075bc6a559a4f",
|
||||||
"priority": 1
|
"priority": 1
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "bnVsbA==",
|
"private": "bnVsbA==",
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"aws_acm_certificate.cert",
|
"aws_acm_certificate.cert",
|
||||||
@@ -532,6 +543,7 @@
|
|||||||
"target_type": "ip",
|
"target_type": "ip",
|
||||||
"vpc_id": "vpc-b5b7d6ce"
|
"vpc_id": "vpc-b5b7d6ce"
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "bnVsbA=="
|
"private": "bnVsbA=="
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -583,6 +595,7 @@
|
|||||||
"website_domain": "s3-website-us-east-1.amazonaws.com",
|
"website_domain": "s3-website-us-east-1.amazonaws.com",
|
||||||
"website_endpoint": "data.staging.app.integreatconsult.com.s3-website-us-east-1.amazonaws.com"
|
"website_endpoint": "data.staging.app.integreatconsult.com.s3-website-us-east-1.amazonaws.com"
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "bnVsbA=="
|
"private": "bnVsbA=="
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -627,6 +640,7 @@
|
|||||||
"website_domain": null,
|
"website_domain": null,
|
||||||
"website_endpoint": null
|
"website_endpoint": null
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"data.aws_caller_identity.current"
|
"data.aws_caller_identity.current"
|
||||||
]
|
]
|
||||||
@@ -674,7 +688,7 @@
|
|||||||
"lifecycle_rule": [],
|
"lifecycle_rule": [],
|
||||||
"logging": [],
|
"logging": [],
|
||||||
"object_lock_configuration": [],
|
"object_lock_configuration": [],
|
||||||
"policy": "{\n \"Id\": \"Policy1526084187222\",\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"Stmt1526084185514\",\n \"Action\": [\n \"s3:GetObject\"\n ],\n \"Effect\": \"Allow\",\n \"Resource\": \"arn:aws:s3:::staging.app.integreatconsult.com/*\",\n \"Principal\": \"*\"\n }\n ]\n}\n",
|
"policy": "{\"Id\":\"Policy1526084187222\",\"Statement\":[{\"Action\":\"s3:GetObject\",\"Effect\":\"Allow\",\"Principal\":\"*\",\"Resource\":\"arn:aws:s3:::staging3.app.integreatconsult.com/*\",\"Sid\":\"Stmt1526084185514\"}],\"Version\":\"2012-10-17\"}",
|
||||||
"region": "us-east-1",
|
"region": "us-east-1",
|
||||||
"replication_configuration": [],
|
"replication_configuration": [],
|
||||||
"request_payer": "BucketOwner",
|
"request_payer": "BucketOwner",
|
||||||
@@ -697,6 +711,7 @@
|
|||||||
"website_domain": "s3-website-us-east-1.amazonaws.com",
|
"website_domain": "s3-website-us-east-1.amazonaws.com",
|
||||||
"website_endpoint": "staging3.app.integreatconsult.com.s3-website-us-east-1.amazonaws.com"
|
"website_endpoint": "staging3.app.integreatconsult.com.s3-website-us-east-1.amazonaws.com"
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"private": "bnVsbA=="
|
"private": "bnVsbA=="
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -726,6 +741,7 @@
|
|||||||
],
|
],
|
||||||
"topic": []
|
"topic": []
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"aws_s3_bucket.invoices",
|
"aws_s3_bucket.invoices",
|
||||||
"aws_sqs_queue.integreat-mail",
|
"aws_sqs_queue.integreat-mail",
|
||||||
@@ -769,6 +785,7 @@
|
|||||||
"tls_policy": "Optional",
|
"tls_policy": "Optional",
|
||||||
"workmail_action": []
|
"workmail_action": []
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"aws_s3_bucket.invoices",
|
"aws_s3_bucket.invoices",
|
||||||
"aws_ses_receipt_rule_set.main",
|
"aws_ses_receipt_rule_set.main",
|
||||||
@@ -788,7 +805,8 @@
|
|||||||
"attributes": {
|
"attributes": {
|
||||||
"id": "default-rule-set",
|
"id": "default-rule-set",
|
||||||
"rule_set_name": "default-rule-set"
|
"rule_set_name": "default-rule-set"
|
||||||
}
|
},
|
||||||
|
"sensitive_attributes": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -818,6 +836,7 @@
|
|||||||
"tags": {},
|
"tags": {},
|
||||||
"visibility_timeout_seconds": 30
|
"visibility_timeout_seconds": 30
|
||||||
},
|
},
|
||||||
|
"sensitive_attributes": [],
|
||||||
"dependencies": [
|
"dependencies": [
|
||||||
"aws_s3_bucket.invoices",
|
"aws_s3_bucket.invoices",
|
||||||
"data.aws_caller_identity.current"
|
"data.aws_caller_identity.current"
|
||||||
|
|||||||
@@ -1,52 +0,0 @@
|
|||||||
(ns auto-ap.functional.test
|
|
||||||
(:require [clojure.test :as t :refer :all]
|
|
||||||
[etaoin.api :as e]
|
|
||||||
[etaoin.keys :as k]
|
|
||||||
[config.core :refer [env]]
|
|
||||||
[clj-time.core :as time]
|
|
||||||
[buddy.sign.jwt :as jwt]))
|
|
||||||
|
|
||||||
(def base-url "https://staging3.app.integreatconsult.com")
|
|
||||||
(defn login-admin [driver]
|
|
||||||
(let [jwt-token (jwt/sign {:user "Automated Tests"
|
|
||||||
:exp (time/plus (time/now) (time/days 30))
|
|
||||||
:user/role "admin"
|
|
||||||
:user/name "Automated Tests"}
|
|
||||||
(:jwt-secret env)
|
|
||||||
{:alg :hs512})]
|
|
||||||
(e/go driver (str base-url "/?jwt=" jwt-token))
|
|
||||||
(e/wait-visible driver {:tag :h1
|
|
||||||
:class "title"})))
|
|
||||||
|
|
||||||
(deftest create-invoice
|
|
||||||
(testing "Creating a new invoice"
|
|
||||||
(e/with-wait-timeout 10
|
|
||||||
(e/with-firefox {} driver
|
|
||||||
(login-admin driver)
|
|
||||||
(e/click driver {:tag :a :fn/text "Invoices"})
|
|
||||||
(e/wait-visible driver {:tag :h1
|
|
||||||
:class "title"
|
|
||||||
:fn/text "Unpaid Invoices"})))))
|
|
||||||
|
|
||||||
|
|
||||||
(deftest edit-client
|
|
||||||
(testing "Editing a client"
|
|
||||||
(e/with-wait-timeout 10
|
|
||||||
(e/with-firefox {} driver
|
|
||||||
(login-admin driver)
|
|
||||||
|
|
||||||
(e/click driver {:tag :a :class "navbar-link login"})
|
|
||||||
(e/click driver {:tag :a :fn/text "Administration"})
|
|
||||||
|
|
||||||
(e/wait-visible driver {:tag :h1
|
|
||||||
:class "title"
|
|
||||||
:fn/text "Admin"})
|
|
||||||
(e/click driver {:tag :span :fn/text "Clients"})
|
|
||||||
(e/wait-visible driver {:tag :h1
|
|
||||||
:class "title"
|
|
||||||
:fn/text "Clients"})
|
|
||||||
(e/click driver {:tag :i :class "fa fa-pencil"})
|
|
||||||
(e/wait-visible driver {:tag :button
|
|
||||||
:fn/text "Save"})
|
|
||||||
(e/click driver {:tag :button :fn/text "Save"})
|
|
||||||
(e/wait-invisible driver {:tag :form})))))
|
|
||||||
@@ -83,7 +83,10 @@
|
|||||||
result (sut/transaction->txs base-transaction
|
result (sut/transaction->txs base-transaction
|
||||||
(d/entity (d/db conn) bank-account-id)
|
(d/entity (d/db conn) bank-account-id)
|
||||||
noop-rule)]
|
noop-rule)]
|
||||||
(t/is (= [(assoc base-transaction :transaction/approval-status :transaction-approval-status/unapproved)]
|
(t/is (= [(assoc base-transaction
|
||||||
|
:transaction/approval-status :transaction-approval-status/unapproved
|
||||||
|
:transaction/bank-account bank-account-id
|
||||||
|
:transaction/client client-id)]
|
||||||
result))))
|
result))))
|
||||||
|
|
||||||
(t/testing "Should match an uncleared check"
|
(t/testing "Should match an uncleared check"
|
||||||
@@ -113,6 +116,18 @@
|
|||||||
:payment/status :payment-status/cleared}
|
:payment/status :payment-status/cleared}
|
||||||
(:transaction/payment transaction-result))))
|
(:transaction/payment transaction-result))))
|
||||||
|
|
||||||
|
|
||||||
|
(t/testing "Should match a check that matches on amount if check number does not match"
|
||||||
|
(let [[transaction-result] (sut/transaction->txs (assoc base-transaction
|
||||||
|
:transaction/description-original "CHECK 12301"
|
||||||
|
:transaction/amount -30.0)
|
||||||
|
(d/entity (d/db conn ) bank-account-id)
|
||||||
|
noop-rule)]
|
||||||
|
|
||||||
|
(t/is (= {:db/id payment-id
|
||||||
|
:payment/status :payment-status/cleared}
|
||||||
|
(:transaction/payment transaction-result)))))
|
||||||
|
|
||||||
(t/testing "Should not match an already matched check"
|
(t/testing "Should not match an already matched check"
|
||||||
@(d/transact (d/connect uri) [{:db/id payment-id :payment/status :payment-status/cleared}])
|
@(d/transact (d/connect uri) [{:db/id payment-id :payment/status :payment-status/cleared}])
|
||||||
(let [[result] (sut/transaction->txs (assoc base-transaction
|
(let [[result] (sut/transaction->txs (assoc base-transaction
|
||||||
@@ -156,6 +171,17 @@
|
|||||||
:expected-deposit/status :expected-deposit-status/cleared}
|
:expected-deposit/status :expected-deposit-status/cleared}
|
||||||
(:transaction/expected-deposit transaction-result)))))
|
(:transaction/expected-deposit transaction-result)))))
|
||||||
|
|
||||||
|
(t/testing "Should credit CCP"
|
||||||
|
(let [[transaction-result] (sut/transaction->txs (assoc base-transaction
|
||||||
|
:transaction/date #inst "2021-07-03T00:00:00-08:00"
|
||||||
|
:transaction/amount 100.0)
|
||||||
|
(d/entity (d/db conn) bank-account-id)
|
||||||
|
noop-rule)]
|
||||||
|
(t/is (= [{:transaction-account/account :account/ccp
|
||||||
|
:transaction-account/amount 100.0
|
||||||
|
:transaction-account/location "A"}]
|
||||||
|
(:transaction/accounts transaction-result)))))
|
||||||
|
|
||||||
(t/testing "Should not match old expected deposits"
|
(t/testing "Should not match old expected deposits"
|
||||||
(let [[transaction-result] (sut/transaction->txs (assoc base-transaction
|
(let [[transaction-result] (sut/transaction->txs (assoc base-transaction
|
||||||
:transaction/date #inst "2021-07-13"
|
:transaction/date #inst "2021-07-13"
|
||||||
|
|||||||
@@ -39,11 +39,13 @@
|
|||||||
|
|
||||||
(defn new-transaction [args]
|
(defn new-transaction [args]
|
||||||
(merge {:transaction/amount 100.0
|
(merge {:transaction/amount 100.0
|
||||||
|
:transaction/date #inst "2021-01-01"
|
||||||
:transaction/id (.toString (java.util.UUID/randomUUID))}
|
:transaction/id (.toString (java.util.UUID/randomUUID))}
|
||||||
args))
|
args))
|
||||||
|
|
||||||
(defn new-invoice [args]
|
(defn new-invoice [args]
|
||||||
(merge {:invoice/total 100.0
|
(merge {:invoice/total 100.0
|
||||||
|
:invoice/date #inst "2021-01-01"
|
||||||
:invoice/invoice-number (.toString (java.util.UUID/randomUUID))}
|
:invoice/invoice-number (.toString (java.util.UUID/randomUUID))}
|
||||||
args))
|
args))
|
||||||
|
|
||||||
@@ -88,7 +90,7 @@
|
|||||||
(deftest ledger-page
|
(deftest ledger-page
|
||||||
(testing "ledger"
|
(testing "ledger"
|
||||||
(testing "it should find ledger entries"
|
(testing "it should find ledger entries"
|
||||||
(let [result (:ledger-page (:data (sut/query (admin-token) "{ ledger_page(client_id: null) { count, start, journal_entries { id } }}")))]
|
(let [result (:ledger-page (:data (sut/query (admin-token) "{ ledger_page(filters: {client_id: null}) { count, start, journal_entries { id } }}")))]
|
||||||
(is (int? (:count result)))
|
(is (int? (:count result)))
|
||||||
(is (int? (:start result)))
|
(is (int? (:start result)))
|
||||||
(is (seqable? (:journal-entries result)))))))
|
(is (seqable? (:journal-entries result)))))))
|
||||||
@@ -97,7 +99,7 @@
|
|||||||
(deftest vendors
|
(deftest vendors
|
||||||
(testing "vendors"
|
(testing "vendors"
|
||||||
(testing "it should find vendors"
|
(testing "it should find vendors"
|
||||||
(let [result (:ledger-page (:data (sut/query (admin-token) "{ ledger_page(client_id: null) { count, start, journal_entries { id } }}")))]
|
(let [result (:ledger-page (:data (sut/query (admin-token) "{ ledger_page(filters: {client_id: null}) { count, start, journal_entries { id } }}")))]
|
||||||
(is (int? (:count result)))
|
(is (int? (:count result)))
|
||||||
(is (int? (:start result)))
|
(is (int? (:start result)))
|
||||||
(is (seqable? (:journal-entries result)))))))
|
(is (seqable? (:journal-entries result)))))))
|
||||||
@@ -128,7 +130,7 @@
|
|||||||
:venia/queries [{:query/data (sut/->graphql [:upsert-transaction-rule
|
:venia/queries [{:query/data (sut/->graphql [:upsert-transaction-rule
|
||||||
{:transaction-rule {:accounts [{:account-id account-id
|
{:transaction-rule {:accounts [{:account-id account-id
|
||||||
:percentage "0.25"
|
:percentage "0.25"
|
||||||
:location "B"}]}}
|
:location "Shared"}]}}
|
||||||
[:id ]])}]})]
|
[:id ]])}]})]
|
||||||
(is (thrown? clojure.lang.ExceptionInfo (sut/query (admin-token) q)))))
|
(is (thrown? clojure.lang.ExceptionInfo (sut/query (admin-token) q)))))
|
||||||
|
|
||||||
@@ -139,7 +141,7 @@
|
|||||||
:venia/queries [{:query/data (sut/->graphql [:upsert-transaction-rule
|
:venia/queries [{:query/data (sut/->graphql [:upsert-transaction-rule
|
||||||
{:transaction-rule {:accounts [{:account-id account-id
|
{:transaction-rule {:accounts [{:account-id account-id
|
||||||
:percentage "1.0"
|
:percentage "1.0"
|
||||||
:location "B"}]}}
|
:location "Shared"}]}}
|
||||||
[:id ]])}]})]
|
[:id ]])}]})]
|
||||||
(is (thrown? clojure.lang.ExceptionInfo (sut/query (admin-token) q)))))
|
(is (thrown? clojure.lang.ExceptionInfo (sut/query (admin-token) q)))))
|
||||||
(testing "it should add rules"
|
(testing "it should add rules"
|
||||||
@@ -152,10 +154,10 @@
|
|||||||
:transaction-approval-status :approved
|
:transaction-approval-status :approved
|
||||||
:accounts [{:account-id account-id
|
:accounts [{:account-id account-id
|
||||||
:percentage "0.5"
|
:percentage "0.5"
|
||||||
:location "B"}
|
:location "Shared"}
|
||||||
{:account-id account-id
|
{:account-id account-id
|
||||||
:percentage "0.5"
|
:percentage "0.5"
|
||||||
:location "A"}]}}
|
:location "Shared"}]}}
|
||||||
[:id :description
|
[:id :description
|
||||||
:transaction-approval-status
|
:transaction-approval-status
|
||||||
[:vendor [:name]]
|
[:vendor [:name]]
|
||||||
@@ -182,7 +184,7 @@
|
|||||||
:accounts [{:id (-> result :accounts (get 0) :id)
|
:accounts [{:id (-> result :accounts (get 0) :id)
|
||||||
:account-id account-id
|
:account-id account-id
|
||||||
:percentage "1.0"
|
:percentage "1.0"
|
||||||
:location "B"}]}}
|
:location "Shared"}]}}
|
||||||
[[:vendor [:name]]]])}]})
|
[[:vendor [:name]]]])}]})
|
||||||
result (-> (sut/query (admin-token) q)
|
result (-> (sut/query (admin-token) q)
|
||||||
:data
|
:data
|
||||||
@@ -200,7 +202,7 @@
|
|||||||
:accounts [{:id (-> result :accounts (get 0) :id)
|
:accounts [{:id (-> result :accounts (get 0) :id)
|
||||||
:account-id account-id
|
:account-id account-id
|
||||||
:percentage "1.0"
|
:percentage "1.0"
|
||||||
:location "B"}]}}
|
:location "Shared"}]}}
|
||||||
[[:accounts [:id :percentage [:account [:name]]]]]])}]})
|
[[:accounts [:id :percentage [:account [:name]]]]]])}]})
|
||||||
result (-> (sut/query (admin-token) q)
|
result (-> (sut/query (admin-token) q)
|
||||||
:data
|
:data
|
||||||
@@ -208,22 +210,6 @@
|
|||||||
|
|
||||||
(is (= 1 (count (:accounts result))))))))))
|
(is (= 1 (count (:accounts result))))))))))
|
||||||
|
|
||||||
(deftest test-get-yodlee-merchants
|
|
||||||
(testing "it should find yodlee merchants"
|
|
||||||
@(d/transact (d/connect uri)
|
|
||||||
[{:yodlee-merchant/name "Merchant 1"
|
|
||||||
:yodlee-merchant/yodlee-id "123"}
|
|
||||||
{:yodlee-merchant/name "Merchant 2"
|
|
||||||
:yodlee-merchant/yodlee-id "456"}])
|
|
||||||
|
|
||||||
(is (= [{:name "Merchant 1" :yodlee-id "123"} {:name "Merchant 2" :yodlee-id "456"}]
|
|
||||||
(-> (sut/query (admin-token) (v/graphql-query {:venia/operation {:operation/type :query
|
|
||||||
:operation/name "GetYodleeMerchants"}
|
|
||||||
:venia/queries [{:query/data (sut/->graphql [:yodlee-merchants
|
|
||||||
[:yodlee-id :name]])}]}))
|
|
||||||
:data
|
|
||||||
:yodlee-merchants)))))
|
|
||||||
|
|
||||||
|
|
||||||
(deftest test-transaction-rule
|
(deftest test-transaction-rule
|
||||||
(testing "it should match rules"
|
(testing "it should match rules"
|
||||||
@@ -236,7 +222,8 @@
|
|||||||
:bank-account/name "1"}
|
:bank-account/name "1"}
|
||||||
|
|
||||||
:transaction/amount 1.00
|
:transaction/amount 1.00
|
||||||
:transaction/id "2019-01-05 matching-desc 1"}
|
:transaction/id "2019-01-05 matching-desc 1"
|
||||||
|
:db/id "a"}
|
||||||
|
|
||||||
{:transaction/description-original "nonmatching-desc"
|
{:transaction/description-original "nonmatching-desc"
|
||||||
:transaction/client {:client/name "2"
|
:transaction/client {:client/name "2"
|
||||||
@@ -245,8 +232,11 @@
|
|||||||
:bank-account/name "2"}
|
:bank-account/name "2"}
|
||||||
:transaction/date #inst "2019-01-15T23:23:00.000-08:00"
|
:transaction/date #inst "2019-01-15T23:23:00.000-08:00"
|
||||||
:transaction/amount 2.00
|
:transaction/amount 2.00
|
||||||
:transaction/id "2019-01-15 nonmatching-desc 2"}])
|
:transaction/id "2019-01-15 nonmatching-desc 2"
|
||||||
{:strs [client-1 client-2 bank-account-1 bank-account-2]} (get-in matching-transaction [:tempids])
|
:db/id "b"}])
|
||||||
|
{:strs [a b client-1 client-2 bank-account-1 bank-account-2]} (get-in matching-transaction [:tempids])
|
||||||
|
a (str a)
|
||||||
|
b (str b)
|
||||||
|
|
||||||
rule-test (fn [rule]
|
rule-test (fn [rule]
|
||||||
(-> (sut/query (admin-token) (v/graphql-query {:venia/operation {:operation/type :query
|
(-> (sut/query (admin-token) (v/graphql-query {:venia/operation {:operation/type :query
|
||||||
@@ -257,27 +247,27 @@
|
|||||||
:data
|
:data
|
||||||
:test-transaction-rule))]
|
:test-transaction-rule))]
|
||||||
(testing "based on date "
|
(testing "based on date "
|
||||||
(is (= [{:id "2019-01-15 nonmatching-desc 2"}] (rule-test {:dom-gte 14 :dom-lte 16})))
|
(is (= [{:id b}] (rule-test {:dom-gte 14 :dom-lte 16})))
|
||||||
(is (= [{:id "2019-01-15 nonmatching-desc 2"}] (rule-test {:dom-gte 14})))
|
(is (= [{:id b}] (rule-test {:dom-gte 14})))
|
||||||
(is (= (set [{:id "2019-01-05 matching-desc 1"} {:id "2019-01-15 nonmatching-desc 2"}]) (set (rule-test {:dom-lte 15}))))
|
(is (= (set [{:id a} {:id b}]) (set (rule-test {:dom-lte 15}))))
|
||||||
(is (= [{:id "2019-01-15 nonmatching-desc 2"}] (rule-test {:dom-gte 15})))
|
(is (= [{:id b}] (rule-test {:dom-gte 15})))
|
||||||
(is (= [{:id "2019-01-15 nonmatching-desc 2"}] (rule-test {:dom-gte 15 :dom-lte 15}))))
|
(is (= [{:id b}] (rule-test {:dom-gte 15 :dom-lte 15}))))
|
||||||
|
|
||||||
(testing "based on description"
|
(testing "based on description"
|
||||||
(is (= [{:id "2019-01-05 matching-desc 1"}] (rule-test {:description "^match"}))))
|
(is (= [{:id a}] (rule-test {:description "^match"}))))
|
||||||
|
|
||||||
(testing "based on amount"
|
(testing "based on amount"
|
||||||
(is (= [{:id "2019-01-05 matching-desc 1"}] (rule-test {:amount-gte 1.0 :amount-lte 1.0})))
|
(is (= [{:id a}] (rule-test {:amount-gte 1.0 :amount-lte 1.0})))
|
||||||
(is (= (set [{:id "2019-01-05 matching-desc 1"} {:id "2019-01-15 nonmatching-desc 2"}]) (set (rule-test {:amount-gte 1.0 }))) )
|
(is (= (set [{:id a} {:id b}]) (set (rule-test {:amount-gte 1.0 }))) )
|
||||||
(is (= (set [{:id "2019-01-05 matching-desc 1"} {:id "2019-01-15 nonmatching-desc 2"}]) (set (rule-test {:amount-lte 2.0 }))) ))
|
(is (= (set [{:id a} {:id b}]) (set (rule-test {:amount-lte 2.0 }))) ))
|
||||||
|
|
||||||
(testing "based on client"
|
(testing "based on client"
|
||||||
(is (= [{:id "2019-01-05 matching-desc 1"}] (rule-test {:client-id client-1})))
|
(is (= [{:id a}] (rule-test {:client-id (str client-1)})))
|
||||||
(is (= [{:id "2019-01-15 nonmatching-desc 2"}] (rule-test {:client-id client-2}))))
|
(is (= [{:id b}] (rule-test {:client-id (str client-2)}))))
|
||||||
|
|
||||||
(testing "based on bank account"
|
(testing "based on bank account"
|
||||||
(is (= [{:id "2019-01-05 matching-desc 1"}] (rule-test {:bank-account-id bank-account-1})))
|
(is (= [{:id a}] (rule-test {:bank-account-id (str bank-account-1)})))
|
||||||
(is (= [{:id "2019-01-15 nonmatching-desc 2"}] (rule-test {:bank-account-id bank-account-2})))))))
|
(is (= [{:id b}] (rule-test {:bank-account-id (str bank-account-2)})))))))
|
||||||
|
|
||||||
(deftest test-match-transaction-rule
|
(deftest test-match-transaction-rule
|
||||||
(testing "it should apply a rules"
|
(testing "it should apply a rules"
|
||||||
|
|||||||
56
test/clj/auto_ap/ledger_test.clj
Normal file
56
test/clj/auto_ap/ledger_test.clj
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
(ns auto-ap.ledger-test
|
||||||
|
(:require [auto-ap.datomic :refer [conn uri]]
|
||||||
|
[auto-ap.datomic.migrate :as m]
|
||||||
|
[auto-ap.ledger :as sut]
|
||||||
|
[clojure.test :as t]
|
||||||
|
[datomic.api :as d]))
|
||||||
|
|
||||||
|
(defn wrap-setup
|
||||||
|
[f]
|
||||||
|
(with-redefs [auto-ap.datomic/uri "datomic:mem://datomic-transactor:4334/invoice"]
|
||||||
|
(d/create-database uri)
|
||||||
|
(with-redefs [auto-ap.datomic/conn (d/connect uri)]
|
||||||
|
(m/migrate auto-ap.datomic/conn)
|
||||||
|
(f)
|
||||||
|
(d/release auto-ap.datomic/conn)
|
||||||
|
(d/delete-database uri))))
|
||||||
|
|
||||||
|
(t/use-fixtures :each wrap-setup)
|
||||||
|
|
||||||
|
|
||||||
|
(t/deftest entity-change->ledger
|
||||||
|
(t/testing "Should code an expected deposit"
|
||||||
|
(let [{:strs [ed ccp receipts-split client]}
|
||||||
|
(:tempids @(d/transact conn [#:expected-deposit {:status :expected-deposit-status/pending
|
||||||
|
:client {:db/id "client"
|
||||||
|
:client/code "BRYCE"
|
||||||
|
:client/locations ["M"]}
|
||||||
|
:total 4.0
|
||||||
|
:fee 1.0
|
||||||
|
:date #inst "2021-01-01T00:00:00-08:00"
|
||||||
|
:location "M"
|
||||||
|
:db/id "ed"}]))
|
||||||
|
result (sut/entity-change->ledger (d/db conn) [:expected-deposit ed])]
|
||||||
|
(t/is (= #:journal-entry
|
||||||
|
{:source "expected-deposit"
|
||||||
|
:client {:db/id client}
|
||||||
|
:date #inst "2021-01-01T00:00:00-08:00"
|
||||||
|
:original-entity ed
|
||||||
|
:vendor :vendor/ccp-square
|
||||||
|
:amount 4.0
|
||||||
|
}
|
||||||
|
(dissoc result :journal-entry/line-items)))
|
||||||
|
|
||||||
|
(t/testing "should debit ccp"
|
||||||
|
(t/is (= [#:journal-entry-line
|
||||||
|
{:debit 4.0
|
||||||
|
:location "A"
|
||||||
|
:account :account/ccp}]
|
||||||
|
(filter :journal-entry-line/debit (:journal-entry/line-items result))))
|
||||||
|
)
|
||||||
|
(t/testing "should credit receipts split ccp"
|
||||||
|
(t/is (= [#:journal-entry-line
|
||||||
|
{:credit 4.0
|
||||||
|
:location "A"
|
||||||
|
:account :account/receipts-split}]
|
||||||
|
(filter :journal-entry-line/credit (:journal-entry/line-items result))))))))
|
||||||
Reference in New Issue
Block a user