Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #821 (permalink)  
Старый 04.02.2015, 23:16
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 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.
Ответить с цитированием
  #822 (permalink)  
Старый 06.02.2015, 12:41
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 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...
По русски:
Цитата:
Чего такое классное имя?

Потому что все нормальные уже заняли. Происходил от необоснованной ассоциации идей покрытий, ковёр-покрытие, страна, которая делает хорошие ковры и так далее ...
Ответить с цитированием
  #823 (permalink)  
Старый 07.02.2015, 10:53
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

у всех оракловые дистрибутивы качаются чересчур медленно или только у меня?
начинает шустро, потом скорость резко снижается, дистрибутивы немаленькие , а у них ещё хитрожопо так сделано, что непонятно как ссылку извлечь, чтобы хотя бы её в download master передать

в связи с этим, пока не знаю, когда удастся развернуть тестовую среду, поэтому условно вопрос до понедельника (так как на работе уже всё развёрнуто ):
напомните, пожалуйста, можно ли в оракловой базе данных через табличку dba_users или каким-либо другим способом проверить может ли пользователь коннектиться к этой базе путём сравнения его логина и пароля?
В самой dba_users пароль в поле PASSWORD хранится в зашифрованном виде, есть ли способы сделать корректное сравнение или нет, это я и хочу выяснить.
может быть есть какие-то другие механизмы такой проверки, но они мне неизвестны

в качестве сервера приложений - weblogic, там заведён data source, который создаёт пул соединений под определённым пользователем
задача - проверить могут ли обратившиеся к серверу приложений другие пользователи, которые предоставляют свой логин и пароль, коннектиться к базе данных

сейчас уже есть рабочий вариант, который кажется слишком топорным: сделать попытку соединения, если удастся, то может
думается, что всё должно быть гораздо проще

Последний раз редактировалось bes, 07.02.2015 в 10:58.
Ответить с цитированием
  #824 (permalink)  
Старый 07.02.2015, 12:13
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 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 на сервере приложений, на основе её возможностей и нужно проверить, может ли пользователь ходить в базу или нет
кто-нибудь пытался когда-нибудь решить подобную задачу?
Ответить с цитированием
  #825 (permalink)  
Старый 10.02.2015, 14:25
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Народ, нужна помощь с адской ос виндой xp , на ноут установлена xp но при загрузки не видит Винду на диске, как настроить вмндовый загрузчик ?
Пробовал boot.ini редактировать , но фиг там...
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #826 (permalink)  
Старый 10.02.2015, 17:16
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от cyber Посмотреть сообщение
Народ, нужна помощь с адской ос виндой xp , на ноут установлена xp но при загрузки не видит Винду на диске, как настроить вмндовый загрузчик ?
Пробовал boot.ini редактировать , но фиг там...
в msconfig есть что-нибудь интересное?
Ответить с цитированием
  #827 (permalink)  
Старый 10.02.2015, 20:57
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

Сообщение от melky
в msconfig есть что-нибудь интересное?
Не, на сколько я понял когда я удалил старый системный раздел( так как при установке xp его нужно сначала удалить) то основным оно сделало 2й раздел, и поэтому старый диск Д, теперь диск С.
Нужна утилита которая установит нужный раздел системным так как загрузчик не там ищет винду
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
  #828 (permalink)  
Старый 10.02.2015, 21:31
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 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
Ответить с цитированием
  #829 (permalink)  
Старый 10.02.2015, 21:40
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от bes
mbr
здесь кстати есть линк, где подробно расписано
http://thestarman.narod.ru/asm/mbr/Win2kmbr.htm

но, по-моему, нужно просто забрать данные с диска и дать xp спокойно умереть
Ответить с цитированием
  #830 (permalink)  
Старый 11.02.2015, 13:42
Аватар для cyber
I am Student
Отправить личное сообщение для cyber Посмотреть профиль Найти все сообщения от cyber
 
Регистрация: 17.12.2011
Сообщений: 4,415

bes, спасибо)
Сообщение от bes
но, по-моему, нужно просто забрать данные с диска и дать xp спокойно умереть
Да я бы этот ноут об стену закрыл раз и навсегда, но ксожеленью...
__________________
Цитата:
Если ограничения и условия описываются как "коробка", то хитрость в том что бы найти именно коробку... Не думайте о чем то глобальном - найдите коробку.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смишных картинок тред megaupload Оффтопик 3448 03.07.2023 09:47
React'а тред melky Оффтопик 246 13.11.2016 08:07
Webpack'а тред nerv_ Сборка проекта, утилиты 58 07.05.2016 13:46
Смешных историй тред monolithed Оффтопик 11 04.03.2015 04:20
Смишных видео с намеком тред godofjavascript Оффтопик 4 30.12.2012 23:50