hunk.code_window:       },
         run: {
           command: [
             'docker stop portainer',
             'docker rm portainer',
             'docker run --privileged -d -p 9000:9000 -v /tmp/portainer:/data -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer'
           ].join(';')
         },
         runSwarm: {
           command: [
  
hunk.labels: keep keep keep keep keep replace keep keep keep keep
hunk.after_edit:           'docker run --privileged -d -p 9000:9000 -v /tmp/portainer:/data -v /var/run/docker.sock:/var/run/docker.sock --name portainer portainer --no-analytics'
  
hunk.file_path: gruntfile.js
hunk.type: replace
file: describe('startContainerController', function () {
      var scope, $location, createController, mockContainer, $httpBackend;
  
      beforeEach(angular.mock.module('portainer'));
  
      beforeEach(inject(function ($rootScope, $controller, _$location_) {
          $location = _$location_;
          scope = $rootScope.$new();
  
          createController = function () {
              return $controller('StartContainerController', {
                  '$scope': scope
              });
          };
  
          angular.mock.inject(function (_Container_, _$httpBackend_) {
              mockContainer = _Container_;
              $httpBackend = _$httpBackend_;
          });
      }));
      function expectGetContainers() {
          $httpBackend.expectGET('dockerapi/containers/json?all=1').respond([{
              'Command': './portainer -e /docker.sock',
              'Created': 1421817232,
              'Id': 'b17882378cee8ec0136f482681b764cca430befd52a9bfd1bde031f49b8bba9f',
              'Image': 'portainer:latest',
              'Names': ['/portainer'],
              'Ports': [{
                  'IP': '0.0.0.0',
                  'PrivatePort': 9000,
                  'PublicPort': 9000,
                  'Type': 'tcp'
              }],
              'Status': 'Up 2 minutes'
          }]);
      }
  
      describe('Create and start a container with port bindings', function () {
          it('should issue a correct create request to the Docker remote API', function () {
              var controller = createController();
              var id = '6abd8bfba81cf8a05a76a4bdefcb36c4b66cd02265f4bfcd0e236468696ebc6c';
              var expectedBody = {
                  'name': 'container-name',
                  'ExposedPorts': {
                      '9000/tcp': {}
                  },
                  'HostConfig': {
                      'PortBindings': {
                          '9000/tcp': [{
                              'HostPort': '9999',
                              'HostIp': '10.20.10.15'
                          }]
                      }
                  }
              };
  
              expectGetContainers();
  
              $httpBackend.expectPOST('dockerapi/containers/create?name=container-name', expectedBody).respond({
                  'Id': id,
                  'Warnings': null
              });
              $httpBackend.expectPOST('dockerapi/containers/' + id + '/start').respond({
                  'id': id,
                  'Warnings': null
              });
  
              scope.config.name = 'container-name';
              scope.config.HostConfig.PortBindings = [{
                  ip: '10.20.10.15',
                  extPort: '9999',
                  intPort: '9000'
              }];
  
              scope.create();
              $httpBackend.flush();
          });
      });
  
      describe('Create and start a container with environment variables', function () {
          it('should issue a correct create request to the Docker remote API', function () {
              var controller = createController();
              var id = '6abd8bfba81cf8a05a76a4bdefcb36c4b66cd02265f4bfcd0e236468696ebc6c';
              var expectedBody = {
                  'name': 'container-name',
                  'Env': ['SHELL=/bin/bash', 'TERM=xterm-256color']
              };
  
              expectGetContainers();
  
              $httpBackend.expectPOST('dockerapi/containers/create?name=container-name', expectedBody).respond({
                  'Id': id,
                  'Warnings': null
              });
              $httpBackend.expectPOST('dockerapi/containers/' + id + '/start').respond({
                  'id': id,
                  'Warnings': null
              });
  
              scope.config.name = 'container-name';
              scope.config.Env = [{
                  name: 'SHELL',
                  value: '/bin/bash'
              }, {
                  name: 'TERM',
                  value: 'xterm-256color'
              }];
  
              scope.create();
              $httpBackend.flush();
          });
      });
  
      describe('Create and start a container with labels', function () {
          it('should issue a correct create request to the Docker remote API', function () {
              var controller = createController();
              var id = '6abd8bfba81cf8a05a76a4bdefcb36c4b66cd02265f4bfcd0e236468696ebc6c';
              var expectedBody = {
                  'name': 'container-name',
                  'Labels': {
                      "org.foo.bar": "Baz",
                      "com.biz.baz": "Boo"
                  }
              };
  
              expectGetContainers();
  
              $httpBackend.expectPOST('dockerapi/containers/create?name=container-name', expectedBody).respond({
                  'Id': id,
                  'Warnings': null
              });
              $httpBackend.expectPOST('dockerapi/containers/' + id + '/start').respond({
                  'id': id,
                  'Warnings': null
              });
  
              scope.config.name = 'container-name';
              scope.config.Labels = [{
                  key: 'org.foo.bar',
                  value: 'Baz'
              }, {
                  key: 'com.biz.baz',
                  value: 'Boo'
              }];
  
              scope.create();
              $httpBackend.flush();
          });
      });
  
      describe('Create and start a container with volumesFrom', function () {
          it('should issue a correct create request to the Docker remote API', function () {
              var controller = createController();
              var id = '6abd8bfba81cf8a05a76a4bdefcb36c4b66cd02265f4bfcd0e236468696ebc6c';
              var expectedBody = {
                  HostConfig: {
                      'VolumesFrom': ['parent', 'other:ro']
                  },
                  'name': 'container-name'
              };
  
              expectGetContainers();
  
              $httpBackend.expectPOST('dockerapi/containers/create?name=container-name', expectedBody).respond({
                  'Id': id,
                  'Warnings': null
              });
              $httpBackend.expectPOST('dockerapi/containers/' + id + '/start').respond({
                  'id': id,
                  'Warnings': null
              });
  
              scope.config.name = 'container-name';
              scope.config.HostConfig.VolumesFrom = [{name: 'parent'}, {name: 'other:ro'}];
  
              scope.create();
              $httpBackend.flush();
          });
      });
  
      describe('Create and start a container with multiple options', function () {
          it('should issue a correct create request to the Docker remote API', function () {
              var controller = createController();
              var id = '6abd8bfba81cf8a05a76a4bdefcb36c4b66cd02265f4bfcd0e236468696ebc6c';
              var expectedBody = {
                  Volumes: ['/var/www'],
                  SecurityOpts: ['label:type:svirt_apache'],
                  HostConfig: {
                      Binds: ['/app:/app'],
                      Links: ['web:db'],
                      Dns: ['8.8.8.8'],
                      DnsSearch: ['example.com'],
                      CapAdd: ['cap_sys_admin'],
                      CapDrop: ['cap_foo_bar'],
                      Devices: [{
                          'PathOnHost': '/dev/deviceName',
                          'PathInContainer': '/dev/deviceName',
                          'CgroupPermissions': 'mrw'
                      }],
                      LxcConf: {'lxc.utsname': 'docker'},
                      ExtraHosts: ['hostname:127.0.0.1'],
                      RestartPolicy: {name: 'always', MaximumRetryCount: 5}
                  },
                  name: 'container-name'
              };
  
              expectGetContainers();
  
              $httpBackend.expectPOST('dockerapi/containers/create?name=container-name', expectedBody).respond({
                  'Id': id,
                  'Warnings': null
              });
              $httpBackend.expectPOST('dockerapi/containers/' + id + '/start').respond({
                  'id': id,
                  'Warnings': null
              });
  
              scope.config.name = 'container-name';
              scope.config.Volumes = [{name: '/var/www'}];
              scope.config.SecurityOpts = [{name: 'label:type:svirt_apache'}];
              scope.config.NetworkDisabled = true;
              scope.config.Tty = true;
              scope.config.OpenStdin = true;
              scope.config.StdinOnce = true;
  
              scope.config.HostConfig.Binds = [{name: '/app:/app'}];
              scope.config.HostConfig.Links = [{name: 'web:db'}];
              scope.config.HostConfig.Dns = [{name: '8.8.8.8'}];
              scope.config.HostConfig.DnsSearch = [{name: 'example.com'}];
              scope.config.HostConfig.CapAdd = [{name: 'cap_sys_admin'}];
              scope.config.HostConfig.CapDrop = [{name: 'cap_foo_bar'}];
              scope.config.HostConfig.PublishAllPorts = true;
              scope.config.HostConfig.Privileged = true;
              scope.config.HostConfig.RestartPolicy = {name: 'always', MaximumRetryCount: 5};
              scope.config.HostConfig.Devices = [{
                  'PathOnHost': '/dev/deviceName',
                  'PathInContainer': '/dev/deviceName',
                  'CgroupPermissions': 'mrw'
              }];
              scope.config.HostConfig.LxcConf = [{name: 'lxc.utsname', value: 'docker'}];
              scope.config.HostConfig.ExtraHosts = [{host: 'hostname', ip: '127.0.0.1'}];
  
              scope.create();
              $httpBackend.flush();
          });
      });
  });