Cекюрити ревью пакета

Cекюрити ревью пакета

Кто писал тесты на секюрити ревюь ? есть ли там какие-нибудь подводные камни ?

С написанием самих тестов не было никаких нюансов (по крайней мере у меня). Главное чтобы не падали.
Нюансов куча с самим кодом - чтобы пройти сканеры и ручную проверку.

Например ? я делаю тесты для Force.com Canvas

Ну что там сканеры проверяют? Там куча пунктов.
Например не забывать проверять права доступа перед DML операцией.
Вручную смотрят всякие XSS и прочую лабуду.
Это все в коде
На счет самих тестов особенностей я не видел.
Может под Force.com Canvas что-то и есть - я хз.

Dmitry Shnyrev
На счет самих тестов особенностей я не видел.

Есть особенности. Ещё и меняются периодически.
Самая дебильная это ассерт в тест сетап(речь об этой аннотации) методе. Там наверное что-то курят забористое, требуя такое. Асерт нужен для проверки результатов тестов, а они его требует в методе по созданию тестовых данных.

Я в testSetup периодически прописываю System.assert или System.assertEquals для проверки правильности созданных данных. Ведь изменения могут повлиять и на создание исходных данных. В тестах будет предполагаться, что данные в одном виде, а они в другом. И птм "пол года" будешь искать ошибку в тестируемом коде, а он окажется раньше.

А если Логгер в пакет добавляешь можно с ним пройти секюрити ревью ?

RunAs в тестах обязательно использовать для секюрите ревью?

Мне кажется его всегда надо использовать чтобы запуская тесты быть уверенным что они работают для пользователей с определенными правами, а от балды кто их запустит.

https://security.secure.force.com/security/tools/forcecom/scanner

можно запользовать вот это для начала, кучу репортов гарантированно получишь

Maxim Elets
https://security.secure.force.com/security/tools/forcecom/scanner

можно запользовать вот это для начала, кучу репортов гарантированно получишь


Cпасибо уже использовал! а какие есть другие сканеры ?

Dmitry Shnyrev
Мне кажется его всегда надо использовать чтобы запуская тесты быть уверенным что они работают для пользователей с определенными правами, а от балды кто их запустит.

Дима а чего RunAs то проверяет такого важного ?

Sergey Prishchepa
а чего RunAs то проверяет такого важного ?
Как минимум права доступа к объектам/полям/записям.
Я, например, часто забываю добавлять классы/страницы другим профилям. Мне птм пишут, что нет такой страницы.

Sergey Prishchepa
Дима а чего RunAs то проверяет такого важного ?

Он не проверяет, он запускает тесты под определенных пользователем что дает возможность проверить как они работают из под пользователя с определенными правами. Ну хотя правильно Андрей заметил - права доступа проверяет.

Я конечно не использую в повседневной жизни RunAs для этой цели, но всегда использую чтобы все тесты запускались из-под админа. Это важно потому что при деплое changeSets на стороне клиента были случаи когда деплой запускали не админы, и тесты тупо валились, хотя на сандбоксе из под админа они работали. Голову пришлось ломать долго. Теперь у меня все тесты начинаются с RunAs(<Administrator>). Проблем с тестами уже не наблюдаю много лет.

Andrii Muzychuk
объектам/полям/записям

Вопрос то с подвохом был

Generally, all Apex code runs in system mode, where the permissions and record sharing of the current user are not taken into account. The system method runAs enables you to write test methods that change the user context to an existing user or a new user so that the user’s record sharing is enforced. The runAs method doesn’t enforce user permissions or field-level permissions, only record sharing.

You can use runAs only in test methods. The original system context is started again after all runAs test methods complete.

The runAs method ignores user license limits. You can create new users with runAs even if your organization has no additional user licenses.

У меня уже не один индус на этом вопросе, на собеседовании погорел то!

Sergey Prishchepa
У меня уже не один индус на нем на собеседовании погорел то!

Собеседуй тогда беларусов
Какой-то ты не патриотичный :D

