小编Ole*_*sov的帖子

为在Karma中执行完整页面重新加载的指令编写测试

我想对一个指令进行单元测试,该指令将用户重定向到支持的社交login-url.

由于Karma不支持完整页面重新加载,我想改变location.href JavaScript对象的行为,将它接收的参数输出到具有特定ID的HTML元素,我很难做到这一点.

指示:

__app.directive('socialAuth', function(utils, authService, $location){
    return{
            restrict: 'A',
            scope: false,
            link: function(scope, elem, attrs){
                elem.bind('click', function(){
                            utils.cleanSocialSearch();
                            if(attrs.checkbox == 'personal'){
                              scope.$apply(function(){
                                scope.model.personalShare[attrs.network] = true;  
                                $location.search('personalShare', '1');
                              });
                            }
                            else if(attrs.checkbox == 'group'){
                              scope.$apply(function(){
                                var __index = attrs.checkbox + '_' + attrs.network;
                                scope.model.personalShare[__index] = true;  
                                $location.search('groupShare', '1');
                              });
                            }
                              var callback = encodeURIComponent(window.location.href);
                              var loginUrl = utils.getBaseUrl() + '/social/login/' + attrs.network + '?success_url=' + callback;
                              location.href = loginUrl;  

                        });
            }
    }

});
Run Code Online (Sandbox Code Playgroud)

尝试模拟location.href对象进行测试(是的,我知道它不是函数):

