04.02.2015, 23:16
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от Gozar
|
Запрашивай заголовки, если по заголовкам картинка, качаешь, если "фига" то нет.
|
хотелось бы вообще убрать HTTP из теста...
Сообщение от Zend
|
кстати я не вижу смысла в этом тесте так как там нет done().
|
там возвращается Promise.
Сообщение от Zend
|
по моему должно быть так:
- ждёшь завершения асинхронных штук
- в колбэке проверяешь то что тебе нужно
- вызываешь done()
ещё не плохо время контролировать, за которое тест должен выполниться
не хочешь ждать, уверен что там всё ок - отключи его, добавь "x":
xit('......
кстати чем тестируешь? mocha?
|
да, mocha. и с ней chai с плагинами
в общем, порешил дело! отрефакторил функцию, вынесев ввод\вывод (HTTP запрос и запись в файл) в отдельные 2 функции:
/** Скачает изображение по ссылке, сохранит в папку */
exports.downloadImage = function (imageURL) {
var ext = path.extname(imageURL);
var imageName = utils.getImageName(imageURL);
var dest = path.join(imageSavePath, imageName);
/** @type {Object} RESOLVE ARGUMENT */
var info = {imageURL: imageURL, dest: dest, ext: ext, imageName: imageName};
return exports.downloadImage.request(imageURL).
then(function (buffer) {
return exports.downloadImage.write(dest, buffer);
}).
return(info);
};
// Скачает ответ по ссылке и вернёт результат в формате буфера
exports.downloadImage.request = function (url) {
return request({url: url, encoding: null}).get(1);
};
// Запишет буфер buffer в файл dest
exports.downloadImage.write = function (dest, buffer) {
return fs.writeFileAsync(dest, buffer);
};
( request - это var request = Promise.promisify(require('request')); )
ну и в тестах сделал подмену на эти две функции (request и write)
describe('downloadImage', function () {
var original = {};
var url = 'http://i.imgur.com/emZNv0N.jpg';
var buffer = new Buffer('Hello');
var fakeRequest = sinon.stub().withArgs(url).returns(Promise.resolve(buffer));
var fakeWrite = sinon.stub().returns(Promise.resolve());
beforeEach(function () {
original.request = utils.downloadImage.request;
original.write = utils.downloadImage.write;
utils.downloadImage.request = fakeRequest;
});
afterEach(function () {
utils.downloadImage.request = original.request;
utils.downloadImage.write = original.write;
});
it('should download image by url', function () {
return utils.
downloadImage('http://i.imgur.com/emZNv0N.jpg').
should.eventually.
include({imageURL: 'http://i.imgur.com/emZNv0N.jpg', ext: '.jpg'}).
and.property('imageName').match(/^product-image-/);
});
});
как видите, сам тест (внутри 'it') остался таким же, как и поведение самой функции. успех!
тестировать её помощников (request и write) не вижу смысла, т.к. это обёрнутые вызовы библиотечных\встроенных функций
Последний раз редактировалось melky, 04.02.2015 в 23:19.
|
|
06.02.2015, 12:41
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Немного угарнул
есть инструмент для оценки покрытия кода при тестах - istanbul
на его странице есть обьяснение, почему именно такое имя у проекта
Цитата:
|
Why the funky name?
Since all the good ones are taken. Comes from the loose association of ideas across coverage, carpet-area coverage, the country that makes good carpets and so on...
|
По русски:
Цитата:
|
Чего такое классное имя?
Потому что все нормальные уже заняли. Происходил от необоснованной ассоциации идей покрытий, ковёр-покрытие, страна, которая делает хорошие ковры и так далее ...
|
|
|
07.02.2015, 10:53
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
у всех оракловые дистрибутивы качаются чересчур медленно или только у меня?
начинает шустро, потом скорость резко снижается, дистрибутивы немаленькие , а у них ещё хитрожопо так сделано, что непонятно как ссылку извлечь, чтобы хотя бы её в download master передать
в связи с этим, пока не знаю, когда удастся развернуть тестовую среду, поэтому условно вопрос до понедельника (так как на работе уже всё развёрнуто ):
напомните, пожалуйста, можно ли в оракловой базе данных через табличку dba_users или каким-либо другим способом проверить может ли пользователь коннектиться к этой базе путём сравнения его логина и пароля?
В самой dba_users пароль в поле PASSWORD хранится в зашифрованном виде, есть ли способы сделать корректное сравнение или нет, это я и хочу выяснить.
может быть есть какие-то другие механизмы такой проверки, но они мне неизвестны
в качестве сервера приложений - weblogic, там заведён data source, который создаёт пул соединений под определённым пользователем
задача - проверить могут ли обратившиеся к серверу приложений другие пользователи, которые предоставляют свой логин и пароль, коннектиться к базе данных
сейчас уже есть рабочий вариант, который кажется слишком топорным: сделать попытку соединения, если удастся, то может
думается, что всё должно быть гораздо проще
Последний раз редактировалось bes, 07.02.2015 в 10:58.
|
|
07.02.2015, 12:13
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
похоже ответ найден
http://laurentschneider.com/wordpres...spassword.html
Цитата:
|
the password is not longer displayed in dba_users.password in 11g
select username,password
from dba_users
where username='SCOTT';
USERNAME PASSWORD
-------- ------------------------------
SCOTT
select name,password
from sys.user$
where name='SCOTT';
NAME PASSWORD
----- ------------------------------
SCOTT F894844C34402B67
|
хотя не думаю, что разумно предоставлять стороннему приложению доступ лазать в sys.user$, да и в dba_users тоже, вероятно и не согласятся на это
хз как лучше провернуть авторизацию в этом случае, не делая попытку прямого коннекта под пользователем: пользователи уже могут авторизоваться под собой, но ходим не под ними, а под определённой учётной записью с определёнными правами, которая доступна через data source на сервере приложений, на основе её возможностей и нужно проверить, может ли пользователь ходить в базу или нет
кто-нибудь пытался когда-нибудь решить подобную задачу?
|
|
10.02.2015, 14:25
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Народ, нужна помощь с адской ос виндой xp , на ноут установлена xp но при загрузки не видит Винду на диске, как настроить вмндовый загрузчик ?
Пробовал boot.ini редактировать , но фиг там...
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
10.02.2015, 17:16
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от cyber
|
Народ, нужна помощь с адской ос виндой xp , на ноут установлена xp но при загрузки не видит Винду на диске, как настроить вмндовый загрузчик ?
Пробовал boot.ini редактировать , но фиг там...
|
в msconfig есть что-нибудь интересное?
|
|
10.02.2015, 20:57
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
Сообщение от melky
|
в msconfig есть что-нибудь интересное?
|
Не, на сколько я понял когда я удалил старый системный раздел( так как при установке xp его нужно сначала удалить) то основным оно сделало 2й раздел, и поэтому старый диск Д, теперь диск С.
Нужна утилита которая установит нужный раздел системным так как загрузчик не там ищет винду
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
10.02.2015, 21:31
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
Сообщение от cyber
|
Не, на сколько я понял когда я удалил старый системный раздел( так как при установке xp его нужно сначала удалить) то основным оно сделало 2й раздел, и поэтому старый диск Д, теперь диск С.
Нужна утилита которая установит нужный раздел системным так как загрузчик не там ищет винду
|
mbr
Цитата:
|
0000h 446 Код загрузчика
01BEh 64 Таблица разделов
16 Раздел 1
01CEh 16 Раздел 2
01DEh 16 Раздел 3
01EEh 16 Раздел 4
01FEh 2 Сигнатура (55h AAh)
|
открываешь в hex-редакторе жёсткий диск, смотришь первый сектор,
начиная с 01BEh идут записи таблицы разделов, ставишь в нужной записи (например в байте 1BEh, что соответствует первому разделу) значение 80h,
в начале других записей (01CEh, 01DEh, 01EEh), должны быть нули
по 4 байта в конце каждой записи - смещение и количество секторов по lba, смотришь первую запись (если выбрал активным первый раздел), идёшь на адрес, соответствующий первому из этих 4 байтных чиcел (в hxd это ctrl+g, оно же меню Поиск - Перейти ) и смотришь, если там что-нибудь, по идее, именно с этого адреса должен начинаться код
Цитата:
|
Структура описания раздела
Смещение Длина Описание
00h 1 Признак активности раздела
01h 1 Начало раздела — головка
02h 1 Начало раздела — сектор (биты 0—5), цилиндр (биты 6, 7)
03h 1 Начало раздела — цилиндр (старшие биты 8, 9 хранятся в байте номера сектора)
04h 1 Код типа раздела
05h 1 Конец раздела — головка
06h 1 Конец раздела — сектор (биты 0—5), цилиндр (биты 6, 7)
07h 1 Конец раздела — цилиндр (старшие биты 8, 9 хранятся в байте номера сектора)
08h 4 Смещение первого сектора
0Ch 4 Количество секторов раздела
|
если не получается, анализируешь дальше
здесь есть полезные утилиты
http://ntfs.com/
вот ещё один бесплатный hex-редактор
http://mh-nexus.de/en/hxd/
ftp://wa651f3:anonymous@mh-nexus.de/HxDSetupPTB.zip
http://mh-nexus.de/downloads/HxDSetupRU.zip
|
|
10.02.2015, 21:40
|
|
Профессор
|
|
Регистрация: 22.03.2012
Сообщений: 3,744
|
|
здесь кстати есть линк, где подробно расписано
http://thestarman.narod.ru/asm/mbr/Win2kmbr.htm
но, по-моему, нужно просто забрать данные с диска и дать xp спокойно умереть
|
|
11.02.2015, 13:42
|
|
I am Student
|
|
Регистрация: 17.12.2011
Сообщений: 4,415
|
|
bes, спасибо)
Сообщение от bes
|
но, по-моему, нужно просто забрать данные с диска и дать xp спокойно умереть
|
Да я бы этот ноут об стену закрыл раз и навсегда, но ксожеленью...
__________________
Цитата:
|
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
|
|
|
|
|