Teste funcional de fluxos de trabalho PHP SSH2 com PHPUnit e Vagrant

Quando $this->markTestIncomplete()simplesmente não vai fazer. Digite o Vagrant.

Para começar com as ferramentas, você precisará se familiarizar com as seguintes:

Vagrant http://vagrantup.com
Você encontrará muitos bons comentários sobre sua instalação e uso. Para ser breve, irei fornecer links para alguns que achei úteis e não fornecerei muitos detalhes sobre isso. Sugiro começar aqui: http://vagrantup.com/v1/docs/getting-started/index.html

PHPUnit: http://www.phpunit.de

Existem quatro métodos de autenticação ssh2 fornecidos com as ferramentas php ssh2:
arquivo baseado em host ssh2 auth – Autenticar usando uma chave de host pública
– ssh2
auth nenhum – Autenticar como “nenhum”
senha
ssh2 auth – Autenticar por SSH usando uma senha simples – ssh2 auth pubkey arquivo – Autenticar usando uma chave pública

Para o meu projeto que eu precisava para validar funcionalmente um fluxo de trabalho de upload de um arquivo para um ssh2 utilizando servidor de autenticação de senha e ssh2 auth pubkey. Para conseguir isso, preciso testar o seguinte:
– Posso me autenticar com o método desejado?
– Posso validar a impressão digital da chave do servidor?
– Posso colocar o conteúdo de um arquivo em um caminho conhecido no servidor remoto?
– Posso validar se o conteúdo e o nome do arquivo de destino são os esperados?

Para conseguir isso, eu precisava de um ambiente com uma chave pública e privada conhecida que fornecesse a impressão digital e as duas chaves conhecidas para estabelecer a conexão sem muito trabalho. Para autenticação baseada em senha, eu preciso de um ambiente que permita autenticação não baseada em senha por SSH. Este recurso é geralmente desabilitado e deve ser alterado no provisionamento do vagrant ou você deve criar uma imagem configurada. Não querendo criar uma caixa personalizada para este caso, utilizo as ferramentas de provisionamento embutidas no vagrant e no sed. A partir daqui, é realmente uma questão de escrever testes e executar o vagrant, dê uma olhada na essência dos exemplos que forneci.

Exemplo Gist https://gist.github.com/3612867

O TL; DR:

  • Escreva seus testes
  • Busque as chaves SSH do Vagrant
  • Crie ou pegue o exemplo VagrantFIle
  • corre vagrant init
  • corre vagrant up
  • execute os testes
  • enxaguar / repetir