var location = {//an attempt …
Run Code Online (Sandbox Code Playgroud)

javascript mocking angularjs karma-runner

10
推荐指数
1
解决办法
9820
查看次数

测试imagesLoaded()使用jasmine进行回调

我有以下代码:

    $.ajax({
      url: API + "item/" + item_id.replace('-',':'),
      beforeSend: function(xhr){xhr.setRequestHeader('x-customer', customer);},
      format: "json",
      success: function( data ){
          var template_name =  data.source + settings.overlay_style;
          $('#modal .modal-content').html(Handlebars.templates[template_name](data));

        /* Handle missing avatars */
        $('#modal-avatar-image').imagesLoaded()
            .progress( function( instance, image ) {
                if (!image.isLoaded) {
                    image.img.src = "/images/404_avatar.svg";
                    image.img.alt = "The avatar for this user could not be found. Showing placeholder";
                    image.img.title = "The avatar for this user could not be found. Showing plac eholder";
                }
            });

        /* Handle missing main content */
        $('.modal-img').imagesLoaded()
            .progress( …
Run Code Online (Sandbox Code Playgroud)

jquery jasmine imagesloaded

10
推荐指数
1
解决办法
370
查看次数

如何使用docker-compose将数据库导入Docker容器

我正在使用我的Mac上的docker-compose正式使用WordPress Docker镜像(使用boot2docker).我需要进行一次性数据导入.我不知道该怎么做.如何将数据导入数据库容器?

wordpress:
  image: wordpress
  links:
    - db:mysql
  ports:
    - 8080:80
  volumes:
    - .:/var/www/html/wp-content/themes/my-theme-name

db:
  image: mariadb
  environment:
    MYSQL_ROOT_PASSWORD: example
Run Code Online (Sandbox Code Playgroud)

docker boot2docker docker-compose

10
推荐指数
2
解决办法
1万
查看次数

在最近的Facebook维护之后尝试发布到群组时,oAuth异常#200

"message":"OAuthException: (#200) Insufficient permission to post to target on behalf of the viewer","trace":"[]","code":0

在最近的Facebook维护操作之后,此消息开始随机出现.

我的用户在尝试共享其组时会产生此错误.

有什么想过如何解决这个问题?

facebook facebook-php-sdk

8
推荐指数
1
解决办法
5771
查看次数

在使用基于相同服务的后端的多个域之间启用 SSO

这里最明显的解决方案将允许基于会话的身份验证,这在 Django REST Framework 中被认为是一种不好的做法。

所以我想出了一个简单的方法来在 cookie 中播放令牌,然后尝试从 cookie 中读取它,如果它在头中不存在(比如在使用我们 API 的 2 个不同域之间移动的情况)。

该请求在“网络”下的“Cookies”部分返回以下数据在此处输入图片说明

但是,在“应用程序”下,我根本看不到 cookie 在此处输入图片说明

这是我写的代码

middleware.py

class WhiteLabelSessionMiddleware(MiddlewareMixin):
    def process_request(self, request):
        request_token = request.META.get('HTTP_AUTHORIZATION')
        cookie_token = request.COOKIES.get(settings.WHITE_LABEL_COOKIE_NAME)

        if cookie_token:
            print(cookie_token)

        if cookie_token and not request_token:
            # must be assigned by reference
            request.request.META['HTTP_AUTHORIZATION'] = cookie_token

    def process_response(self, request, response):
        request_token = request.META.get('HTTP_AUTHORIZATION')
        cookie_token = request.COOKIES.get(settings.WHITE_LABEL_COOKIE_NAME)

        if not cookie_token and request_token:
            response.set_cookie(settings.WHITE_LABEL_COOKIE_NAME,
                                request_token,
                                max_age=settings.SESSION_COOKIE_AGE,
                                expires=settings.SESSION_COOKIE_AGE,
                                domain=settings.SESSION_COOKIE_DOMAIN,
                                secure=settings.SESSION_COOKIE_SECURE)

        return response
Run Code Online (Sandbox Code Playgroud)

settings.py

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware', …
Run Code Online (Sandbox Code Playgroud)

python django cookies cross-domain single-sign-on

8
推荐指数
0
解决办法
294
查看次数

即使定义了ng-model,ng-options也会显示空白选定选项

我已经创建了一个强调问题的plunkr,也许是因为ng-repeat的来源是一个函数,我不确定,但到目前为止我已经尝试了一切以解决这个问题,并且无法管理.

plunkr:http://plnkr.co/edit/qQFsRM?p = preview

HTML

<html>

  <head>
    <script data-require="angular.js@1.2.0-rc1" data-semver="1.2.0-rc1" src="http://code.angularjs.org/1.2.0rc1/angular.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body ng-app='myApp' ng-controller='mainCtrl'>
  <ng-include src="'menu.html'">
  </ng-include>

</html>
Run Code Online (Sandbox Code Playgroud)

脚本

var app = angular.module('myApp', []);

app.controller('mainCtrl', function($scope, $httpBackend){
  $scope.model = {};
  $scope.model.myJobs = {};
  $scope.refreshJobs = function(){

  }
});

app.controller('menuCtrl', function($scope){

$scope.model.locations = function(){
  var loc = [];
  loc[1] = 'Dublin';
  loc[2] = 'Stockholm';
  loc[3] = 'New Jersy';
  $scope.model.selectedLocationDef = loc.indexOf('Dublin');
  return loc;
}
  $scope.model.selectedLocation =  $scope.model.selectedLocationDef;

$scope.$watch('model.selectedLocation', function(location){
  $scope.refreshJobs(location);
});

});
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-ng-repeat

7
推荐指数
2
解决办法
1万
查看次数

AngularJS:在不使用容器的情况下将单个输入元素转换为指令模板

我想为我的输入字段创建一个包装器,其中包含一个输入帮助工具提示.

我使用角度1.0.7,如果它是重要的.

我正在使用transclude:true,以及isolate范围,以便同时允许多个不同字段的错误,并仍然保持对外部$ scope的ng-model引用.

问题:

当我在input元素上使用this指令时,input元素不会克隆('Transclude')到指令模板中.

因此,我在DOM中获得了一个空的div元素,并带有ng-transclude属性.

plunk:http://plnkr.co/edit/vFB9ih6x2NBmwhAes3Qh?p = preview

码:

<input data-my-validate-input data-value-required="true" type="password" class="loginItem" placeholder="Password" name="password" data-ng-model="formData.password" data-display-name="Password">
Run Code Online (Sandbox Code Playgroud)

但是当我将这个输入元素包装在span或div中时,子输入元素被超越了,但是我没有在指令处获得对正确的外部ng-model(ctrl)的引用.

<span data-my-validate-input data-value-required="true" data-display-name="Password">
      <input type="password" class="loginItem" placeholder="Password" name="password" data-ng-model="formData.password" >    
</span>
Run Code Online (Sandbox Code Playgroud)

完整代码(链接函数内部的逻辑与问题无关,但我更喜欢发布我的完整代码)

directive('myValidateInput', function() {
    return {
        require: 'ngModel',
          restrict: 'A',
          transclude: true,
          scope: {
            displayName: '@',
            valueRequired: '@',
            maxLength: '@',
            minLength: '@',
            minLetters: '@',
            minNumbers: '@'
          },
          template: '<div class="validationContainer">\
                      <div ng-transclude></div>\
                      <div class="input-help">\
                        <h4>{{fieldErrorDisplay}}</h4>\
                        <ul>\
                          <li data-ng-repeat="rule in requirementSpec" ng-class="rule.class">\
                              {{rule.msg}}\
                          </li>\ …
Run Code Online (Sandbox Code Playgroud)

angularjs transclusion angularjs-directive angularjs-scope

7
推荐指数
1
解决办法
1619
查看次数

无法配置grunt bower-install

我是Yeoman工作流程的新手(今天开始使用Yeoman).我正在尝试安装grunt bower-install,以便自动化资产管理流程.

问题是,尽管事实上我遵循了文档中的指令到最后一个,但在尝试运行时grunt bower-install我得到了错误.

尝试从主DIR运行此命令时,错误如下:

oleg@ob:~$ !!
Running "bower-install:app" (bower-install) task
Verifying property bower-install.app.src exists in config...ERROR
>> Unable to process task.
Warning: Required config property "bower-install.app.src" missing. Use --force to continue.

Aborted due to warnings.


Execution Time (2014-01-20 10:17:47 UTC)
loading tasks      3ms  ???????????????????????????????????????????? 25%
bower-install:app  8ms  ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 67%
Total 12ms
Run Code Online (Sandbox Code Playgroud)

在进入app目录并再次运行命令后,我得到一个不同的错误:

oleg@ob:~/app$ grunt bower-install
Loading "gruntfile.js" tasks...ERROR
>> Error: Unable to read "package.json" file (Error code: ENOENT).
Warning: Task "bower-install" not found. Use --force …
Run Code Online (Sandbox Code Playgroud)

gruntjs yeoman bower

7
推荐指数
1
解决办法
6558
查看次数

Tor不能与urllib2一起使用

我正在尝试使用tor通过privoxy作为代理使用urllib2进行匿名访问.

系统信息:Ubuntu 14.04,最近从13.10升级到dist-upgrade.

这是我用于测试目的的一段代码:

import urllib2


def req(url):
    proxy_support = urllib2.ProxyHandler({"http": "127.0.0.1:8118"})
    opener = urllib2.build_opener(proxy_support)
    opener.addheaders = [('User-agent', 'Mozilla/5.0')]
    return opener.open(url).read()

print req('https://check.torproject.org')
Run Code Online (Sandbox Code Playgroud)

以上输出带有sorry, but you don't use Tor消息的页面.

至于我的配置:

的/ etc /符/的torrc

ControlPort 9051
## If you enable the controlport, be sure to enable one of these
## authentication methods, to prevent attackers from accessing it.
#HashedControlPassword 16:872860B76453A77D60CA2BB8C1A7042072093276A3D701AD684053EC4C
HashedControlPassword 16:B3B0BA631D41D6FE601488FC7A9A2E80AB7815580C1C78F2865F30F63B
Run Code Online (Sandbox Code Playgroud)

的/ etc/Privoxy的/配置

forward-socks5 / localhost:9050 .
Run Code Online (Sandbox Code Playgroud)

$ sudo netstat -ntap | grep tor 输出:

tcp        0      0 …
Run Code Online (Sandbox Code Playgroud)

python urllib2 tor

7
推荐指数
1
解决办法
672
查看次数

在sinon中断言递归调用的数量

我有以下队列使用者类,它通过promises递归运行:

"use strict";

var queue = require("./queue"),
    helpers = require("./helpers"),
    vendors = require("../config/vendors"),
    queueConf = require("../config/queue");

function Consumer() {
    this.queue =  new queue.TaskQueue();
    this.currentItem = null;
    this.port = null;
    this.payload = null;
}

Consumer.prototype.payloadSuccessCb = function (data) {
    this.payload = data;
    this.run();
};

Consumer.prototype.failureCb = function (data) {
    console.error(data);
    throw new Error(data);
    //TODO: Continue queue processing despite the error
};

Consumer.prototype.processItem = function (data) {
    this.currentItem = data;
    process.send("Proccess " +  process.pid + " is processing item " + this.currentItem); …
Run Code Online (Sandbox Code Playgroud)

javascript mocha.js node.js sinon

7
推荐指数
1
解决办法
668
查看次数