Skip to content

Commit e7c5df7

Browse files
committed
[DOP-23620] Fix unit tests
1 parent a6a29fb commit e7c5df7

File tree

8 files changed

+25
-21
lines changed

8 files changed

+25
-21
lines changed

syncmaster/db/models/run.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@ class Run(Base, TimestampMixin):
4141
index=True,
4242
)
4343
started_at: Mapped[datetime | None] = mapped_column(
44-
DateTime,
44+
DateTime(timezone=True),
4545
nullable=True,
4646
default=None,
4747
)
4848
ended_at: Mapped[datetime | None] = mapped_column(
49-
DateTime,
49+
DateTime(timezone=True),
5050
nullable=True,
5151
default=None,
5252
)

syncmaster/schemas/v1/connections/connection_base.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# SPDX-FileCopyrightText: 2023-2024 MTS PJSC
22
# SPDX-License-Identifier: Apache-2.0
3-
from pydantic import BaseModel, Field
3+
from pydantic import BaseModel, ConfigDict, Field
44

55
from syncmaster.schemas.v1.auth import ReadBasicAuthSchema, ReadS3AuthSchema
66
from syncmaster.schemas.v1.auth.samba import ReadSambaAuthSchema
@@ -14,13 +14,17 @@ class CreateConnectionBaseSchema(BaseModel):
1414
name: NameConstr = Field(..., description="Connection name") # noqa: F722
1515
description: str = Field(..., description="Additional description")
1616

17+
model_config = ConfigDict(populate_by_name=True)
18+
1719

1820
class ReadConnectionBaseSchema(BaseModel):
1921
id: int
2022
group_id: int
2123
name: str
2224
description: str
2325

26+
model_config = ConfigDict(populate_by_name=True)
27+
2428

2529
class ReadAuthDataSchema(BaseModel):
2630
auth_data: ReadConnectionAuthDataSchema = Field(discriminator="type", default=...)

syncmaster/schemas/v1/transfers/__init__.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from typing import Annotated
66

7-
from pydantic import BaseModel, Field, model_validator
7+
from pydantic import BaseModel, ConfigDict, Field, model_validator
88

99
from syncmaster.schemas.v1.connection_types import FILE_CONNECTION_TYPES
1010
from syncmaster.schemas.v1.connections.connection import ReadConnectionSchema
@@ -159,23 +159,20 @@ class ReadTransferSchema(BaseModel):
159159
schedule: str
160160
queue_id: int
161161
source_params: ReadTransferSchemaSource = Field(
162-
...,
163162
discriminator="type",
164163
)
165164
target_params: ReadTransferSchemaTarget = Field(
166-
...,
167165
discriminator="type",
168166
)
169167
strategy_params: FullStrategy | IncrementalStrategy = Field(
170-
...,
171168
discriminator="type",
172169
)
173-
transformations: list[Annotated[TransformationSchema, Field(..., discriminator="type")]] = Field(
170+
transformations: list[Annotated[TransformationSchema, Field(discriminator="type")]] = Field(
174171
default_factory=list,
175172
)
176-
resources: Resources = Field(
177-
...,
178-
)
173+
resources: Resources
174+
175+
model_config = ConfigDict(from_attributes=True)
179176

180177

181178
class CreateTransferSchema(BaseModel):

syncmaster/schemas/v1/transfers/file/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def _validate_file_name_template(cls, value: str) -> str: # noqa: WPS238
9090

9191
missing_keys = sorted(required_keys - placeholders)
9292
if missing_keys:
93-
missing_keys_str = " ".join(missing_keys)
93+
missing_keys_str = ", ".join(missing_keys)
9494
raise ValueError(f"Missing required placeholders: {missing_keys_str}")
9595

9696
if "{run_id}" not in value and "{run_created_at}" not in value:

syncmaster/schemas/v1/transfers/run.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from datetime import datetime
66

7-
from pydantic import BaseModel
7+
from pydantic import BaseModel, ConfigDict
88

99
from syncmaster.db.models import RunType, Status
1010
from syncmaster.schemas.v1.page import PageSchema
@@ -19,6 +19,8 @@ class ShortRunSchema(BaseModel):
1919
log_url: str | None = None
2020
type: RunType
2121

22+
model_config = ConfigDict(from_attributes=True)
23+
2224

2325
class RunPageSchema(PageSchema):
2426
items: list[ShortRunSchema]

syncmaster/schemas/v1/users.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ class ReadUserSchema(BaseModel):
2424
username: str
2525
is_superuser: bool
2626

27+
model_config = ConfigDict(from_attributes=True)
28+
2729

2830
class FullUserSchema(ReadGroupMember):
2931
is_active: bool

syncmaster/server/api/v1/runs.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ async def read_run(
7676
if resource_role == Permission.NONE:
7777
raise TransferNotFoundError
7878

79-
return ReadRunSchema.model_validate(run, from_attributes=True)
79+
return ReadRunSchema.model_validate(run)
8080

8181

8282
@router.post("/runs")
@@ -134,7 +134,7 @@ async def start_run( # noqa: WPS217
134134
status=Status.FAILED,
135135
)
136136
raise CannotConnectToTaskQueueError(run_id=run.id) from e
137-
return ReadRunSchema.model_validate(run, from_attributes=True)
137+
return ReadRunSchema.model_validate(run)
138138

139139

140140
@router.post("/runs/{run_id}/stop")
@@ -160,4 +160,4 @@ async def stop_run(
160160
async with unit_of_work:
161161
run = await unit_of_work.run.stop(run_id=run_id)
162162
# TODO: add immediate stop transfer after stop Run
163-
return ReadRunSchema.model_validate(run, from_attributes=True)
163+
return ReadRunSchema.model_validate(run)

tests/utils.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import asyncio
22
import logging
3-
from datetime import datetime
3+
from datetime import datetime, timezone
44
from pathlib import Path
55
from typing import Any
66

@@ -112,7 +112,7 @@ async def get_run_on_end(
112112
token: str,
113113
timeout: int = 120,
114114
) -> dict[str, Any]:
115-
end_time = datetime.now().timestamp() + timeout
115+
end_time = datetime.now(tz=timezone.utc).timestamp() + timeout
116116
while True:
117117
logger.info("Waiting for end of run")
118118
result = await client.get(
@@ -126,7 +126,7 @@ async def get_run_on_end(
126126
if data["status"] in [Status.FINISHED, Status.FAILED]:
127127
return data
128128

129-
if datetime.now().timestamp() > end_time:
129+
if datetime.now(tz=timezone.utc).timestamp() > end_time:
130130
raise TimeoutError()
131131

132132
await asyncio.sleep(1)
@@ -163,8 +163,7 @@ async def run_transfer_and_verify(
163163
headers={"Authorization": f"Bearer {user.token}"},
164164
json={"transfer_id": transfer_id},
165165
)
166-
assert result.status_code == 200
167-
166+
assert result.status_code == 200, result.json()
168167
run_data = await get_run_on_end(
169168
client=client,
170169
run_id=result.json()["id"],

0 commit comments

Comments
 (0)