From 290d4dbe007f26fc5e80ae8f02ddc9cd6da02881 Mon Sep 17 00:00:00 2001
From: Michal Zander <mzander@syncad.com>
Date: Mon, 31 Mar 2025 12:38:30 +0000
Subject: [PATCH] Add patterns for REST API

---
 tests/tavern/common.yaml                      |  9 +++++++
 .../block_hash.pat.json                       |  1 +
 .../block_hash.tavern.yaml                    | 21 +++++++++++++++
 .../get_reputation/blocktrades.pat.json       |  1 +
 .../get_reputation/blocktrades.tavern.yaml    | 23 ++++++++++++++++
 tests/tavern/get_reputation/gtg.pat.json      |  1 +
 tests/tavern/get_reputation/gtg.tavern.yaml   | 23 ++++++++++++++++
 .../non_existent_account.pat.json             |  6 +++++
 .../non_existent_account.tavern.yaml          | 26 +++++++++++++++++++
 tests/tavern/pytest.ini                       |  4 +++
 10 files changed, 115 insertions(+)
 create mode 100644 tests/tavern/common.yaml
 create mode 100644 tests/tavern/get_rep_last_synced_block/block_hash.pat.json
 create mode 100644 tests/tavern/get_rep_last_synced_block/block_hash.tavern.yaml
 create mode 100644 tests/tavern/get_reputation/blocktrades.pat.json
 create mode 100644 tests/tavern/get_reputation/blocktrades.tavern.yaml
 create mode 100644 tests/tavern/get_reputation/gtg.pat.json
 create mode 100644 tests/tavern/get_reputation/gtg.tavern.yaml
 create mode 100644 tests/tavern/get_reputation/non_existent_account.pat.json
 create mode 100644 tests/tavern/get_reputation/non_existent_account.tavern.yaml
 create mode 100644 tests/tavern/pytest.ini