Дима, ты злой! :-)
Тест надо прогонять от имени пользователя, для которого тестиш, а не тупо все из под Админа. Ну, для покрытия - норм. Но это ж зло.

Сергей, о как, только записи. Надо будет попробовать. Интересно.

Developer
Собеседуй тогда беларусов
Какой-то ты не патриотичный :D

Как раз таки наоборот.

Andrii Muzychuk
Дима, ты злой! :-)
Тест надо прогонять от имени пользователя, для которого тестиш, а не тупо все из под Админа. Ну, для покрытия - норм. Но это ж зло.

Да, покрытие наше все!!!
Шоб время выделали на написание нормальных тестов все бы было ок. А так еще попробуй выбей на тупое покрытие в 75% и чтобы еще не валились на стороне клиента по непонятным причинам. Хорошо, когда клиент большой и пакет большой и тестирование налажено. А когда клиент мелкий - хуяк хуяк и в продакшен!

Andrii Muzychuk
Дима, ты злой! :-)
Тест надо прогонять от имени пользователя, для которого тестиш, а не тупо все из под Админа. Ну, для покрытия - норм. Но это ж зло.

Сергей, о как, только записи. Надо будет попробовать. Интересно.

Run as используется:
1) для проверки доступа к записям по шарингам
2) для решения проблем mixed DML
3) для тестирования функционала с конкретной версией пакета или последней

Sergey Prishchepa
Как раз таки наоборот.

Не понял :)

Developer
Sergey Prishchepa
Как раз таки наоборот.

Не понял :)


Они тоже не понимают :)

Sergey Prishchepa
Они тоже не понимают :)


Джуниоров с университета проверяешь?

Developer
Sergey Prishchepa
Они тоже не понимают :)


Джуниоров с университета проверяешь?


Yes ли бы! :)

Developer
Andrii Muzychuk
Дима, ты злой! :-)
Тест надо прогонять от имени пользователя, для которого тестиш, а не тупо все из под Админа. Ну, для покрытия - норм. Но это ж зло.

Сергей, о как, только записи. Надо будет попробовать. Интересно.

Run as используется:
1) для проверки доступа к записям по шарингам
2) для решения проблем mixed DML
3) для тестирования функционала с конкретной версией пакета или последней


еще для проверки FLS. Сами FLS в runAs в тестах не учитываются, но можно проверить через describe методы.

EvAzi
Developer
Andrii Muzychuk
Дима, ты злой! :-)
Тест надо прогонять от имени пользователя, для которого тестиш, а не тупо все из под Админа. Ну, для покрытия - норм. Но это ж зло.

Сергей, о как, только записи. Надо будет попробовать. Интересно.

Run as используется:
1) для проверки доступа к записям по шарингам
2) для решения проблем mixed DML
3) для тестирования функционала с конкретной версией пакета или последней


еще для проверки FLS. Сами FLS в runAs в тестах не учитываются, но можно проверить через describe методы.

нельзя проверить FLS через RunAs, все равно возвращает доступы текущего пользователя

сначала сделал потом проверил. Почемуто describe возвращает результат RunAs пользователя, хотя, как я его понимаю, не должен.

The system method runAs enables you to write test methods that change the user context to an existing user or a new user so that the user’s record sharing is enforced. The runAs method doesn’t enforce user permissions or field-level permissions, only record sharing.

Андрей
нельзя проверить FLS через RunAs, все равно возвращает доступы текущего пользователя

сначала сделал потом проверил. Почемуто describe возвращает результат RunAs пользователя, хотя, как я его понимаю, не должен.

The system method runAs enables you to write test methods that change the user context to an existing user or a new user so that the user’s record sharing is enforced. The runAs method doesn’t enforce user permissions or field-level permissions, only record sharing.


Создал нового пользователя, добавил ему ReadOnly profile, и через sObjectType.IsUpdable проверил вроде, вроде все проверилось.

Interesting information? Help us, post link to social media..