yiisoft/security

Обсуждаем разработку фреймворка: дизайн компонентов, API, пакеты
Ответить
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

yiisoft/security

Сообщение samdark »

Выделил вчера пакет https://github.com/yiisoft/security, который включил в себя то, что раньше было в классе Security. Разбил на несколько классов, чуть причесал API.

Как вам?

Если есть время, можете помочь довести тесты до 100% или покритиковав публичный API.
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: yiisoft/security

Сообщение anton_z »

А что так много final классов? Как мокать? Гору интерфейсов будете выделять?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: yiisoft/security

Сообщение samdark »

А зачем вам их мокать?
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: yiisoft/security

Сообщение anton_z »

Для тестов, если в моих классах имеются зависимости от классов пакета security
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: yiisoft/security

Сообщение samdark »

Планируется заменять пакет security?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: yiisoft/security

Сообщение ElisDN »

anton_z писал(а): 2019.07.22, 13:06 А что так много final классов?
Там final только для статических хелперов.
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: yiisoft/security

Сообщение anton_z »

ElisDN писал(а): 2019.07.23, 21:04 Там final только для статических хелперов.
https://github.com/yiisoft/security/blo ... /Crypt.php
https://github.com/yiisoft/security/blo ... rc/Mac.php

Не статические и final
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: yiisoft/security

Сообщение samdark »

Да, там явно запрещается наследование чтобы не было своих самых лучших алгоритмов шифрования и вот этого всего.

Вот только я не понимаю профита от моканья этого в тестах. В чём профит? Что мешает оттестировать без мока?
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: yiisoft/security

Сообщение anton_z »

Юниты должны быть изолированы от всего что инжектится вроде как) Алгоритмы шифрования не все супер-быстрые, есть и медленные. В библиотеках final я бы вообще не делал, мало ли кому что расширить/изменить понадобится.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: yiisoft/security

Сообщение samdark »

Юниты должны быть изолированы от всего что инжектится вроде как)
"Вроде как"? Вы сами пишете что юниты должны быть изолированы, а не классы. Что для теста юнит определяет тот, кто этот тест пишет.

Например, определение юнита из https://www.manning.com/books/the-art-o ... nd-edition:
A unit test is an automated piece of code that invokes the unit of work being tested, and then checks some assumptions about a single end result of that unit. A unit test is almost always written using a unit testing framework. It can be written easily and runs quickly. It’s trustworthy, readable, and maintainable. It’s consistent in its results as long as production code hasn’t changed.

...

A unit of work is the sum of actions that take place between the invocation of a public method in the system and a single noticeable end result by a test of that system.
Изолировать всё подряд — это слепое применение паттерна. Стоит понимать, какая именно проблема этой изоляцией решается.

Обычно либо это скорость работы теста, либо нестабильность (как следствие зависимости от внешнего сервиса с нестабильным протоколом вроде HTTP), либо сложность.

Нестабильность библиотека security не привносит, отрабатывает ожидаемо. Сложности никакой нет, методы очень простые, не сложнее чем стандартная библиотека. Производительность да, нормальная причина, но об этом ниже.
Алгоритмы шифрования не все супер-быстрые, есть и медленные
Cost понизьте, будет быстро.
мало ли кому что расширить/изменить понадобится
Не должно понадобиться. Если понадобилось, тут или наш фейл и мы это поправим в новом релизе или кому-то очень хочется стрельнуть себе в ногу.
Ответить