diff --git a/tests/tavern/common.yaml b/tests/tavern/common.yaml
new file mode 100644
index 0000000..313a8be
--- /dev/null
+++ b/tests/tavern/common.yaml
@@ -0,0 +1,9 @@
+---
+  name: Common test values
+  description: Common values for tests
+
+  variables:
+    service:
+      proto: http
+      server: "{tavern.env_vars.REPTRACKER_ADDRESS}"
+      port: "{tavern.env_vars.REPTRACKER_PORT}"
diff --git a/tests/tavern/get_rep_last_synced_block/block_hash.pat.json b/tests/tavern/get_rep_last_synced_block/block_hash.pat.json
new file mode 100644
index 0000000..d4375a2
--- /dev/null
+++ b/tests/tavern/get_rep_last_synced_block/block_hash.pat.json
@@ -0,0 +1 @@
+5000000
\ No newline at end of file
diff --git a/tests/tavern/get_rep_last_synced_block/block_hash.tavern.yaml b/tests/tavern/get_rep_last_synced_block/block_hash.tavern.yaml
new file mode 100644
index 0000000..eb43d7e
--- /dev/null
+++ b/tests/tavern/get_rep_last_synced_block/block_hash.tavern.yaml
@@ -0,0 +1,21 @@
+---
+  test_name: reptracker PostgREST
+
+  marks:
+    - patterntest
+
+  includes:
+    - !include ../common.yaml
+
+  stages:
+    - name: test
+      request:
+        url: "{service.proto:s}://{service.server:s}:{service.port}/rpc/get_rep_last_synced_block"
+        method: POST  
+        headers:
+          content-type: application/json
+          accept: application/json  
+      response:
+        status_code: 200
+        verify_response_with:
+          function: validate_response:compare_rest_response_with_pattern
diff --git a/tests/tavern/get_reputation/blocktrades.pat.json b/tests/tavern/get_reputation/blocktrades.pat.json
new file mode 100644
index 0000000..8c0474e
--- /dev/null
+++ b/tests/tavern/get_reputation/blocktrades.pat.json
@@ -0,0 +1 @@
+69
\ No newline at end of file
diff --git a/tests/tavern/get_reputation/blocktrades.tavern.yaml b/tests/tavern/get_reputation/blocktrades.tavern.yaml
new file mode 100644
index 0000000..0315665
--- /dev/null
+++ b/tests/tavern/get_reputation/blocktrades.tavern.yaml
@@ -0,0 +1,23 @@
+---
+  test_name: reptracker PostgREST
+
+  marks:
+    - patterntest
+
+  includes:
+    - !include ../common.yaml
+
+  stages:
+    - name: test
+      request:
+        url: "{service.proto:s}://{service.server:s}:{service.port}/rpc/get_account_reputation"
+        method: POST  
+        headers:
+          content-type: application/json
+          accept: application/json  
+        json:
+          account-name: "blocktrades"
+      response:
+        status_code: 200
+        verify_response_with:
+          function: validate_response:compare_rest_response_with_pattern
\ No newline at end of file
diff --git a/tests/tavern/get_reputation/gtg.pat.json b/tests/tavern/get_reputation/gtg.pat.json
new file mode 100644
index 0000000..f0b5c72
--- /dev/null
+++ b/tests/tavern/get_reputation/gtg.pat.json
@@ -0,0 +1 @@
+57
\ No newline at end of file
diff --git a/tests/tavern/get_reputation/gtg.tavern.yaml b/tests/tavern/get_reputation/gtg.tavern.yaml
new file mode 100644
index 0000000..9383c2b
--- /dev/null
+++ b/tests/tavern/get_reputation/gtg.tavern.yaml
@@ -0,0 +1,23 @@
+---
+  test_name: reptracker PostgREST
+
+  marks:
+    - patterntest
+
+  includes:
+    - !include ../common.yaml
+
+  stages:
+    - name: test
+      request:
+        url: "{service.proto:s}://{service.server:s}:{service.port}/rpc/get_account_reputation"
+        method: POST  
+        headers:
+          content-type: application/json
+          accept: application/json  
+        json:
+          account-name: "gtg"
+      response:
+        status_code: 200
+        verify_response_with:
+          function: validate_response:compare_rest_response_with_pattern
\ No newline at end of file
diff --git a/tests/tavern/get_reputation/non_existent_account.pat.json b/tests/tavern/get_reputation/non_existent_account.pat.json
new file mode 100644
index 0000000..fe05f12
--- /dev/null
+++ b/tests/tavern/get_reputation/non_existent_account.pat.json
@@ -0,0 +1,6 @@
+{
+    "code": "P0001",
+    "details": null,
+    "hint": null,
+    "message": "Account 'themarkymark' does not exist"
+}
\ No newline at end of file
diff --git a/tests/tavern/get_reputation/non_existent_account.tavern.yaml b/tests/tavern/get_reputation/non_existent_account.tavern.yaml
new file mode 100644
index 0000000..b2a154b
--- /dev/null
+++ b/tests/tavern/get_reputation/non_existent_account.tavern.yaml
@@ -0,0 +1,26 @@
+---
+  test_name: reptracker PostgREST
+
+  marks:
+    - patterntest
+    - negative
+
+  includes:
+    - !include ../common.yaml
+
+  stages:
+    - name: test
+      request:
+        url: "{service.proto:s}://{service.server:s}:{service.port}/rpc/get_account_reputation"
+        method: POST  
+        headers:
+          content-type: application/json
+          accept: application/json  
+        json:
+          account-name: "themarkymark"
+      response:
+        status_code: 400
+        verify_response_with:
+          function: validate_response:compare_rest_response_with_pattern
+          extra_kwargs:
+            error_response: true
diff --git a/tests/tavern/pytest.ini b/tests/tavern/pytest.ini
new file mode 100644
index 0000000..6bdcaf0
--- /dev/null
+++ b/tests/tavern/pytest.ini
@@ -0,0 +1,4 @@
+[pytest]
+markers = 
+	patterntest: Mark tests using patterns to compare results
+	negative: Mark error tests
-- 
GitLab