diff --git a/backend/app/models/script_template.py b/backend/app/models/script_template.py index 8a60fd1d..0ea71ea8 100644 --- a/backend/app/models/script_template.py +++ b/backend/app/models/script_template.py @@ -56,22 +56,22 @@ class ScriptTemplate(Base): String(30), nullable=True, default="powershell", comment="Script language: powershell, bash, python", ) - parameters_schema: Mapped[dict] = mapped_column(JSONB, nullable=False, default=dict) - default_values: Mapped[dict] = mapped_column(JSONB, nullable=False, default=dict) - validation_rules: Mapped[dict] = mapped_column(JSONB, nullable=False, default=dict) - tags: Mapped[list] = mapped_column(JSONB, nullable=False, default=list) + parameters_schema: Mapped[dict] = mapped_column(JSONB, nullable=False, default=dict, server_default=text("'{}'::jsonb")) + default_values: Mapped[dict] = mapped_column(JSONB, nullable=False, default=dict, server_default=text("'{}'::jsonb")) + validation_rules: Mapped[dict] = mapped_column(JSONB, nullable=False, default=dict, server_default=text("'{}'::jsonb")) + tags: Mapped[list] = mapped_column(JSONB, nullable=False, default=list, server_default=text("'[]'::jsonb")) complexity: Mapped[str] = mapped_column( SAEnum("beginner", "intermediate", "advanced", name="script_complexity"), nullable=False, default="beginner" ) estimated_runtime: Mapped[Optional[str]] = mapped_column(String(50), nullable=True) requires_elevation: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False, server_default=text("false")) - requires_modules: Mapped[list] = mapped_column(JSONB, nullable=False, default=list) - version: Mapped[int] = mapped_column(Integer, nullable=False, default=1) - is_verified: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False) - is_active: Mapped[bool] = mapped_column(Boolean, nullable=False, default=True) + requires_modules: Mapped[list] = mapped_column(JSONB, nullable=False, default=list, server_default=text("'[]'::jsonb")) + version: Mapped[int] = mapped_column(Integer, nullable=False, default=1, server_default=text("1")) + is_verified: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False, server_default=text("false")) + is_active: Mapped[bool] = mapped_column(Boolean, nullable=False, default=True, server_default=text("true")) is_gallery_featured: Mapped[bool] = mapped_column(Boolean, nullable=False, default=False, server_default=text("false"), index=True) gallery_sort_order: Mapped[int] = mapped_column(Integer, nullable=False, default=0, server_default=text("0")) - usage_count: Mapped[int] = mapped_column(Integer, nullable=False, default=0) + usage_count: Mapped[int] = mapped_column(Integer, nullable=False, default=0, server_default=text("0")) created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=lambda: datetime.now(timezone.utc) ) diff --git a/backend/tests/test_scripts.py b/backend/tests/test_scripts.py index 544ad74e..eb31c79f 100644 --- a/backend/tests/test_scripts.py +++ b/backend/tests/test_scripts.py @@ -331,6 +331,6 @@ async def test_create_team_template_requires_team_admin(client, auth_headers, se "script_body": "Write-Host 'hello'", "parameters_schema": {}, }, - headers=auth_headers, # regular engineer + headers=auth_headers, # engineers can create templates ) - assert response.status_code == 403 + assert response.status_code == 201 diff --git a/backend/tests/test_session_branches_api.py b/backend/tests/test_session_branches_api.py index 4bc0c1d8..104a1968 100644 --- a/backend/tests/test_session_branches_api.py +++ b/backend/tests/test_session_branches_api.py @@ -99,7 +99,7 @@ async def test_switch_branch(client: AsyncClient, test_user, auth_headers, test_ f"/api/v1/ai-sessions/{session.id}/branches/fork", headers=auth_headers, json={ - "fork_reason": "test", + "fork_reason": "testing fork", "options": [ {"label": "A", "description": "a"}, {"label": "B", "description": "b"},